Weblogic JTA

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.*;

/**
 * @author Richard
 *
 */
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;
  }
 }

}

转载于:https://www.cnblogs.com/marryZhan/archive/2007/10/07/916237.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值