Weblogic JMS 客户端 - 从无响应的连接工厂创建连接
Weblogic JMS Client - Creating connection from connection factory unresponsive
我已经能够成功创建一个 weblogic jms 客户端,并且我已经能够 运行 它在 LAPTOP A 上成功,将消息发送到我公司服务器上配置的 jms 队列:SERVER A .
现在,我遇到的问题是,当我 运行 另一台笔记本电脑 LAPTOP B 上的 jms 客户端时,客户端在尝试从连接工厂创建连接时停止:
String queueConnectionFactory = "jms/thefactory"
QueueConnectionFactory qconFactory = (QueueConnectionFactory) context.lookup(queueConnectionFactory);
QueueConnection qcon = qconFactory.createQueueConnection(); //application freezes here!
发生这种情况时,当我回到笔记本电脑 A 和 运行 jms 客户端时,同样的事情发生了。
我继续终止两台笔记本电脑上的客户端应用程序,几分钟后,这出现在 weblogic 的服务器日志中:
java.io.EOFException: Attempt to send message on closed socket.
java.rmi.MarshalException: IOException while sending; nested exception is:
java.io.EOFException: Attempt to send message on closed socket
at weblogic.iiop.EndPointImpl.send(EndPointImpl.java:1155)
at weblogic.iiop.OutboundResponseImpl.sendThrowable(OutboundResponseImpl.java:221)
at weblogic.rmi.internal.BasicServerRef.handleThrowable(BasicServerRef.java:866)
at weblogic.rmi.internal.BasicServerRef.postInvoke(BasicServerRef.java:762)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:542)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
Caused By: java.io.EOFException: Attempt to send message on closed socket
at weblogic.iiop.MuxableSocketIIOP.send(MuxableSocketIIOP.java:469)
at weblogic.protocol.AsyncMessageSenderImpl.sendOutMsg(AsyncMessageSenderImpl.java:90)
at weblogic.protocol.AsyncMessageSenderImpl.send(AsyncMessageSenderImpl.java:46)
at weblogic.iiop.MuxableSocketIIOP$IIOPConnection.send(MuxableSocketIIOP.java:582)
at weblogic.iiop.EndPointImpl.send(EndPointImpl.java:1148)
at weblogic.iiop.OutboundResponseImpl.sendThrowable(OutboundResponseImpl.java:221)
at weblogic.rmi.internal.BasicServerRef.handleThrowable(BasicServerRef.java:866)
at weblogic.rmi.internal.BasicServerRef.postInvoke(BasicServerRef.java:762)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:542)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
一段时间后,我能够从 LAPTOP A 运行 jms 客户端。但是当我从 LAPTOP B 再次尝试时,我刚刚描述的整个问题就开始了。
两台笔记本电脑都可以 ping 服务器和 telnet 到服务器的端口。事实上,两者都可以很好地连接 JMS 服务器。是工厂连接的创建导致了这个奇怪的问题。
我不明白这是怎么回事。有人可以帮忙吗?
我很久以前就想出来了,但忘了提出答案。
问题是我使用的 weblogic jar。你看,其中一台笔记本电脑是 Windows 系统,另一台是 Linux 系统,出于某种奇怪的原因,您用于客户端的 weblogic jar 因主机操作系统而异。
客户打算在 Windows 上 运行,所以我使用了这些罐子:wlclient.jar 和 wljmsclient.jar。
我已经能够成功创建一个 weblogic jms 客户端,并且我已经能够 运行 它在 LAPTOP A 上成功,将消息发送到我公司服务器上配置的 jms 队列:SERVER A .
现在,我遇到的问题是,当我 运行 另一台笔记本电脑 LAPTOP B 上的 jms 客户端时,客户端在尝试从连接工厂创建连接时停止:
String queueConnectionFactory = "jms/thefactory"
QueueConnectionFactory qconFactory = (QueueConnectionFactory) context.lookup(queueConnectionFactory);
QueueConnection qcon = qconFactory.createQueueConnection(); //application freezes here!
发生这种情况时,当我回到笔记本电脑 A 和 运行 jms 客户端时,同样的事情发生了。
我继续终止两台笔记本电脑上的客户端应用程序,几分钟后,这出现在 weblogic 的服务器日志中:
java.io.EOFException: Attempt to send message on closed socket.
java.rmi.MarshalException: IOException while sending; nested exception is:
java.io.EOFException: Attempt to send message on closed socket
at weblogic.iiop.EndPointImpl.send(EndPointImpl.java:1155)
at weblogic.iiop.OutboundResponseImpl.sendThrowable(OutboundResponseImpl.java:221)
at weblogic.rmi.internal.BasicServerRef.handleThrowable(BasicServerRef.java:866)
at weblogic.rmi.internal.BasicServerRef.postInvoke(BasicServerRef.java:762)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:542)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
Caused By: java.io.EOFException: Attempt to send message on closed socket
at weblogic.iiop.MuxableSocketIIOP.send(MuxableSocketIIOP.java:469)
at weblogic.protocol.AsyncMessageSenderImpl.sendOutMsg(AsyncMessageSenderImpl.java:90)
at weblogic.protocol.AsyncMessageSenderImpl.send(AsyncMessageSenderImpl.java:46)
at weblogic.iiop.MuxableSocketIIOP$IIOPConnection.send(MuxableSocketIIOP.java:582)
at weblogic.iiop.EndPointImpl.send(EndPointImpl.java:1148)
at weblogic.iiop.OutboundResponseImpl.sendThrowable(OutboundResponseImpl.java:221)
at weblogic.rmi.internal.BasicServerRef.handleThrowable(BasicServerRef.java:866)
at weblogic.rmi.internal.BasicServerRef.postInvoke(BasicServerRef.java:762)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:542)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
一段时间后,我能够从 LAPTOP A 运行 jms 客户端。但是当我从 LAPTOP B 再次尝试时,我刚刚描述的整个问题就开始了。
两台笔记本电脑都可以 ping 服务器和 telnet 到服务器的端口。事实上,两者都可以很好地连接 JMS 服务器。是工厂连接的创建导致了这个奇怪的问题。
我不明白这是怎么回事。有人可以帮忙吗?
我很久以前就想出来了,但忘了提出答案。
问题是我使用的 weblogic jar。你看,其中一台笔记本电脑是 Windows 系统,另一台是 Linux 系统,出于某种奇怪的原因,您用于客户端的 weblogic jar 因主机操作系统而异。
客户打算在 Windows 上 运行,所以我使用了这些罐子:wlclient.jar 和 wljmsclient.jar。