【问题标题】:How can I get this external JMS client to terminate?如何让这个外部 JMS 客户端终止?
【发布时间】:2010-11-20 23:12:40
【问题描述】:

我正在学习 Sun JMS 教程(sender sourcereceiver source)的 'Simple Point-to-Point Example' 部分,并使用 Glassfish 作为我的 JMS 提供程序。我在 Glassfish 管理 UI 中设置了 QueueConnectionFactory 和 Queue,并将相关的 JAR 添加到我的类路径中,并且接收方正在接收发送方发送的消息。

但是,发送方和接收方都不会终止。主线程正常退出(在成功调用queueConnection.close()后),但留下两个非守护线程:

  • iMQReadChannel-0
  • imqConnectionFlowControl-0

似乎(来自this java.net thread)原因是queueConnection.close() 只是将连接返回到池,而不是真正关闭它。我找不到任何方法来告诉池关闭,所以我剩下的唯一选择是System.exit(),感觉不对。

我尝试将最小池大小设置为 0,将最大池大小设置为 1,并将空闲超时设置为 10 秒,但似乎没有什么区别。即使我只是查找连接工厂并且不请求连接,这两个线程仍然启动并且不会终止。

非常感谢任何帮助!

【问题讨论】:

    标签: java glassfish jms


    【解决方案1】:

    您为什么不简单地以 System.exit(0) 终止?给定示例,当前行为是正确的(当所有非守护线程结束时,Java 程序终止)。

    也许您可以通过使用客户端库的属性(空闲时间等)正确关闭示例,但似乎其他人(http://www.nabble.com/Simple-JMS-Client-doesn%27t-quit-td15662753.html)仍然遇到同样的问题(而且,无论如何,我仍然不明白重点是什么)。

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      相关资源
      最近更新 更多