2011-09-05 39 views
1

我正在使用由Axis 2 Web服務調用的iBatis 2.3.4。我在構建期間使用AspectJ編織。在使用AspectJ與iBatis一起使用時沒有事務處理,Spring

我有以下的Spring應用程序上下文:

<bean id="dataSource" class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy"> 
    <property name="targetDataSource"> 
     <ref bean="dataSourceImpl" /> 
    </property> 
</bean> 

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
<property name="dataSource" ref="dataSource"/> 
</bean> 

<tx:annotation-driven transaction-manager="transactionManager" mode="aspectj" proxy-target-class="true"/> 

我有有一個@Transactional註解Web服務操作,即:

@Override 
@Transactional(propagation=Propagation.REQUIRED) 
public void doStuff() { 
    System.out.println("--> isActualTransactionActive: " + TransactionSynchronizationManager.isActualTransactionActive());   
    . 
    . 
    . 

}

當我打電話我看到的網絡服務

- > isActualTransactionActive:false

因爲事務從未實際應用。有沒有人使用過AspectJ和iBatis?

回答

0

您是否啓用了加載時織入?

<context:load-time-weaver aspectj-weaving="on"/> 

編輯:

你可能還需要:

<?xml version="1.0" encoding="UTF-8"?> 
<Context> 
    <Loader loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" /> 
</Context> 
在META-INF/context.xml的

(以避免使用-javaagent命令行參數

+0

這就是問題所在。謝謝。現在有一個問題通過了-javaagent:spring-agent-2.5.5.jar arg for Tomcat。有沒有更簡單的方法來傳遞它,而不是使用虛擬機arg? – Reimeus

相關問題