2013-03-15 6 views
0

Недавно я работал над кодом, который периодически импортирует некоторые данные из старой базы данных, которую моя компания находится в процессе поэтапного отказа. Я установил пул соединений на стеклянную рыбку для старой базы данных, которую затем добавляю в качестве источника данных через аннотацию @Resource. Он работает хорошо, за исключением случаев, когда база данных недоступна. В этой ситуации сервер выгружает всю трассировку стека в журналы, связанные с javax.resource.spi.ResourceAllocationException. Это имеет смысл, учитывая, что поиск ресурсов бросает SQLException (связанный с невозможностью доступа к базе данных). То, что я не понимаю, - это то, где можно поймать и обработать исключение, поскольку оно действительно происходит за пределами bean-компонента.Обработка исключений в EJB при использовании @Resource

Есть ли способ для EJB обрабатывать исключения, возникающие при вводе ресурсов в него?

ответ

1

Если вам нужно, что уровень контроля/восстановление через соединение, создать его вручную вместо впрыскивания:

try { 
    Context ctx = new InitialContext(); 
    DataSource ds = (DataSource) ctx.lookup("jdbc/myDBResource"); 
    Connection connection = ds.getConnection(); 
    ... 
} 
catch (Exception exc) { 
    ... 
} 

additional material for "old style" connection management См.

+0

Ручное строительство - это то, чего я бы хотел избежать. Однако это, по-видимому, указывает на то, что наилучшим подходом было бы просто получить ресурс через JNDI в коде, который ему нужен, и обработать ошибку там. – Elk

Смежные вопросы