EJB事务管理2--bug修改记

其实上一篇《EJB事务管理--bug修改记》还有问题,链接如下http://blog.csdn.net/lele2426/article/details/8848645点击打开链接

架构EJB+IBATIS+JBOSS

主程序调用BeanA,BeanA开始事务,并调用BeanB和BeanC,提交事务。

将jboss数据库连接池设为一条连接,BeanA,BeanB,BeanC均使用EJB Bean管理事务方式,执行没问题,但是无法手动回滚事务。

将jboss数据库连接池设为n条连接,BeanA为Bean管理事务方式,BeanB,BeanC为容器管理方式,正常,且可以手动回滚事务。但是如果连接为一条则报错。


日后再仔细研究事务怎么回事,理解着可能嵌套Bean事务可以通过容器事务管理方式可以传递下去,如果父子Bean都是Bean管理,虽然通过UserTransaction可以使用一条数据库连接,但是子Bean开始的时候为自动提交,所以在父Bean里无法手工回滚。


其中ibatis事务管理记录如下。在ibatis里事务方式有三种。在sql-map-config.xml中

<transactionManager  commitRequired="true"  type="EXTERNAL">
<property name="DefaultAutoCommit" value="false"/>
<property name="SetAutoCommitAllowed" value="false"/>
<dataSource type="JNDI">
<property name="DataSource" value="${dataSource}" />
<property name="context.java.naming.factory.initial" value="${java.naming.factory.initial}" />
<property name="context.java.naming.factory.url.pkgs" value="${java.naming.factory.object}" />
<property name="context.java.naming.provider.url" value="${java.naming.provider.url}" />
</dataSource>
</transactionManager>

transactionManager元素ibatis内置的type值有JDBC,JTA,EXTERNAL。EXTERNAL表示事务管理器由应用程序负责,而不是ibatis,本架构中指有EJB自己控制。

commitRequired属性表示连接释放前必须提交或者回滚

property表示配置transactionManager配置项

dataSource表示配置数据源工厂,可以是JNDI,DBCP,SIMPLE

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值