|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
在java中有如下三种事务,
二三种都支持分布式事务,但只支持Java环境下的分布式事务。 下面讨论如何在Java程序里实现分布式事务,即在同一个事务里访问多个数据源。实际上就是如何使用JTA. 这里假设使用Oracle数据库,使用WebLogic部署应用,所要做的是如下几步: 1. 配置 1.1 确认数据库支持分布式事务 - oracle是支持分布式事务的,JDBC驱动也支持分布式事务 1.2 在WebLogic里配置DataSource 1.2.1. 配置连接池,注重这里应该选择驱动是Thin XA而不是Thin 1.2.2. 配置数据源,使用前面配好的XA的连接池 2. 程序实现 2.1. 实现自己的Xid import javax.transaction.xa.*; public class MyXid implements Xid { protected int formatId; protected byte gtrid[]; protected byte bqual[]; public MyXid() { } public MyXid(int formatId, byte gtrid[], byte bqual[]) { this.formatId = formatId; this.gtrid = gtrid; this.bqual = bqual; } public int getFormatId() { return formatId; } public byte[] getBranchQualifier() { return bqual; } public byte[] getGlobalTransactionId() { return gtrid; } } 2.2. 通过JNDI找到WebLogic中配置好的数据源 public XADataSource getXADataSource() throws Exception { InitialContext ctx = new InitialContext( mgr.getProps()); XADataSource ds = (XADataSource)ctx.lookup(\"jdbc/xaDS\"); return ds; } 2.3. 使用XADataSource得到XAConnection,使用XAConnection得到XAResource,基于XAResource进行详细数据访问。假如我们这里lookup多个XADataSource,然后得到多个XAResource,就可以实现多数据源的事务控制。 XADataSource xaDS; XAConnection xaCon; XAResource xaRes; Xid xid; Connection con; Statement stmt; int ret; xaDS = getXADataSource(); xaCon = xaDS.getXAConnection(); xaRes = xaCon.getXAResource(); con = xaCon.getConnection(); stmt = con.createStatement(); xid = new MyXid(100, new byte[]{0x01}, new byte[]{0x02}); try { xaRes.start(xid, XAResource.TMNOFLAGS); stmt.executeUpdate(\"insert into test_table values (100)\"); xaRes.end(xid, XAResource.TMSUCCESS); ret = xaRes.prepare(xid); if (ret == XAResource.XA_OK) { xaRes.commit(xid, false); } } catch (XAException e) { e.printStackTrace(); } finally { stmt.close(); con.close(); xaCon.close(); } 返回类别: 教程 上一教程: JDBCTM 指南:入门 下一教程: java工具之javadoc和jar浅学 选择自 shaobotao 的 Blog 您可以阅读与"Java分布式事务概念与实现示例"相关的教程: · 利用RMI实现JAVA分布式应用 · 面向对象的设计与实现的一些基础但重要的概念 · Java中数据库事务处理的实现 · "Java中可复用事件处理的设计与实现"代码 · 基于JAVA技术的搜索引擎的研究与实现 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |