У меня есть приложение j2ee, работающее на Spring Framework.Я реализую менеджер транзакций с АОП.Это работает нормально.
Когда в моем методе возникает исключение, оно обнаруживается моей конфигурацией AOP и откатывает изменения в БД.Но проблема в коде, где вы ожидаете, что ошибка не должна быть заключена в try-catch.Когда я окружаю его попыткой поймать, он не отступит.Но мне нужно делать такие вещи, как ведение журнала, когда есть ошибки, и единственное место, которое я могу себе представить, это поместить в блок catch.
public class RegisterGLogic implements BLogic
{
public BLogicResult execute()
{
BLogicResult result = new BLogicResult();
//do some db operation
return result;
}
}
вот моя конфигурация транзакции AOP
<bean id="TerasolunaDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="PrototypeDataSource" />
</bean>
<tx:advice id="transactionInterceptor" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED"
rollback-for="java.lang.Exception" />
<tx:method name="execute*" propagation="REQUIRED"
rollback-for="java.lang.Exception" />
<tx:method name="*" propagation="REQUIRED" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- AOPの設定 -->
<aop:config>
<aop:pointcut id="blogicBeans" expression="bean(*BLogic)" />
<aop:pointcut id="serviceBeans" expression="bean(*Service)" />
<aop:advisor pointcut-ref="blogicBeans" advice-ref="transactionInterceptor" />
<aop:advisor pointcut-ref="serviceBeans" advice-ref="transactionInterceptor" />
</aop:config>