Аааа ... старая проблема обработки / восстановления исключений.
Существуют некоторые транспортные провайдеры, которые автоматически переподключат ваше приложение для вас и некоторых, кто выполнит переподключение диска приложения.В общем случае переподключения скрывают исключение из приложения.Недостатком является то, что вы не хотите, чтобы приложение зависало навсегда, если все удаленные узлы обмена сообщениями отключены, поэтому в конечном итоге вы должны включить некоторую логику переподключения.
Теперь вот интересная часть - как вы обрабатываете исключения нейтральным способом поставщика?Исключение JMS практически ничего не стоит.Например, «исключение безопасности» может заключаться в том, что политики безопасности Java слишком ограничительны, что разрешения файловой системы слишком ограничены, что учетные данные LDAP не удалось, что не удалось подключиться к транспорту, что открыто очередь или разделне удалось или любой из десятков других проблем, связанных с безопасностью.Это связанное исключение, содержащее подробности от поставщика транспорта, которые действительно помогают отладить проблему.Мои клиенты обычно используют один из трех различных подходов ...
- Все ошибки обрабатываются одинаково.Закройте все объекты и переинициализируйте их.это переносимый JMS.
- Разрешить приложению проверять связанные исключения, чтобы различать фатальные и временные ошибки (т. е. ошибка аутентификации и переполнение очереди).Не переносится поставщиком.
- Классы обработки ошибок, зависящие от поставщика.Гибрид двух других.
В вашем случае объекты очереди и темы, вероятно, действительны только в контексте исходного соединения.Предполагая, что провайдер, который автоматически переподключается, факт, что вы получили исключение, означает, что переподключение не удалось, и контекст для объектов очереди и темы не может быть восстановлен.Закройте все объекты и переподключите.
Если вы хотите сделать что-то более специфичное для поставщика, такое как различие между временными и постоянными ошибками, это одна из тех вещей, которые "зависят", и вам придется выяснить это нав каждом конкретном случае.