Я отправляю сообщение через мое автономное приложение, которое использует 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 будет аннулирован, когда наше соединение с БД потеряно (так как мы создаем бин и устанавливаем соединение для сообщения). Но это не похоже на работу.