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.

 

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?

 

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>

Reply via email to