On Fri, Feb 4, 2011 at 6:56 AM, Scott Came <[email protected]> wrote: > Thanks, Claus...that fixed it. > > However... Now that I got my simple test case working, I took out the sample > person.wsdl and replaced it with my actual project wsdl. This wsdl is > actually a bit complex...there is a "root" wsdl document that imports another > wsdl document, and that second document in turn imports a quite complex wad > of XML Schemas. The second wsdl and the xsds are in different directories > than the "root" wsdl. > > It seems that CXF does not like relative paths in the wsdl:import > location...I get a FileNotFoundException, with the following as the top of > the stack trace: > > at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(Unknown Source) > at com.ibm.wsdl.xml.WSDLReaderImpl.parseImport(Unknown Source) > at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source) > at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source) > at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source) > at > org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:230) > at > org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:179) > at > org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:91) > ... 26 more > > I know my WSDL is valid; I can successfully generate code with wsdl2java, etc. > > Is it a limitation in CXF...to have the wsdl referenced in wsdlURL="" import > another wsdl that resides in a different directory? > > Really appreciate the help...you've helped me move forward for the first time > in a few days of trying to get this to work. >
Can you post snippets of your imports in your wsdl / xsd files? And where do those reside? Are they included in the JAR somewhere, and if so in which location? > Thanks. > --Scott > > -----Original Message----- > From: Claus Ibsen [mailto:[email protected]] > Sent: Thursday, February 03, 2011 8:07 PM > To: [email protected] > Subject: Re: Exception with cxfEndpoint address > > Hi > > I think you need to import the Jetty file if you want absolute address (it > will then embed and use Jetty as container). > You have defined the http which relies on the container having a HTTP > service, and thus the address should be relative > > <import resource="classpath:META-INF/cxf/cxf.xml" /> <import > resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import > resource="classpath:META-INF/cxf/cxf-extension-http.xml" /> <import > resource="classpath:META-INF/cxf/osgi/cxf-extension-osgi.xml" /> > > Import the jetty schema instead: > > See the Camel CXF examples such as: > http://camel.apache.org/cxf-proxy-example.html > > Also chapter 13 (13.4.2) in Camel in Action book shows and talks about this. > > > On Thu, Feb 3, 2011 at 7:50 PM, Scott Came <[email protected]> wrote: >> When I build-install and deploy the attached in SMX4 (FUSE ESB 4.3.0-03-00) >> I get the following: >> >> Exception in thread "SpringOsgiExtenderThread-16" >> org.apache.camel.RuntimeCamelException: >> java.lang.IllegalStateException: Endpoint address should be a relative >> URI wrt to the servlet address (use '/xxx' for example) >> at >> org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHel >> per.java:1133) >> at >> org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCa >> melContext.java:103) >> at >> org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(Cam >> elContextFactoryBean.java:231) >> at >> org.springframework.context.event.SimpleApplicationEventMulticaster.mu >> lticastEvent(SimpleApplicationEventMulticaster.java:97) >> at >> org.springframework.context.support.AbstractApplicationContext.publish >> Event(AbstractApplicationContext.java:303) >> at >> org.springframework.context.support.AbstractApplicationContext.finishR >> efresh(AbstractApplicationContext.java:911) >> at >> org.springframework.osgi.context.support.AbstractOsgiBundleApplication >> Context.finishRefresh(AbstractOsgiBundleApplicationContext.java:235) >> at >> org.springframework.osgi.context.support.AbstractDelegatedExecutionApp >> licationContext$4.run(AbstractDelegatedExecutionApplicationContext.jav >> a:358) >> at >> org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCust >> omTCCL(PrivilegedUtils.java:85) >> at >> org.springframework.osgi.context.support.AbstractDelegatedExecutionApp >> licationContext.completeRefresh(AbstractDelegatedExecutionApplicationC >> ontext.java:320) >> at >> org.springframework.osgi.extender.internal.dependencies.startup.Depend >> encyWaiterApplicationContextExecutor$CompleteRefreshTask.run(Dependenc >> yWaiterApplicationContextExecutor.java:136) >> at java.lang.Thread.run(Thread.java:680) >> Caused by: java.lang.IllegalStateException: Endpoint address should be >> a relative URI wrt to the servlet address (use '/xxx' for example) >> at >> org.apache.cxf.transport.http_osgi.OsgiTransportFactory.getDestination >> (OsgiTransportFactory.java:39) >> at >> org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:92) >> at >> org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:71) >> at >> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.jav >> a:106) >> at >> org.apache.camel.component.cxf.CxfConsumer.<init>(CxfConsumer.java:137 >> ) >> at >> org.apache.camel.component.cxf.CxfEndpoint.createConsumer(CxfEndpoint. >> java:111) >> at >> org.apache.camel.impl.EventDrivenConsumerRoute.addServices(EventDriven >> ConsumerRoute.java:60) >> at >> org.apache.camel.impl.DefaultRoute.onStartingServices(DefaultRoute.jav >> a:75) >> at >> org.apache.camel.impl.RouteService.doStart(RouteService.java:132) >> at >> org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:56) >> at >> org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelC >> ontext.java:1328) >> at >> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(Def >> aultCamelContext.java:1256) >> at >> org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.ja >> va:952) >> at >> org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelConte >> xt.java:203) >> at >> org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCa >> melContext.java:101) >> ... 10 more >> >> For ease of reference, my camel-context.xml is: >> >> <beans xmlns="http://www.springframework.org/schema/beans" >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> xmlns:osgi="http://camel.apache.org/schema/osgi" >> xmlns:cxf="http://camel.apache.org/schema/cxf" >> xsi:schemaLocation=" >> http://www.springframework.org/schema/beans >> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd >> http://camel.apache.org/schema/spring >> http://camel.apache.org/schema/spring/camel-spring.xsd >> http://camel.apache.org/schema/osgi >> http://camel.apache.org/schema/osgi/camel-osgi.xsd >> http://camel.apache.org/schema/cxf >> http://camel.apache.org/schema/cxf/camel-cxf-2.6.0.xsd >> "> >> >> <import resource="classpath:META-INF/cxf/cxf.xml" /> >> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> >> <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" /> >> <import resource="classpath:META-INF/cxf/osgi/cxf-extension-osgi.xml" >> /> >> >> <cxf:cxfEndpoint >> id="routerEndpoint" >> address="http://localhost:18080/services/TSCEIServiceCore" >> wsdlURL="classpath:person.wsdl"/> >> >> <osgi:camelContext xmlns="http://camel.apache.org/schema/spring" >> xmlns:ws="http://servicemix.apache.org/samples/wsdl-first"> >> <route> >> <from >> uri="cxf:bean:routerEndpoint?dataFormat=PAYLOAD&serviceName={http: >> //servicemix.apache.org/samples/wsdl-first}PersonService&portName= >> {http://servicemix.apache.org/samples/wsdl-first}soap"/> >> <convertBodyTo type="java.lang.String"/> >> <to uri="file:/tmp/router-output"/> >> </route> >> </osgi:camelContext> >> >> </beans> >> >> The wsdl is from the wsdl-first example in the distro, though this scenario >> is different than the sample. >> >> I searched the list and found this >> http://fusesource.com/forums/thread.jspa?threadID=566&tstart=0 which seems >> to be someone using JBI (which per Claus's recent comments, in response to >> my other post, is something I'm no longer considering). Then there was this >> post >> http://servicemix.396122.n5.nabble.com/jaxws-endpoint-address-should-be-a-relative-URI-wrt-to-the-servlet-address-td420837.html >> which also looks like, in the end, recommended using the cxf bc (JBI) >> component. >> >> Do I have to use JBI to get this scenario working (i.e., specifying the >> endpoint address in the configuration)? >> >> Thanks. >> --Scott >> >> > > > > -- > Claus Ibsen > ----------------- > FuseSource > Email: [email protected] > Web: http://fusesource.com > Twitter: davsclaus > Blog: http://davsclaus.blogspot.com/ > Author of Camel in Action: http://www.manning.com/ibsen/ > > > -- Claus Ibsen ----------------- FuseSource Email: [email protected] Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/
