zoukankan      html  css  js  c++  java
  • 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;
      }
     }

    }

  • 相关阅读:
    今日进度
    2020年9月29日Java学习日记
    2020年7月28日Java学习日记
    2020年10月13日Java学习日记
    2020年8月30日Java学习日记
    2020年10月10日Java学习日记
    2020年8月27日Java学习日记
    2020年10月6日Java学习日记
    2020年7月29日Java学习日记
    2020年10月3日Java学习日记
  • 原文地址:https://www.cnblogs.com/marryZhan/p/916237.html
Copyright © 2011-2022 走看看