Hi CXF Users, Camel Riders, concerning this reply: >>Hi,
>>I think you need use something like catalog.xml to redirect the remove schema >>url to the local one you cached. >>------------- >>Freeman(Yue) Fang I have created a jax-ws-catalog.xml in /META-INF but it is not being used. As we do not generated code via wsdl2java but only want to use the cxf:Endpoint as a proxy, how can I tell Camel/CXF to pick up the schemata locally (via jax-ws-catalog.xml)? Sorry to bother but this is really blocking our progress. Thanks and Regards, Michael 2014-07-07 14:02 GMT+02:00 Michael Täschner <[email protected]>: > Hi Again, > > concerning the usage of catalog.xml in combination with cxf-Endpoint > for a webservice-proxy. Can anyone provide an example how to configure > the catalog.xml for the cxf Endpoint ? How does that correlate with > the "schemaLocations" that can be configured ? > > Thanks and Regards, > Michael > > 2014-06-30 12:15 GMT+02:00 Michael Täschner <[email protected]>: >> Hi Freeman, >> >> do you have an example for referencing the catalog.xml via spring (or >> blueprint) and how to map the namespaces to the local schema files ? >> Is it used in combinations with the schemalocations property or >> different approach ? >> >> Thanks and Regards, >> Michael >> >> 2014-06-30 11:42 GMT+02:00 Freeman Fang <[email protected]>: >>> Hi, >>> >>> I think you need use something like catalog.xml to redirect the remove >>> schema url to the local one you cached. >>> ------------- >>> Freeman(Yue) Fang >>> >>> Red Hat, Inc. >>> FuseSource is now part of Red Hat >>> >>> >>> >>> On 2014-6-30, at 下午5:23, Michael Täschner wrote: >>> >>>> Dear CXF-Users, >>>> >>>> I posted following questions at the camel users forum but got no >>>> reply. Could anyone here help me with configuring the schemalocations >>>> for a cxf proxy used via camel route (see below). >>>> >>>> Thanks and Best Regards, >>>> Michael >>>> >>>> ---------- Forwarded message ---------- >>>> From: Michael Täschner <[email protected]> >>>> Date: 2014-06-27 14:35 GMT+02:00 >>>> Subject: Re: camel-cxf proxy failed wsdl reading with local schemaLocations >>>> To: [email protected] >>>> >>>> >>>> Hi, >>>> >>>> could anybody give me a hint with this issue (using schemalocations >>>> with cxf:Endpoint) ? >>>> >>>> Thanks and Regards, >>>> Michael >>>> >>>> 2014-06-23 16:20 GMT+02:00 Michael Täschner <[email protected]>: >>>>> Hi Camel-Riders, >>>>> >>>>> we are (still) using SMX4.5 (Camel 2.10.7) and are trying to proxy a >>>>> SOAP call to external URL (plus reading statistics from input >>>>> message). For offline testing we have created a SoapUI mock target and >>>>> we declare schemaLocations inside the cxfEndpoint. Unfortunately the >>>>> schemata are not read at time of cxfEndpoint consumer creation: >>>>> >>>>> 15:36:40,366 WARN [ReflectionServiceFactoryBean] Failed to parse WSDL >>>>> javax.wsdl.WSDLException: WSDLException (at >>>>> /wsdl:definitions/wsdl:types/xsd:schema): faultCode=PARSER_ERROR: >>>>> Problem parsing >>>>> 'https://newskies-test.someairline.com/SessionManager.svc?xsd=xsd1'.: >>>>> java.net.UnknownHostException: newskies-test.someairline.com >>>>> at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(WSDLReaderImpl.java:2198) >>>>> at com.ibm.wsdl.xml.WSDLReaderImpl.parseSchema(WSDLReaderImpl.java:830) >>>>> at com.ibm.wsdl.xml.WSDLReaderImpl.parseSchema(WSDLReaderImpl.java:654) >>>>> at com.ibm.wsdl.xml.WSDLReaderImpl.parseTypes(WSDLReaderImpl.java:610) >>>>> at >>>>> com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(WSDLReaderImpl.java:320) >>>>> at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2352) >>>>> at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2338) >>>>> at >>>>> org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:245) >>>>> at >>>>> org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:190) >>>>> at >>>>> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.isEmptywsdl(ReflectionServiceFactoryBean.java:2598) >>>>> at >>>>> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.isFromWsdl(ReflectionServiceFactoryBean.java:543) >>>>> at >>>>> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:547) >>>>> at >>>>> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:265) >>>>> at >>>>> org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101) >>>>> at >>>>> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:159) >>>>> at org.apache.camel.component.cxf.CxfConsumer.<init>(CxfConsumer.java:240) >>>>> at >>>>> org.apache.camel.component.cxf.CxfEndpoint.createConsumer(CxfEndpoint.java:204) >>>>> >>>>> We have dowloaded all corresponding schemata (e.g. >>>>> "https://newskies-test.someairline.com/SessionManager.svc?xsd=xsd1") >>>>> and referenced them via the schemaLocation config. >>>>> >>>>> Following the endpoint and camelContext: >>>>> >>>>> Endpoint definition: >>>>> <!-- this is the CXF web service we use as the front end --> >>>>> <cxf:cxfEndpoint id="frontendSessionManager" >>>>> address="http://0.0.0.0:8090/SessionManager.svc" >>>>> wsdlURL="etc/SessionManager/SessionManager.wsdl" >>>>>> >>>>> >>>>> <!-- WSDL: wsdlURL="etc/SessionManager/SessionManager.wsdl" >>>>> wsdlURL="http://localhost:8088/SessionManager.svc?wsdl --> >>>>> <cxf:inInterceptors> >>>>> <ref bean="loggingInInterceptor" /> >>>>> </cxf:inInterceptors> >>>>> <cxf:outInterceptors> >>>>> <ref bean="loggingOutInterceptor" /> >>>>> <ref bean="sAAJOutInterceptor" /> >>>>> <!-- ref bean="isb4uStatisticCalculatorInterceptor"/ --> >>>>> </cxf:outInterceptors> >>>>> <cxf:inFaultInterceptors> >>>>> <ref bean="loggingInInterceptor" /> >>>>> </cxf:inFaultInterceptors> >>>>> <cxf:outFaultInterceptors> >>>>> <ref bean="loggingOutInterceptor" /> >>>>> </cxf:outFaultInterceptors> >>>>> >>>>> <cxf:schemaLocations> >>>>> <!-- >>>>> >>>>> <cxf:schemaLocation>http://localhost:8088/SessionManager.svc?WSDL&interface=BasicHttpBinding_ISessionManager&part=SessionManager.xsd</cxf:schemaLocation> >>>>> --> >>>>> >>>>> <cxf:schemaLocation>classpath:etc/SessionManager/xsd0-serviceContracts-sessionService.xsd</cxf:schemaLocation> >>>>> >>>>> <cxf:schemaLocation>classpath:etc/SessionManager/xsd1-serialization.xsd</cxf:schemaLocation> >>>>> >>>>> <cxf:schemaLocation>classpath:etc/SessionManager/xsd2-dataContracts-sessionService.xsd</cxf:schemaLocation> >>>>> >>>>> <cxf:schemaLocation>classpath:etc/SessionManager/xsd3-webservices.xsd</cxf:schemaLocation> >>>>> >>>>> <cxf:schemaLocation>classpath:etc/SessionManager/xsd4-webservices-dataContracts-common-enumerations.xsd</cxf:schemaLocation> >>>>> </cxf:schemaLocations> >>>>> >>>>> <cxf:properties> >>>>> <!-- Set the publishedEndpointUrl which could override the service >>>>> address from generated WSDL as you want --> >>>>> <!-- >>>>> <entry key="publishedEndpointUrl" value="http://localhost:8090" /> >>>>> --> >>>>> <entry key="synchronous" value="true" /> >>>>> <!-- enable logging in cxf message mode --> >>>>> <entry key="dataFormat" value="MESSAGE" /> >>>>> <entry key="schema-validation-enabled" value="false" /> >>>>> </cxf:properties> >>>>> </cxf:cxfEndpoint> >>>>> >>>>> CamelContext: >>>>> <!-- this is the Camel route which proxies the real web service and >>>>> forwards SOAP requests to it --> >>>>> <camel:camelContext id="context" streamCache="true" > >>>>> <!-- disable stream caching spool to disk --> >>>>> <camel:properties> >>>>> <camel:property key="CamelCachedOutputStreamThreshold" value="-1" /> >>>>> </camel:properties> >>>>> <camel:endpoint id="backendSessionManager" >>>>> uri="http://localhost:8088/SessionManager.svc?httpClient.soTimeout=5000&throwExceptionOnFailure=false" >>>>> /> >>>>> >>>>> <camel:route id="SessionManager" > >>>>> <!-- CXF consumer using MESSAGE format --> >>>>> <camel:from uri="cxf:bean:frontendSessionManager?dataFormat=MESSAGE" /> >>>>> <camel:doTry> >>>>> <!-- send proxied request to real web service --> >>>>> <camel:to ref="backendSessionManager" /> >>>>> </camel:doTry> >>>>> </camel:route> >>>>> </camel:camelContext> >>>>> >>>>> There may be more errors in the definition but the failure to create >>>>> the cxfEndpoint consumer due to trying to look-up the schemata from >>>>> remote host instead of using the local copies is blocking our >>>>> progress. >>>>> >>>>> The Root cause we tracked so far seems to be in >>>>> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL[1]. >>>>> whereby the serviceFactory is created up front but schemaLocations are >>>>> only read at the end via "initializeDataBindings". >>>>> >>>>> Any idea how to resolve this (i.e. get the cxfEndpoint consumer >>>>> started with local schemata) would be welcome! >>>>> Regards, >>>>> Michael >>>>> >>>>> [1] >>>>> http://grepcode.com/file/repo1.maven.org/maven2/org.apache.cxf/cxf-bundle/2.7.7/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java#407 >>>
