【发布时间】:2010-11-20 23:12:40
【问题描述】:
我正在学习 Sun JMS 教程(sender source、receiver 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 秒,但似乎没有什么区别。即使我只是查找连接工厂并且不请求连接,这两个线程仍然启动并且不会终止。
非常感谢任何帮助!
【问题讨论】: