Using JMSTransport in Weblogic

21 views
Skip to first unread message

azure

unread,
Mar 28, 2008, 1:38:58 AM3/28/08
to cxf-zh
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>

willem

unread,
Mar 28, 2008, 10:11:59 PM3/28/08
to cxf-zh
你的Client是在哪如何启动的? 是和Server一样都在一台机器上吗?
还有你也可以通过配置文件使用<jms:conduit> 来配置client端。

还用从stacke trace上看,应该是Client 没有取到Server端回应的消息 出的超时错误。
请再次检查你的配置。

姜宁 (Willem)
--------------------------------
http://willem.bokeland.com
Reply all
Reply to author
Forward
0 new messages