Hi all,
I am using JTA transaction management to achieve global transaction support in my project. I am using Aspectj to log the error message to my log file. Every thing is working fine if I am not using any transaction. But, in case of transaction it is not calling/going inside the @AfterThrowing method.
If I am using @Transaction to save the data, the exception thrown at DAO/BO is not going to Catch block.Code:@AfterThrowing(pointcut = "businessService() || dataAccessOperation()", throwing = "throwable", argNames = "joinPoint, throwable") public void afterExceptions(JoinPoint joinPoint, Throwable throwable) { logger.error(throwable.getMessage(), throwable.getCause()); } Service Layer Class method: @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @Override public boolean saveDetails(final TSOEmployee tsoEmp, final IqScopeSync iqScop) throws BOException { // TODO Auto-generated method stub try { welcomeDao.saveTsoEmployee(tsoEmp); welcomeDao.saveIqScopeSync(iqScop); } catch (DAOException e) { // TODO: handle exception throw new BOException(e.getMessage(), e.getCause()); } return true; } DAO Class method: @Override public void saveTsoEmployee(TSOEmployee tsoEmp) throws DAOException { // TODO Auto-generated method stub try { getHibernateTemplateCu().save(tsoEmp); //throw new DAOException("TESTING LOG PRINT"); } catch (RuntimeException e) { // TODO: handle exception throw new DAOException(e.getMessage(), e.getCause()); } } @Override public void saveIqScopeSync(IqScopeSync iqScop) throws DAOException { // TODO Auto-generated method stub try { getHibernateTemplateGodb().save(iqScop); } catch (RuntimeException e) { // TODO: handle exception throw new DAOException(e.getMessage(), e.getCause()); } }
The @Before and @After advice is working fine.
Please suggest whether I am doing any mistake or give me some solutions to log the error message.


Reply With Quote
