下面的代码能将sessionA和sessionB中的两方法作为同一事务处理。 try{ InitialContext initial=new InitialContext(); UserTransaction ut=(UserTransaction)initial.lookup("java:comp/UserTransaction"); //1 SessionAHome aHome=(SessionAHome)initail.lookup("SessionA"); //2 SessionA a=aHome.create(); SessionBHome bHome=(SessionBHome)initail.lookup("SessionB"); //2 SessionB b=bHome.create();
ut.begin(); //3 a.fa(); b.fb(); ut.commit(); //4
} catch(.....){ ut.rollback(); }
1处得到一UserTransaction对象ut,2处分别得到两个sessionbean的对象,但是ut,与a,b之间并没有关联,那当3处ut.begin();时,jts如何知道将事务对象在a.fa()中所操作的资源管理器与b.fb()中所操作的资源管理器之间传播,又如何当4处ut.commit()时,对这两个资源管理器进行两阶段提交,这其中有什么澳妙吗?
|