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