2017-05-08 120 views
0

我已经能够成功创建一个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服务器。这是造成这个奇怪问题的工厂连接创建。

我不明白发生了什么事。任何人都可以帮忙吗?

回答

0

很久以前我想到了这个,但忘了提出答案。

问题是我使用的weblogic jar。你看,其中一台笔记本电脑是Windows系统,另一台是Linux系统,出于某种奇怪的原因,用于客户端的weblogic jar根据其主机操作系统的不同而不同。

客户端要在Windows上运行,所以我使用了这些jar:wlclient.jar和wljmsclient.jar。