分布式跨数据库的事务处理要用到oracle.jdbc.xa.client.OracleXADataSource类型的数据源。我们要把数据源注册到jndi服务上去。注册的xml文件名称为oracle-xa-ds.xml:文件格式如下:



































可直接把该文件放置到deploy目录下面。Jboss中带有示例程序目录位置为/docs/examples/jca,
把上面的xml文件部署完毕后还有一个地方需要修改那就是/server/default/conf目录下的jboss-service.xml配置文件中有:






如果你使用的jdbc驱动version>=10.0此处可以不修改,如果jdbc驱动 version<10.0,那就要把pad属性值设置为true;这样你就可以写代码编辑分布式事务处理了。
首先要设置上下文属性值:








运行上面这段代码你可能会得到这样的异常:
Java.lang.RuntimeException: UT factory lookup failed
这也涉及到你所使用的jboss版本的问题:
Version>=4.0.2:就使用org.jboss.naming.NamingContextFactory 来代替org.jnp.interfaces.NamingContextFactory.
Version<4.0.2:就使用jboss自带的jndi.properties文件进行配置。这样就可以进行分布式的事务处理了。
注意:UserTransaction中不能再嵌套其他的任何事务,否则会抛出异常。Jta.jar包要特别留意,如果按照以上配置仍不能运行,那就把环境中存在的jta.jar包删除。该事务管理的实现对上下文环境要求较高,环境中不要引入没有用处的jar包,否则可能会引起运行不成功!