• 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;
      }
     }

    }

  • 相关阅读:
    lsblk---列出所有可用块设备的信息,
    blkid---对系统块设备信息查询
    du---是对文件和目录磁盘使用的空间查看
    strings---对象文件或二进制文件中查找可打印的字符串
    which---查找并显示给定命令的绝对路径
    whereis---定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
    cd---切换工作目录
    cp---复制文件
    ls---显示文件目录各项信息
    pwd---以绝对路径的方式显示用户当前工作目录
  • 原文地址:https://www.cnblogs.com/marryZhan/p/916237.html
Copyright © 2020-2023  润新知