如何从JMS发送消息时捕获错误

时间:2018-05-07 09:24:42

标签: error-handling jms ejb jms-topic edb

我通过我的独立应用程序发送消息,该应用程序使用EJB MDB与我在JBOSS服务器上运行的其他应用程序服务器进行通信。我的应用程序服务器连接到MSSQL服务器。在某些情况下,在应用程序服务器端丢失了与数据库的连接,我们收到以下错误 -

Connection is reset.

稍后,当我尝试发送消息时,我的独立EJB MDB日志没有出现任何错误,并且该过程只是停止执行。我在应用程序服务器端日志上获取错误日志,但相同的日志不会传播到我的EJB MDB错误日志。

根据我的理解,当db连接丢失时,jboss容器中存在的所有ejb bean也会变得无效。(我可能在这里错了,我是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();
        }
    }

我的印象是,当我们的数据库连接丢失时(因为我们正在创建bean并为消息建立连接),Queueconnection对象将被取消。但它似乎没有用。

1 个答案:

答案 0 :(得分:0)

我发现了一种在发送消息后回调我的应用程序的方法。我使用了一个单独的临时队列,并使用setJMSReplyTo方法设置了回复目标。可以从中获得更多信息 link。希望这有助于其他人。

相关问题