我通過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秒,但它似乎沒有什麼區別。即使當我查找連接工廠並且不要求連接時,這兩個線程仍然啓動並且不會終止。
任何幫助,非常感謝!