将 AspectJ 与 iBatis、Spring 结合使用时不应用事务

发布于 2024-12-03 13:05:25 字数 1078 浏览 0 评论 0原文

我正在使用由 Axis 2 Web 服务调用的 iBatis 2.3.4。我在构建期间使用 AspectJ 编织。

我有以下 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());        
  .
  .
  .

}

当我调用 Web 服务时,我看到

--> isActualTransactionActive: false

,因为交易从未实际应用。有人将 AspectJ 与 iBatis 结合使用吗?

I am using iBatis 2.3.4 being called by an Axis 2 web service. I am using AspectJ weaving during the build.

I have the following Spring application context:

<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"/>

I have a web service operation which has a @Transactional annotation, thus:

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

}

When I call the web service I see

--> isActualTransactionActive: false

as the transaction is never actually applied. Has anyone used AspectJ in combination with iBatis?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

对你而言 2024-12-10 13:05:25

您启用了加载时编织吗?

<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 命令行参数。

Have you enabled load-time weaving?

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

EDIT:

You'll probably also need:

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

in your META-INF/context.xml (to avoid having to use the -javaagent command line parameter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文