如何设置队列生成器超时?

我正在测试WebLogic 10.3.1 JMS,但是存在问题。

我的测试步骤:

  1. 启动WebLogic Server
  2. 启动JMS客户端
  3. 客户端将对象发送到WebLogic JMS并且服务器接收到该对象。
  4. 停止WebLogic Server
  5. 将另一个对象发送到WebLogic JMS。

我所期待的是一个例外,但没有任何出现和程序被绞死。 程序停在:

sender.send(objMsg); 

我添加了一些超时设置,但仍然无法正常工作:

 ((WLProducerImpl) sender).setSendTimeout(1000); ((WLConnection) connection).setReconnectPolicy(JMSConstants.RECONNECT_POLICY_PRODUCER); ((WLConnection) connection).setReconnectBlockingMillis(1000); 

在这种情况下有没有办法产生exception? 非常感谢你。

最诚挚的问候,克里斯

您可以尝试在send方法中设置超时。 类似于以下内容:sender.send(objMsg,Message.DEFAULT_DELIVERY_MODE,Message.DEFAULT_PRIORITY,10000);

我怀疑WebLogic传输已挂起且未检测到服务器已经消失 – 并且传输中的发送被阻止。 除非WebLogic JMS在内部使用单独的线程,否则没有超时会有所帮助。

恕我直言,WebLogic支持是唯一能够帮助你的人(看起来像一个bug)。

解决方案:

请添加以下两个参数:

 -Dsun.net.client.defaultConnectTimeout=30000 -Dsun.net.client.defaultReadTimeout=30000