У меня есть несколько EJB, которые используют Hibernate для сохранения данных в базе данных. У меня есть густой клиент Swing, который разговаривает с этими EJB. Клиент ничего не знает о базе данных (без диска-драйвера).Правильная обработка исключений EJB - ClassNotFoundException от клиента
Во время одной транзакции может быть выбрано исключение Hibernate ConstraintViolationException. Я перехватывать все исключения и завернуть их в EJBException так:
catch(HibernateException e) {
e.printStackTrace();
throw new EJBException(e);
}
Проблема я получаю в том, что, когда исключение unmarshalled по JBoss заклинателя на стороне клиента, ClassNotFoundException выбрасывается (для PSQLException), т.к. у клиента нет контейнера jquery sql в пути к классам.
Я изменил это приложение, чтобы всегда передавать исключенное исключение в конструктор ejbexception, чтобы он мог иметь историю трассировки стека. Теперь я нахожу, почему оригинальные разработчики этого не сделали.
В этот момент я вижу два варианта: либо включить баннер драйвера postgres с клиентом, либо удалить переданное исключение из конструктора EJBException. Мне любопытно, есть ли у кого-либо другие предложения, а также как другие обрабатывают исключения в своих EJB?
+1 для «клиента не нужно знать технические детали». Я думаю, что уникальный подход числа ошибок совершенно не нужен. Все клиенты должны знать, что «произошла ошибка сервера». Журналы сервера должны предоставить всю необходимую информацию для устранения неполадки. – ChssPly76
Когда у вас много пользователей, и они не всегда своевременны или точны в своих отчетах об ошибках, и у вас нетривиальная n-ярусная архитектура, я считаю, что эти номера ошибок действительно работают и далеки от ненужных. Объем работы по реализации тривиален. – djna
Мой плохой. Я не имел в виду «лишнее», как «бессмысленное» :-) Мы пробовали этот подход и обнаружили, что фактическое число ошибок обратило нас примерно на 0,5% всех случаев; остальные были сообщены как «какая-то ошибка» или «окно всплыло». Но, возможно, ваши пользователи лучше, чем мои - я могу вам только позавидовать :-) – ChssPly76