2012-05-14 6 views
1

Я использую spring, oracle и jotm (в tomcat), чтобы использовать фиксацию 2PC. Ниже приведена конфигурация пружины.JOTM getTransactionManager(). GetTransaction() return null

<aop:config> 
    <aop:pointcut id="defaultOperation" 
     expression="execution(* jatis.avantrade.foundation.model.engine.*.*(..))" /> 
    <aop:advisor advice-ref="defaultTrxAdvice" pointcut-ref="defaultOperation" /> 
</aop:config> 

<tx:advice id="defaultTrxAdvice" transaction-manager="trxManager"> 
    <tx:attributes> 
     <tx:method name="check*" read-only="true" /> 
     <tx:method name="get*" read-only="true" /> 
     <tx:method name="is*" read-only="true" /> 
     <tx:method name="load*" read-only="true" /> 
     <tx:method name="select*" read-only="true" /> 
     <tx:method name="count*" read-only="true" /> 
     <tx:method name="search*" read-only="true" /> 
     <tx:method name="list*" read-only="true" /> 
     <tx:method name="*" rollback-for="Throwable" /> 
    </tx:attributes> 
</tx:advice> 

<bean id="txImpl" class="org.springframework.transaction.jta.JotmFactoryBean" /> 




<bean id="trxManager" 
    class="org.springframework.transaction.jta.JtaTransactionManager"> 
    <property name="transactionManager" ref="txImpl" /> 
    <property name="userTransaction" ref="txImpl" /> 
</bean> 

на вопросы, когда я называю getTransactionManager().getTransaction() с помощью объекта JOTM, она возвращает нуль.

Current cur = (Current) ContextHelper.getApplicationContext() 
        .getBean("txImpl"); 
      try { 
       log.error("cur : " cur.getTransactionManager().getTransaction()); 
     } catch (SystemException e) { 
      log.error(e.getMessage(), e); 
     } 

Как исправить эту проблему?

ответ

1

Один из подходов может заключаться в использовании Apache TomEE, который является Tomcat с уже интегрированным TransactionManager. Напишите простой весенний фасоль Spring, чтобы передать Spring TransactionManager и UserTransaction.

Оба может быть оторвался от JNDI:

  • java:comp/TransactionManager
  • java:comp/UserTransaction

что завод будет просто заменить одну из выше конфигураций:

<bean id="txImpl" class="org.foo.MyTransactionFactoryBean" /> 

Хотя, очень вероятно, что весна уже имеет фактор y bean для поиска TransactionManager через эти имена.

 Смежные вопросы

  • Нет связанных вопросов^_^