Error handling 从JMS发送消息时如何捕获错误
我通过我的独立应用程序发送消息,该应用程序使用EJB MDB与运行在JBOSS服务器上的其他应用程序服务器通信。我的应用程序服务器连接到MSSQL服务器。在某些情况下,应用服务器端与数据库的连接丢失,我们得到以下错误-Error handling 从JMS发送消息时如何捕获错误,error-handling,jms,ejb,jms-topic,edb,Error Handling,Jms,Ejb,Jms Topic,Edb,我通过我的独立应用程序发送消息,该应用程序使用EJB MDB与运行在JBOSS服务器上的其他应用程序服务器通信。我的应用程序服务器连接到MSSQL服务器。在某些情况下,应用服务器端与数据库的连接丢失,我们得到以下错误- Connection is reset. 稍后,当我尝试发送消息时,我的独立EJB MDB日志中没有收到任何错误,进程只是停止执行。我在应用程序服务器端日志中收到错误日志,但相同的日志不会传播到我的EJB MDB错误日志中 根据我的理解,当db连接丢失时,jboss容器中的所有
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();
}
}
我的印象是,当我们的db连接丢失时,Queueconnection对象将无效(因为我们正在创建bean并为消息建立连接)。但它似乎不起作用 我确实找到了一种方法,可以在发送消息后回调我的应用程序。我使用了一个单独的临时队列,并使用setJMSReplyTo方法设置回复目的地。更多信息可从本网站获得
. 希望这对其他人有所帮助。上述代码似乎不起作用,因此我目前正在尝试了解如何实现从一个应用程序到另一个涉及EJB MDB的应用程序的错误传播。若消息是从一个应用程序发送的,并且在接收到消息后发生错误,那个么我们如何向后传播该错误呢。