Update on an issue from a while back... I was having trouble with WSDL-first development where the WSDL imported an XML Schema document. XFire didn't seem to be properly importing the XSD, as it did not recognize the types.
It turns out that this is related to WSDL4J. Apparently, if you import an XSD using a relative path, WSDL4J will look for the file relative to the *working directory* of the app server. I tried putting my XSD in my tomcat/bin directory and it worked! Of course, this is not really the ideal solution. WSDL4J allows you to pass in a BaseURI, but that didn't seem to have any effect. I tried the solution at http://www.nabble.com/Problem-resolving-imported-schemas-tf3238489.html# a9001345, but it didn't change anything. So I'm still stuck. Any ideas (or WSDL4J experts) out there? BTW-- here's a link to where I discovered that WSDL4J was looking in the bin directory: http://mail-archives.apache.org/mod_mbox/ws-axis-dev/200604.mbox/%3C2274 [EMAIL PROTECTED] -Chris -----Original Message----- From: Christopher Moesel [mailto:[EMAIL PROTECTED] Sent: Friday, February 02, 2007 3:52 PM To: [email protected] Subject: RE: [xfire-user] XFireRuntimeException: Couldn't find schema for part: ... Thanks for the suggestion. Unfortunately, I still have the same result. If I look at the logs, it appears that the XSD is being loaded: Resovling. Base: null, URI: calc.wsdl Retrieving document at 'null'. Retrieving schema at 'calc.xsd'. Resovling. Base: null, URI: calc.xsd In addition, if I change the wsdl to import calc_not_real.xsd, it throws a whole different exception, indicating it can't find the file. So... it *is* loading the file-- the mappings just appear to be getting screwed up. Thanks again for the suggestion. I wish it worked. ;) -Chris -----Original Message----- From: Matthew Good [mailto:[EMAIL PROTECTED] Sent: Friday, February 02, 2007 3:25 PM To: [email protected] Subject: Re: [xfire-user] XFireRuntimeException: Couldn't find schema for part: ... in wsdl try: <xsd:schema targetNamespace="http://example.com/calculator/types"> <xsd:include schemaLocation="calc.xsd"/> </xsd:schema> Matthew Good [EMAIL PROTECTED] 720-320-8376 ----- Original Message ---- From: Christopher Moesel <[EMAIL PROTECTED]> To: [email protected] Sent: Friday, February 2, 2007 10:08:12 AM Subject: RE: [xfire-user] XFireRuntimeException: Couldn't find schema for part: ... I am doing WSDL-first development and still having problems with defining my schema in a separate XSD file. If I put it in a separate file, I get an error upon deployment like: org.codehaus.xfire.XFireRuntimeException: Couldn't find schema part: {http://example.com/calculator/types}simpleAddition If I embed the schema in my WSDL then everything appears to work fine. I would really prefer to keep the schema external though. The relevant files are pasted below. Thanks for any help you can give! -Chris ========= CALC.WSDL ========== <?xml version="1.0" ?> <wsdl:definitions name="Calculator" targetNamespace="http://example.com/calculator"; xmlns:tns="http://example.com/calculator"; xmlns:types="http://example.com/calculator/types"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";> <wsdl:types> <xsd:schema> <xsd:import namespace="http://example.com/calculator/types"; schemaLocation="calc.xsd"/> </xsd:schema> </wsdl:types> <wsdl:message name="simpleAdditionRequest"> <wsdl:part name="body" element="types:simpleAddition"/> </wsdl:message> <wsdl:message name="simpleAdditionResponse"> <wsdl:part name="body" element="types:simpleAdditionResponse"/> </wsdl:message> <wsdl:message name="CalculatorFault"> <wsdl:part name="fault" element="types:CalculatorFault"/> </wsdl:message> <wsdl:portType name="CalculatorPortType"> <wsdl:operation name="simpleAddition"> <wsdl:input message="tns:simpleAdditionRequest" /> <wsdl:output message="tns:simpleAdditionResponse" /> <wsdl:fault name="CalculatorFault" message="tns:CalculatorFault"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="CalculatorPortBinding" type="tns:CalculatorPortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"; style="document"/> <wsdl:operation name="simpleAddition"> <soap:operation action=""/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="CalculatorFault"> <soap:fault name="CalculatorFault" use="literal" /> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="Calculator"> <wsdl:port name="CalculatorPort" binding="tns:CalculatorPortBinding"> <soap:address location="http://localhost:8080/calculator/services/Calculator"/> </wsdl:port> </wsdl:service> </wsdl:definitions> ======= CALC.XSD ======== <?xml version="1.0" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; targetNamespace="http://example.com/calculator/types"; xmlns:tns="http://example.com/calculator/types"; version="1.0"> <xs:element name="simpleAddition"> <xs:complexType> <xs:sequence> <xs:element name="int1" type="xs:int"/> <xs:element name="int2" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="simpleAdditionResponse"> <xs:complexType> <xs:sequence> <xs:element name="sum" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="CalculatorFault"> <xs:complexType> <xs:sequence> <xs:element name="errorCode" type="xs:int" /> <xs:element name="message" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> ======= APPLICATIONCONTEXT.XML ========= <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd";> <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" /> <bean name="calculatorWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter"> <property name="serviceBean"> <bean class="com.example.calculator.impl.SimpleCalculatorService" /> </property> <property name="serviceClass" value="com.example.calculator.impl.SimpleCalculatorService" /> <property name="serviceFactory"> <ref bean="xfire.jaxwsServiceFactory" /> </property> <property name="wsdlURL" value="calc.wsdl"/> </bean> <bean name="xfire.jaxwsServiceFactory" class="org.codehaus.xfire.jaxws.JAXWSServiceFactory"> <constructor-arg index="0"> <ref bean="xfire.transportManager" /> </constructor-arg> </bean> </beans> ======== WEB.XML =========== <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"; version="2.4"> <description>Calculator Service</description> <display-name>Calculator Web Service</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</l istener-class> </listener> <servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class> org.codehaus.xfire.spring.XFireSpringServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file- list> </web-app> ======== WSGEN USAGE IN BUILD.XML ========== <wsgen outputDirectory="${gen-src}" wsdl="${wsdl.dir}/calc.wsdl" package="com.example.calculator" externalbindings="${wsdl.dir}/custom-schema.xml" overwrite="true" /> ======== SimpleCalculatorService.java ========== package com.example.calculator.impl; import javax.jws.WebService; import com.example.calculator.CalculatorFault; import com.example.calculator.CalculatorPortType; @WebService(serviceName = "Calculator", targetNamespace = "http://example.com/calculator";, endpointInterface = "com.example.calculator.CalculatorPortType") public class SimpleCalculatorService implements CalculatorPortType { public int simpleAddition(int int1, int int2) throws CalculatorFault { return int1 + int2; } } -----Original Message----- From: Dan Diephouse [mailto:[EMAIL PROTECTED] Sent: Monday, January 08, 2007 9:53 AM To: [email protected] Subject: Re: [xfire-user] XFireRuntimeException: Couldn't find schema for part: ... Any chance you can send along a complete WSDL/schema? I don't see anything wrong with what you have. You can send it along privately if you need to... Cheers, Dan On 1/2/07, Christopher Moesel <[EMAIL PROTECTED]> wrote: > > Hi Dan, > > Thanks for the quick response. I don't believe that I have multiple > schemas with the same namespace. I've included representative samples of my > WSDL and XSD below (perhaps that will help?)... I was just doing some more > looking- would setting the jaxb.search.packages property help? I have not > set it to anything. The error looks like it's happening in reading the WSDL > though, so I suspect the jaxb.search.packages property isn't even relevant > at this point. > > Thanks, > Chris > > ===== BEGIN myservice.wsdl ===== > > <wsdl:definitions > name="MyService" > targetNamespace="http://mycompany.com/myservice"; > xmlns:tns=" http://mycompany.com/myservice"; > xmlns:types=" > http://mycompany.com/myservice/types"; > xmlns:xsd="http://www.w3.org/2001/XMLSchema"; > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";> > > <wsdl:types> > <xsd:schema> > <xsd:import namespace=" > http://mycompany.com/myservice/types"; > schemaLocation="mytypes.xsd"/> > </xsd:schema> > </wsdl:types> > > ... > > </wsdl:definitions> > > ===== END myservice.wsdl ===== > > ===== BEGIN mytypes.xsd ===== > > <?xml version="1.0" ?> > <xs:schema > xmlns:xs="http://www.w3.org/2001/XMLSchema"; > targetNamespace=" > http://mycompany.com/myservice/types"; > xmlns:tns=" http://mycompany.com/myservice/types"; > version="1.0"> > > <xs:element name="someType"> > <xs:complexType> > <xs:sequence> > <xs:element name="string1" type="xs:string"/> > <xs:element name="string2" type="xs:string"/> > </xs:sequence> > </xs:complexType> > </xs:element> > > ... > > </xs:schema> > > ===== END mytypes.xsd ===== > > > On 1/2/07 1:56 PM, "Dan Diephouse" <[EMAIL PROTECTED]> wrote: > > > Hi Christopher, > > Do you per chance have a WSDL with multiple <schema>s with the same > targetNamespace? Someone filed that bug as XFIRE-720 and I just fixed it in > SVN. I'll be publishing snapshots later today, but just wanted to see if it > was the same issue. > > - Dan > > On 1/2/07, Christopher Moesel <[EMAIL PROTECTED]> wrote: > > Hello All, > > I am attempting to use Xfire for a contract-first web service. I've > written > the WSDL which imports a .XSD XML Schema file containing the types. I've > been able to successfully use the WsGen ANT task to generate all the > server-side files. > > My problem is in declaring the wsdlURL in the service definition. I am > using the spring configuration and have set the wsdlURL property to point > to > the WSDL in several ways: > A) On the classpath > B) Via HTTP URL > C) On the file system > > In all cases it's able to find the WSDL, but seems to have trouble finding > the types. I get the following error when the service is instantiated on > the server: > > org.codehaus.xfire.XFireRuntimeException: Couldn't find > schema for part: > {http://mycompany.com/myservice/types}someType > > [Note that I've changed the name of the NS and type for IP reasons] > > I am using Xfire 1.2.3 and XmlSchema 1.1. I've looked through the archives > and haven't seen any helpful info yet. Anyone have any ideas? > > Thanks, > Chris > > > --------------------------------------------------------------------- > To unsubscribe from this list please visit: > > http://xircles.codehaus.org/manage_email > > > > > -- Dan Diephouse Envoi Solutions http://envoisolutions.com | http://netzooid.com/blog --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email
