jboss 事务 多个数据源

本文详细阐述了在使用JBoss EJB3定时服务时遇到的问题,即如何解决在非XA数据源下进行事务管理时出现的多个资源不允许添加的情况。通过在配置文件中调整属性,成功解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天部署一个应用时,老是报错:

2010-07-30 15:23:00,464 WARN  [com.arjuna.ats.jta.logging.loggerI18N] (main) [com.arjuna.ats.internal.jta.transaction.arjunacore.lastResource.disallow] [com.arjuna.ats.internal.jta.transaction.arjunacore.lastResource.disallow] Adding multiple last resources is disallowed. Current resource is org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@f29c65
2010-07-30 15:23:00,471 WARN  [org.hibernate.util.JDBCExceptionReporter] (main) SQL Error: 0, SQLState: null
2010-07-30 15:23:00,471 ERROR [org.hibernate.util.JDBCExceptionReporter] (main) Could not enlist in transaction on entering meta-aware object!; - nested throwable: (javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 7f000001:a11f:4c527dc4:76 status: ActionStatus.ABORT_ONLY >); - nested throwable: (org.jboss.resource.JBossResourceException: Could not enlist in transaction on entering meta-aware object!; - nested throwable: (javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 7f000001:a11f:4c527dc4:76 status: ActionStatus.ABORT_ONLY >))
2010-07-30 15:23:00,473 ERROR [ejbModule.persistence.smsmmsplatform.sms.SmsIsagMSP2LinkConfigDaoImpl] (main) find failed:

 

上网查了一下,报错的原因是因为一个事务里面要操作两个数据源的数据。但是我查了一下应用,应用里的配置文件只指向了一个数据源。

跟相关同事沟通后,才发现,原来这个应用有用到EJB3的定时服务。EJB3的定时服务的实现貌似跟jboss的TimerService有联系,而JBoss的TimerService实现采用数据库来保存timer信息,默认采用hypersonic的数据库,非xa的datasource,同时我们的数据源也是非xa的datasource,这样ts是没有办法把两个非xa的datasource纳入一个事务管理中的。

 

解决方法:

/server/default/conf文件夹中jbossjta-properties.xml文件里    <properties depends="arjuna" name="jta">下面增加子节点<property name="com.arjuna.ats.jta.allowMultipleLastResources" value="true"/>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值