I try to configure using JMS transport of CXF in the Weblogic Server
v10. I hope to use Weblogic JMS server as the underlying JMS provider.
After config the cxf setting in both wsdl & beans.xml, the server side
is ok , while the client side always throws :
org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.interceptor.MessageSenderInterceptor
$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:
64)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:
207)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:
73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:
135)
at $Proxy31.greetMe(Unknown Source)
at
org.apache.cxf.jms_greeter.client.GreeterClient.main(GreeterClient.java:
38)
Caused by: java.io.IOException: javax.jms.JMSException:
JMSClientTransport.receive() timed out. No message available.
at org.apache.cxf.transport.jms.JMSConduit
$JMSOutputStream.handleResponse(JMSConduit.java:364)
at org.apache.cxf.transport.jms.JMSConduit
$JMSOutputStream.doClose(JMSConduit.java:255)
at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:
154)
at
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:
66)
at org.apache.cxf.interceptor.MessageSenderInterceptor
$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:
62)
... 7 more
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Could
not send Message.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:
175)
at $Proxy31.greetMe(Unknown Source)
at
org.apache.cxf.jms_greeter.client.GreeterClient.main(GreeterClient.java:
38)
Caused by: org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.interceptor.MessageSenderInterceptor
$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:
64)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:
207)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:
73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:
135)
... 2 more
Caused by: java.io.IOException: javax.jms.JMSException:
JMSClientTransport.receive() timed out. No message available.
at org.apache.cxf.transport.jms.JMSConduit
$JMSOutputStream.handleResponse(JMSConduit.java:364)
at org.apache.cxf.transport.jms.JMSConduit
$JMSOutputStream.doClose(JMSConduit.java:255)
at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:
154)
at
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:
66)
at org.apache.cxf.interceptor.MessageSenderInterceptor
$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:
62)
I used cxf sample code of "jms_queue", just modify the wsdl as
following:
<wsdl:service name="JMSGreeterService">
<wsdl:port binding="tns:JMSGreeterPortBinding"
name="GreeterPort">
<jms:address destinationStyle="queue"
jndiConnectionFactoryName="demo.ConnectionFactory"
jndiDestinationName="jms.buffer.queue"
connectionUserName="weblogic"
connectionPassword="weblogic">
<jms:JMSNamingProperty
name="java.naming.factory.initial"
value="weblogic.jndi.WLInitialContextFactory" />
<jms:JMSNamingProperty name="java.naming.provider.url"
value="t3://localhost:7001" />
</jms:address>
</wsdl:port>
</wsdl:service>
The server side configuration is :
<jms:destination
name="{
http://cxf.apache.org/jms_greeter}GreeterPort.jms-
destination">
<jms:address destinationStyle="queue"
jndiConnectionFactoryName="weblogic.jms.ConnectionFactory"
jndiDestinationName="jms.buffer.queue"
connectionUserName="weblogic"
connectionPassword="weblogic">
<jms:JMSNamingProperty name="java.naming.factory.initial"
value="weblogic.jndi.WLInitialContextFactory" />
<jms:JMSNamingProperty name="java.naming.provider.url"
value="t3://localhost:7001" />
</jms:address>
</jms:destination>