[转帖]Weblogic JTA_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3820 | 回复: 0   主题: [转帖]Weblogic JTA        下一篇 
lxk
注册用户
等级:上尉
经验:547
发帖:109
精华:0
注册:2011-8-18
状态:离线
发送短消息息给lxk 加好友    发送短消息息给lxk 发消息
发表于: IP:您无权察看 2011-11-9 12:31:44 | [全部帖] [楼主帖] 楼主

Weblogic下的JTA开发实例:

七个步骤:建立事务、开始事务、找到数据源、建立数据库连接,执行与数据源有关的操作,关闭连接,完成事务。下面结合代码来说明。

在建立事务之前要先创建一个上下文环境,代码如下:

String url = "t3://localhost:7001";
String user = "weblogic";
String password = "weblogic";
Properties properties = null;
try{
      properties = new Properties();
      properties.put(Context.INITIAL_CONTEXT_FACTORY,
      "weblogic.jndi.WLInitialContextFactory");
      properties.put(Context.PROVIDER_URL, url);
      if(user != null){
            properties.put(Context.SECURITY_PRINCIPAL, user);
            properties.put(Context.SECURITY_CREDENTIALS,password == null ? "" : password);
      }
      return new InitialContext(properties);
}catch (Exception e){
throw e;
}


注意红色部分的文字,不要出错。

1。建立事务

在weblogic下实现JTA的第一步是创建一个UserTransaction类的实例。UserTransaction类可以控制事务并发线程的执行。一个事务的并发线程可以是各种各样的服务。可以通过JNDI检索UserTransaction类。

ctx = getInitialContext();
tx = (UserTransaction)ctx.lookup("javax.transaction.UserTransaction");


2。开始事务。

调用UserTransaction对象的begin()方法。例如:tx.begin();

3。找到数据源。

ds = (javax.sql.DataSource)ctx.lookup("mssql");


4。建立数据库连接。

通过Tx Data Source对象ds可以建立数据库连接:

javax.sql.Connection myConn = ds.getConnection();


5。执行与资源有关的操作。

如建立语句对象,然后通过语句对象执行数据库操作。

6。关闭连接。

创建的连接用完后必须关闭。

7。完成事务

详细代码如下:

package com;
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import java.util.Properties;
import javax.transaction.*;
public class JTATest {
      public static void main(String args[]){
            DataSource ds = null;
            Context ctx = null;
            Connection myConn = null;
            UserTransaction tx = null;
            try{
                  ctx = getInitialContext();//创建一个上下文环境
                  // 建立事务
                  tx = (UserTransaction)ctx.lookup("javax.transaction.UserTransaction");
                  // 开始事务
                  tx.begin();
                  // 找到数据源
                  ds = (javax.sql.DataSource)ctx.lookup("mssql");
            }catch(Exception E){
            System.out.println("Init Error: "+ E);
      }
      Statement myStatement = null;
      ResultSet myResult = null;
      try{
            // 建立数据库连接
            myConn = ds.getConnection();
            // 执行与资源有关的操作
            myStatement = myConn.createStatement();
            myStatement.executeUpdate("INSERT INTO emp (empname,empid,job) VALUES ('John','10','sales')");
            tx.commit();
            System.out.println("Success!");
      }catch (Exception e){
      try{
            tx.rollback();
      }catch(Exception el){
}System.out.println("Error message = " + e.getMessage());
}finally{
      try{
            if(myStatement != null){
                  myStatement.close();
            }
            if(myConn != null){
                  myConn.close();
            }
      }catch(SQLException e){
      System.out.println("Error code = " + e.getErrorCode());
      System.out.println("Error message = " + e.getMessage());
}
}
}
private static Context getInitialContext() throws Exception{
      String url = "t3://localhost:7001";
      String user = "weblogic";
      String password = "weblogic";
      Properties properties = null;
      try{
            properties = new Properties();
            properties.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
            properties.put(Context.PROVIDER_URL, url);
            if(user != null){
                  properties.put(Context.SECURITY_PRINCIPAL, user);
                  properties.put(Context.SECURITY_CREDENTIALS,password == null ? "" : password);
            }
            return new InitialContext(properties);
      }catch (Exception e){
      throw e;
}
}
}




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论