我通过Sun JMS教程(sender source,receiver source)的'Simple Point-to-Point Example'部分工作,使用Glassfish的作为我的JMS提供者。我在Glassfish管理界面中设置了QueueConnectionFactory和Queue,并将相关的JAR添加到我的类路径中,并且接收者正在接收发件人发送的消息。我怎样才能让这个外部JMS客户端终止?
然而,无论是发送者也不是接收器终止。主线程正常退出(后成功地调用queueConnection.close()
),但两个非守护线程留给徘徊:
- iMQReadChannel-0
- imqConnectionFlowControl-0
看来(从this java.net thread),其原因是queueConnection.close()
只是将连接返回到池,而不是真的关闭它。我找不到任何方法告诉游泳池关机,所以我唯一的选择是System.exit()
,这感觉不对。
我试过设置的最低池大小为0,最大池大小为1,空闲超时时间为10秒,但它似乎没有什么区别。即使当我查找连接工厂并且不要求连接时,这两个线程仍然启动并且不会终止。
任何帮助,非常感谢!