Spring Transaction Manager - PullRequest
       13

Spring Transaction Manager

0 голосов
/ 23 марта 2010

У меня есть приложение 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>

Ответы [ 2 ]

0 голосов
/ 23 марта 2010

Во-первых, почему бы вам не использовать встроенные менеджеры транзакций? Они, безусловно, более стабильны, чем у вас.

Во-вторых, вы можете сбросить RuntimeException Я думаю, или даже позволить всплыть исключению.

0 голосов
/ 23 марта 2010

Вы можете повторно выдать исключение после регистрации. Это заставит Spring сделать откат.

...