发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA

j2ee中用户管理事务边界的问题?

    
2004-07-25 09:35
赞助商链接

在ejb中使用用户管理事务边界的时候,我们可以通过如下方式
UserTransaction tx =(UserTransaction)new InitialContext().lookup("java:comp/UserTransaction");
tx.begin()
...
tx.commit();

但是用SessionContext.getUserTransaction()也能得到UserTransaction,也可以按上述方式控制控制事务边界,不知道这两种方式的UserTansaction有什么区别?在weblogic上看第一种方式的对象类型为weblogic.transaction.internal.ClientTransactionManagerImpl,而第二种类型为weblogic.transaction.internal.ServerTransactionManagerImpl。

还有在用用户管理事务边界时,如方法m1,m2用了用户管理事务边界,在m3中如何将m1和m2作为原子操作?
下面的方式会出错
m3(){
UserTransaction tx =(UserTransaction)new InitialContext().lookup("java:comp/UserTransaction");
tx.begin()
m1();
m2();
tx.commit();
}
好像是事务嵌套的问题,但我应该如何作了?

mep
2004-07-25 10:42

客户端事务管理和服务器端事务管理的一点区别是,在客户端,启动事务要向远程服务器端的事务管理器注册该事务;而服务器端的事务可能只要在本地注册就可以了。
至于事务嵌套问题,目前绝大多数事务管理器都不支持嵌套事务。碰到这种情况,一,使用CMT,CMT会自动地挂起原来的事务上下文,启动新事务,或就在原来的事务上下文中执行。二,另一种方法是判断当前的事务上下文的状态(getStatus()),如果已经启动了一个事务,就把他挂起,另行启动一个新事务。

2004-07-25 13:13

在客户端,启动事务要向远程服务器端的事务管理器注册该事务。那这种注册是透明的吗?

mep
2004-07-25 19:20

当然透明

2006-08-10 06:31

能说明下客户端怎样向远程服务注册事务的吗,然后具体的使用

事务架构     

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com