Я только что реализовал обработку исключений для ограничения уникальности объекта JPA.Он работает так, как я хочу, но при запуске выдает обработанные исключения в лог-файл контейнера.
- Объект JPA управляется SLSB (Service Façade).Фасад службы вызывается из другой SLSB, которая предоставляет возможности удаленного взаимодействия на основе JAX-RS.
- В Фасаде службы операции EntityManager обернуты в блок try-catch, обнаружив причину уникальногоограничение-нарушение.Затем он выбрасывает пользовательский флажок
ApplicationException
. - . REST-компонент перехватывает
ApplicationException
и выбрасывает пользовательский флажок BadRequestException
. - .
ExceptionMapper
выводит BadRequestException
вудаленный клиент.
Это все работает хорошо.Часть, которую я не понимаю: (обработанные) исключения регистрируются в лог-файле контейнера (в комплекте с длинной трассировкой стека):
[#|2010-09-29T18:49:39.185+0200|WARNING|glassfish3.0.1|org.eclipse.persistence.session.file:/Users/hank/NetBeansProjects/CoreServer/build/classes/_coreServerPersistenceUnit|_ThreadID=30;_ThreadName=Thread-1;|
Local Exception Stack:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry....
....
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry....
и от выброса исключения BadRequestException:
[#|2010-09-29T18:49:39.336+0200|WARNING|glassfish3.0.1|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=30;_ThreadName=Thread-1;|A system exception occurred during an invocation on EJB ShopperResource method public javax.ws.rs.core.Response mvs.gateway.ShopperResource.create(javax.xml.bind.JAXBElement)
javax.ejb.EJBException
at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5119)
....
Caused by: mvs.api.exception.BadRequestException: mvs.api.exception.MvsCause: Field 'MSISDN' must be unique!
Это так и должно быть?Я думал, так как я обработал исключения, они не будут сброшены в журнал?