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&amp;interface=BasicHttpBinding_ISessionManager&amp;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&amp;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
>>>

Reply via email to