Weblogic JMS客户端 - 从连接工厂创建连接无响应
问题描述:
我已经能够成功创建一个weblogic jms客户端,并且我已经能够在LAPTOP A上成功运行它,将消息发送到我公司的配置的jms队列服务器:在服务器A.Weblogic JMS客户端 - 从连接工厂创建连接无响应
现在,我遇到的问题是,当我在另一台笔记本电脑,手提电脑去运行JMS客户端,客户端停止在它试图创建连接工厂的连接点:
String queueConnectionFactory = "jms/thefactory"
QueueConnectionFactory qconFactory = (QueueConnectionFactory) context.lookup(queueConnectionFactory);
QueueConnection qcon = qconFactory.createQueueConnection(); //application freezes here!
当发生这种情况时,当我回到LAPTOP 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)
过了一段时间,我能够运行JMS来自LAPTOP A的客户端。但是,当我从LAPTOP B再次尝试时,我刚刚描述的整个问题就开始了。
两台笔记本电脑都可以ping通服务器,并通过远程登录到服务器的端口。实际上,两者都可以很好地连接JMS服务器。这是造成这个奇怪问题的工厂连接创建。
我不明白发生了什么事。任何人都可以帮忙吗?
答
很久以前我想到了这个,但忘了提出答案。
问题是我使用的weblogic jar。你看,其中一台笔记本电脑是Windows系统,另一台是Linux系统,出于某种奇怪的原因,用于客户端的weblogic jar根据其主机操作系统的不同而不同。
客户端要在Windows上运行,所以我使用了这些jar:wlclient.jar和wljmsclient.jar。