Hi Rich
On 01/05/12 22:26, Richard Begg wrote:
Hi,



I am attempting to use CXF DOSGi Discovery using a 'wsdl' exported config.  The 
service is exposed successfully and accessing the web service using a JAX-WS 
client seems to work great.


This is off-topic, but can you let me know please, where your custom WSDL is located ? Is "META-INF/wsdl/DeviceInterface-v0.1.wsdl" available in the application bundle ?

Just would like to see if https://issues.apache.org/jira/browse/DOSGI-111 valid or not...

More comments below,


When attempting to consume the service from a remote OSGi container the 
following exception is thrown within the consuming service:



Caused by: org.apache.cxf.binding.soap.SoapFault: Message part {http://_0_1.devi

ces.wsdl.test.com/}getSetting was not recognized.  (Does it exist in servic

e WSDL?)

         at 
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unma

rshalFault(Soap11FaultInInterceptor.java:75)

         at 
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.hand

leMessage(Soap11FaultInInterceptor.java:46)

         at 
org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.hand

leMessage(Soap11FaultInInterceptor.java:35)

         at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept

orChain.java:263)

         at 
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMess

age(AbstractFaultChainInitiatorObserver.java:113)

         at 
org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleM

essage(CheckFaultInterceptor.java:69)

         at 
org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleM

essage(CheckFaultInterceptor.java:34)

         at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept

orChain.java:263)

         at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:799)

         at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleR

esponseInternal(HTTPConduit.java:1627)

         at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleR

esponse(HTTPConduit.java:1494)

         at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(H

TTPConduit.java:1402)

         at 
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:5

6)

         at 
org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:649)



         at 
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndi

ngInterceptor.handleMessage(MessageSenderInterceptor.java:62)

         at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept

orChain.java:263)

         at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:533)

         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463)

         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366)

         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319)

         at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:88)

         at org.apache.cxf.frontend.ClientProxy.invoke(ClientProxy.java:80)

         at $Proxy28.getSetting(Unknown Source)

         ... 35 more



It would seem that the endpoint-description held in Zookeeper is using an 
imported config oforg.apache.cxf.ws not 'wsdl' (see below).



I’ve taken a look at the code and the WsdlConfigurationTypeHandler adds the CXF 
ws config to the EndpointDescription not the 'wsdl' configuration.  Is this 
correct?

Probably not. Can you please experiment with using an 'org.apache.cxf.ws' type, with properties like 'org.apache.cxf.ws.wsdl.location', etc ?

Cheers, Sergey




Any help would be greatly appreciated.



Cheers,

Rich.



<?xml version="1.0" encoding="UTF-8"?>

<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0";>

   <endpoint-description>

     <property name="endpoint.framework.uuid" 
value="9bcf028d-c21f-4161-9bdd-7e909340a9e9" />

     <property name="endpoint.id" 
value="http://10.0.1.27:9000/com/test/wsdl/devices/_0_1/DevicePortType"; />

     <property name="endpoint.package.version.com.test.wsdl.devices._0_1" 
value="0.0.0" />

     <property name="endpoint.service.id" value-type="Long" value="44" />

     <property name="objectClass">

       <array>

         <value>com.test.wsdl.devices._0_1.DevicePortType</value>

       </array>

     </property>

     <property name="org.apache.cxf.ws.address" 
value="http://10.0.1.27:9000/com/test/wsdl/devices/_0_1/DevicePortType"; />

     <property name="osgi.remote.configuration.wsdl.httpservice.context" 
value="/testdevice" />

     <property name="osgi.remote.configuration.wsdl.location" 
value="META-INF/wsdl/DeviceInterface-v0.1.wsdl" />

     <property name="osgi.remote.configuration.wsdl.port.name" value="DevicePort" 
/>

     <property name="osgi.remote.configuration.wsdl.service.name" 
value="DeviceService" />

     <property name="osgi.remote.configuration.wsdl.service.ns" 
value="http://wsdl.test.com/devices/0_1/"; />

     <property name="service.imported" value="true" />

     <property name="service.imported.configs">

       <array>

         <value>org.apache.cxf.ws</value>

       </array>

     </property>

     <property name="service.intents">

       <array>

         <value>SOAP.1_1</value>

         <value>HTTP</value>

         <value>SOAP</value>

       </array>

     </property>

   </endpoint-description>

</endpoint-descriptions>


--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Reply via email to