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