WebLogic WorkShop中的数据库操作事务 - JTA

原创 2006年05月24日 11:23:00

此代码或许还有不正确的地方,不是最佳方案,但是能够满足事务的提交和回滚.

workshop中新建class文件(java),名字为jta.java,代码如下:

  1. package mypackage;
  2.  
  3. import java.io.Serializable;
  4. import java.sql.*;
  5. import javax.sql.*;
  6. import javax.naming.Context;
  7. import javax.naming.InitialContext;
  8. import javax.transaction.SystemException;
  9. import javax.transaction.UserTransaction;
  10. public class jta implements Serializable
  11. {
  12.     public Context ctx;
  13.     public UserTransaction tx;
  14.     public DataSource ds;
  15.     public Connection myConn;
  16.     public Statement stmt;
  17.     public String v_sqlstr;
  18.  
  19.     public void exeJTASQL()
  20.     {
  21.         int i;
  22.         String l_sqlstr[];
  23.  
  24.         if ( v_sqlstr.trim().length() == 0 )
  25.         {
  26.             System.out.println("参数错误");
  27.         }
  28.  
  29.         l_sqlstr = v_sqlstr.split(";");
  30.         try
  31.         {
  32.             ctx = new InitialContext();
  33.             tx = (UserTransaction)ctx.lookup("javax.transaction.UserTransaction");
  34.             tx.begin();
  35.             ds = (DataSource)ctx.lookup("CMSDS");
  36.             myConn = ds.getConnection();
  37.             stmt = myConn.createStatement();
  38.             for ( i=0; i<l_sqlstr.length; i++ )
  39.             {
  40.                 if ( l_sqlstr[i].startsWith("insert") == true ||
  41.                      l_sqlstr[i].startsWith("update") == true ||
  42.                      l_sqlstr[i].startsWith("delete") == true )
  43.                 {
  44.                     System.out.println(i + ":" + l_sqlstr[i]);
  45.                     stmt.executeUpdate(l_sqlstr[i].toString().toString());
  46.                 }
  47.             }
  48.           
  49.             tx.commit();
  50.             System.out.println("数据提交");
  51.             stmt.close();
  52.             System.out.println("关闭stmt");
  53.         }
  54.         catch ( Exception e)
  55.         {
  56.             System.out.println("执行出错 message:" + e);  
  57.             try
  58.             {
  59.                 tx.rollback();
  60.                 System.out.println("事务回滚");
  61.             }
  62.             catch(SystemException se)
  63.             {
  64.                 System.out.println("回滚错误 message:" + se);
  65.             }
  66.         }
  67.         finally
  68.         {
  69.             try
  70.             {
  71.                 if ( myConn != null )
  72.                 {
  73.                     if ( !myConn.isClosed() )
  74.                     {
  75.                         myConn.close();
  76.                         System.out.println("关闭myConn");
  77.                     }
  78.                 }
  79.             }
  80.             catch(SQLException sqle)
  81.             {
  82.                 ;
  83.             }
  84.         }
  85.     }
  86.  
  87.     public void setV_sqlstr(String v_sqlstr)
  88.     {
  89.         this.v_sqlstr = v_sqlstr;
  90.     }
  91. }

在workshop中的jpf程序的Action中使用:

  1. import mypackage.jta;
  2. /**
  3.  * @jpf:action
  4.  * @jpf:forward name="success" path="newPage1.jsp"
  5.  */ 
  6. protected Forward newAction1() throws Exception
  7. {
  8.         String sqlstr;
  9.    
  10.         jta jtatest;               /*创建类jta的一个实例jtatest*/
  11.         jtatest = new jta();       /*初始化jtatest*/
  12.         /*组装sqlstr语句,注意每个语句结束的";"符号,语句必须是insert,update,delete开头*/
  13.         sqlstr = "insert into table values('aaaa',11,222,'aaaaaaa');";
  14.         sqlstr = sqlstr + "update table1 set name='高级管理员';";
  15.         sqlstr = sqlstr + "insert into table3 values('111',802,100);";
  16.         System.out.println("sqlstr:" + sqlstr);
  17.         jtatest.setV_sqlstr(sqlstr); /*将这段sql语句赋值给实例jtatest的成员变量*/
  18.         jtatest.exeJTASQL();         /*调用方法*/
  19.         return new Forward("success");
  20. }

