在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();
}
好像是事务嵌套的问题,但我应该如何作了?