Как отловить ошибку при отправке сообщения из JMS

Я отправляю сообщение через мое автономное приложение, которое использует EJB MDB для связи с другим моим сервером приложений, работающим на сервере JBOSS. Мой сервер приложений подключен к серверу MSSQL. В определенном сценарии соединение с базой данных теряется на стороне сервера приложений, и мы получаем следующую ошибку:

Connection is reset.

Позже, когда я пытаюсь отправить сообщение, я не получаю никакой ошибки в моих автономных журналах EJB MDB, и процесс просто прекращает выполнение. Я получаю журнал ошибок в журналах на стороне сервера приложений, но те же журналы не распространяются на мою ошибку EJB MDB журналы.

Насколько я понимаю, когда соединение с db потеряно, все компоненты ejb, присутствующие в контейнере jboss, тоже обнуляются (я могу ошибаться, я новичок в EJB).

Я попытался реализовать приведенный ниже код в моем коде, который используется для отправки сообщения -

QueueConnection qcon = null;
   @PostConstruct
    public void initialize() {
        System.out.println("In PostConstruct");
        try {
            qcon = qconFactory.createQueueConnection();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    @PreDestroy
    public void releaseResources() {
        System.out.println("In PreDestroy");
        try {
            if(qcon != null)
            {
                qcon.close();
            }
            if(qcon== null){
                throw new Exception(" new exception occured.");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

У меня сложилось впечатление, что объект Queueconnection будет аннулирован, когда наше соединение с БД потеряно (так как мы создаем компонент и устанавливаем соединение для сообщения). Но это не похоже на работу.

1 ответ

Решение

Я нашел способ перезвонить моему заявлению после отправки сообщения. Я использовал отдельную временную очередь и использовал метод setJMSReplyTo для установки пункта назначения ответа. Больше информации можно получить по этой ссылке. Надеюсь, что это помогает другим.

Другие вопросы по тегам