并发控制的主要技术——封锁

上篇博客通过一些实例介绍了并发导致的数据不一致一系列问题——丢失修改、读脏数据、不可重复读 《并发操作与数据的不一致性》   本篇博客介绍如何进行并发控制。 ——封锁。   1,封锁 (1)封锁就是...
  • hanxuemin12345
  • hanxuemin12345
  • 2014年03月27日 11:32
  • 6169

Java事务--JTA原理

上一篇文章介绍了JDBC事务,JDBC可以处理单数据源的事务,满足大部分事务处理的需求,但是JDBC事务不能解决多数据源和分布式事务问题,Java平台给我们提供了解决方案--JTA。本文将探讨JTA的...
  • u010942465
  • u010942465
  • 2016年07月22日 10:44
  • 2339

Jboss下使用spring配置实现JTA全局事务管理(上)

引言: 事务(Transaction)的实现能够保证一系列数据库等操作的原子性,即要么全部都成功,要么全部都失败。保证ACID特性在许多项目中尤其是联机交易、银行、电商等项目显得尤为重要。最近因项目要...
  • xiaqingxue930914
  • xiaqingxue930914
  • 2017年05月11日 16:20
  • 199

WebLogic Workshop 中文使用手册

http://dev2dev.bea.com.cn/download/school/workshop/WorkshopCNHelp/doc/zh/core/index.html
  • leader_lx
  • leader_lx
  • 2005年11月06日 12:57
  • 2026

标题:化繁为简-使用Weblogic WorkShop8.1开发Web 服务

标题:化繁为简-使用Weblogic WorkShop8.1开发Web 服务 [评论]作者:刘国栋 (dev2dev ID: yahoo163)引言Web服务作为下一代网络服务的一个标准已经得到了大家...
  • niyboy
  • niyboy
  • 2004年11月22日 15:59
  • 1578

由JTA分布式事务Timeout值引发的锁定及解决

声明:本文思路解决受dbsnake老师指点,特此感谢!   分布式系统较传统的单点系统,具有较强的可拓展性和可用性,是目前大型应用系统普遍采用的设计模式。但是较传统系统,分布式系统无论从复杂性还是...
  • yezhouyong
  • yezhouyong
  • 2013年04月17日 23:36
  • 2909

(10) ejb学习: Jpa的JTA事务和RESOURCE_LOCAL事务

一 事务的基本概念    1 原子性 : 所有操作要么都成功,要么都失败    2 一致性 : 事务不能违反完整性约束(比如虽然事务还未提交,但仍然需要遵守约束规则,这些规则是事务提交之前而     ...
  • jianfpeng241241
  • jianfpeng241241
  • 2016年07月19日 23:27
  • 1067

我的WEBLOGIC WORKSHOP 配置

Step1:open the serviceStep2:Hostname:localhostport:7001Weblogic domain:workshopWeblogic server:cgSer...
  • Arqui
  • Arqui
  • 2004年10月21日 15:14
  • 1110

在Hibernate中分别使用JDBC和JTA事务的方法

在Hibernate中使用JDBC事务 Hibernate对JDBC进行了轻量级的封装,它本身在设计时并不具备事务处理功能。Hibernate将底层的JDBCTransaction或JTATransa...
  • gancheng
  • gancheng
  • 2008年12月14日 11:24
  • 7716

JTA (XA)事务和JDBC事务

事务简介  一般情况下,J2EE应用服务器支持JDBC事务、JTA(Java Transaction API)事务(一般由容器来进行管理)。通常,最好不要在程序中同时使用上述三种事务类型,比如在JTA...
  • lingxiao301415
  • lingxiao301415
  • 2007年09月21日 20:19
  • 1880
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WebLogic WorkShop中的数据库操作事务 - JTA
举报原因:
原因补充:

(最多只允许输入30个字)