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

时间:2009-12-09 10:10:40

标签: java timeout jms weblogic failover

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

我的测试步骤:

  1. 启动WebLogic Server
  2. 启动JMS客户端
  3. 客户端向WebLogic JMS发送对象,服务器收到该对象。
  4. 停止WebLogic Server
  5. 将另一个对象发送到WebLogic JMS。
  6. 我期待的是一个例外,但没有任何出现和程序被绞死。程序停在:

    sender.send(objMsg);
    

    我添加了一些超时设置,但仍无效:

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

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

    最诚挚的问候, 克里斯

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

找到解决方案:

请添加以下两个参数:

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