📄 workflowdbconnectionmanager.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 + -