Я работаю с разделом «Простой пример точка-точка» учебного руководства по Sun JMS ( источник отправителя , источник получателя ), используя Glassfish в качестве моего JMS-провайдера. Я установил QueueConnectionFactory и Queue в пользовательском интерфейсе администратора Glassfish и добавил соответствующие JAR-файлы в мой путь к классам, и получатель получает сообщения, отправленные отправителем.
Однако ни отправитель, ни получатель не завершают свою работу. Основной поток завершается нормально (после успешного вызова queueConnection.close()
), но два потока, не являющихся демонами, остаются без дела:
- iMQReadChannel-0
- imqConnectionFlowControl-0
Кажется (из этого потока java.net ), что причина в том, что queueConnection.close()
просто возвращает соединение с пулом, а не закрывает его. Я не могу найти способ заставить пул завершить работу, поэтому единственная опция, с которой я остаюсь - это System.exit()
, что кажется неправильным.
Я пытался установить минимальный размер пула равным 0, максимальный размер пула равным 1, а время простоя равным 10 секундам, но, похоже, это не имеет значения. Даже когда я просто просматриваю фабрику соединений и не запрашиваю соединение, эти два потока все еще запускаются и не завершаются.
Любая помощь высоко ценится!