⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 workflowdbconnectionmanager.java

📁 公司自己开发的工作流引擎
💻 JAVA
字号:
package cn.com.iaspec.workflow.db;

import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import org.apache.log4j.*;

/**
 *
 * <p>Title:工作流数据库连接池管理</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: IASPEC Technologies</p>
 * @author xiesonglin
 * @version 1.0
 */

public class WorkflowDBConnectionManager
    extends DBConnectionManager{
  private static WorkflowDBConnectionManager instance=null;
  private DBConnectionPool pool;
  private static String DATASOURCE_JNDI_NAME="WorkflowDS";
  private DataSource dataSource=null;
  private static Logger logger=Logger.getLogger(WorkflowDBConnectionManager.class);

  /**
   * Use singleton pattern, only return one instance of DBConnectionManager.
   * @return DBConnectionManager
   */
  public static WorkflowDBConnectionManager getInstance(){
    logger.debug("begin getInstance...");
    //System.out.println("begin getInstance...");
    if(instance==null){
        //System.out.println("create Instance...");
      instance=new WorkflowDBConnectionManager();
      System.out.println("create Instance..success.");
    }
    //System.out.println("create Instance..success!!!!");
    return instance;
  }

  /**
   * Get a connection
   * @return Connection
   * @throws SQLException this method
   */
  public synchronized Connection getConnection()
      throws SQLException{
    logger.debug("begin WorkflowDBConnectionManager getConnection...");
    System.out.println("begin WorkflowDBConnectionManager getConnection...");
    long startTime=System.currentTimeMillis();
    Connection conn=null;
    if(this.useJNDIConnection){
      conn=dataSource.getConnection();
    }
    else{
      conn=pool.getConnection();
    }
    this.addConnectCount();
    logger.info("Execution getConnection time: "+(System.currentTimeMillis()-
        startTime)+" ms.");
    System.out.println("Execution getConnection time: "+(System.currentTimeMillis()-
        startTime)+" ms.");
    return conn;
  }

  /**
   * Free a connection
   * @param con connection
   * @throws SQLException this method
   */
  public void freeConnection(Connection con)
      throws SQLException{
    pool.freeConnection(con);
  }

  private WorkflowDBConnectionManager(){
    logger.debug("begin WorkflowDBConnectionManager...");
    try{
      init();
    }
    catch(Exception ex){
      //ex.printStackTrace();
      logger.info(ex.toString());
    }
  }

  private void init()
      throws DbException{
    ConnectProperties prop=GetConnectionProperty.getWorkflowDBProperty();
    String driver="";
    String url="";
    String user="";
    String password="";
    //dataBaseType=prop.getDataBaseType();
    //dataBaseType="MSSQLSERVER";
    int maxConn=10;
    if(prop!=null){
      driver=prop.getDbDriver();
      url=prop.getDbUrl();
      user=prop.getDbUser();
      password=prop.getDbPassword();
      maxConn=10;
      if(prop.getMaxConnect()!=null&&prop.getMaxConnect().length()>0){
        maxConn=Integer.parseInt(prop.getMaxConnect());
      }
      if(prop.getJNDIName()!=null&&prop.getJNDIName().length()>0){
        DATASOURCE_JNDI_NAME=prop.getJNDIName();
      }
      if(prop.getUseJNDI()!=null&&prop.getUseJNDI().equals("false")){
        this.useJNDIConnection=false;
      }
      else{
        this.useJNDIConnection=true;
      }
    }
    if(this.useJNDIConnection){
      try{
        long startTime=System.currentTimeMillis();
        Context ctx=new InitialContext();
        logger.info("Execution new InitialContext time: "+(System.currentTimeMillis()-
        startTime)+" ms.");
        startTime=System.currentTimeMillis();
        this.dataSource=(DataSource)ctx.lookup(DATASOURCE_JNDI_NAME);
        logger.info("Execution lookup "+DATASOURCE_JNDI_NAME+" time: "+(System.currentTimeMillis()-
        startTime)+" ms.");
      }
      catch(NamingException ex){
        logger.info("Catch a NamingException: "+ex.toString());
        throw new DbException("can't lookup datasource, jndiname=["+
            this.DATASOURCE_JNDI_NAME+"]");
      }
      catch(Exception ex){
        //ex.printStackTrace();
        logger.info(ex.toString());
        throw new DbException(ex.getMessage());
      }

    }
    else{
      try{
        Class.forName(driver);
        pool=new DBConnectionPool(url,user,password,maxConn);
      }
      catch(ClassNotFoundException ex){
        logger.info(ex.toString());
        //ex.printStackTrace();
      }

    }
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -