你如果需要使用它则必须在WebShpere上面配置好数据库连接池(不可以使用自己的)
然后在程序当中
Context ctx = new InitialContext();
UserTransaction trans = (UserTransaction)ctx.lookup("java:comp/UserTransaction");//这个名称我也不太记得,可以看看WebSphere的资料
trans.begin();然后再
DataSource ds = (DataSource)ctx.lookup(jndiNameOfDataSource);
Connection conn = ds.getConnection();
在中间不需要setAutoCommit,也不需要commit rollbackDataSource ds2 = (DataSource)ctx.lookup(jndiNameOfDataSource);
Connection conn2 = ds.getConnection();最后trans.commit()或者rollback就可以了
这个是J2EE一般的用法,应该是可以的

解决方案 »

  1.   

    UserTransaction trans = (UserTransaction)ctx.lookup("java:comp/UserTransaction");楼上的大老,java:comp/UserTransaction准不准确,我这两天一直不知道transaction从哪里得到,和datasource之间怎样关系起来的?
      

  2.   

    transaction(事务上下文),一种是从jndi名得到,另一种是在bean管理ejb中,取得ejb的事务事务和datasource两回事,但如果需要使用jta,应当把connection放在事务之中,即事务开始和结束之间进行数据库操作。而从池中取得数据源则不需要放在事务中。
      

  3.   

    多谢2楼的老大,有空给我讲一下从jndi获得的trans怎样管理datasource阿,:)
      

  4.   

    to:lydong(西瓜水) 
    那在websphere5 中建立一个jdbc资源,并且使用oracle.jdbc.xa.client.OracleXADataSource(不是oracle.jdbc.driver.OracleDriver)实现,并在这个jdbc资源下建立两个数据源,分别连接两个数据库.
    这个时候的事物怎么处理?按照你的意思是不是从池中取得数据源则不需要放在事务中?