Fala aê, pessoal.
Eu queria criar interceptadores para interceptar as exceções do meu sistema, dar um rollback na transação corrente e transformar as exceções em JSON.
Primeiro fiz um interceptador para controlar a parte de transação:
public class EntityManagerInterceptor extends HandlerInterceptorAdapter {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
EntityManager entityManager = JPAEntityManagerFac.createEntityManager();
entityManager.getTransaction().begin();
request.setAttribute("entityManager", entityManager);
return true;
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
EntityManager entityManager = (EntityManager) request.getAttribute("entityManager");
if(ex == null)
entityManager.getTransaction().commit();
else
entityManager.getTransaction().rollback();
}
}
Depois fiz um interceptador para controlar a parte de exceção:
public class ExceptionInterceptor extends HandlerInterceptorAdapter {
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
if(ex != null)
HttpJsonResponse.prepareResponse(response, ExtDataPacketFac.createFailPacket(ex));
}
}
Tudo parece funcionar bem, porém com um problema. Mesmo eu trasnformando a exceção em JSON ela não é anulada, ai o TOMCAT fica escrevendo o seguinte erro no console: [SERVER] A exceção x não foi tratada.
Existe alguma forma de eu anular a exceção que eu recebo no interceptador e estou convertendo para JSON?
Conto com a ajuda de vocês.