package com.onecenter.cas.util;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
/**
* This is a public tool class for FORONLINE!
* @author chenqm
* @version 1.0
*/
public class ConnectionPoolManager
{
private Log log = LogFactory.getLog(ConnectionPoolManager.class);
private static ConnectionPoolManager instance;
private DataSource ds = null;
/**
* 构造函数私有以防止其它对象创建本类实例
*/
private ConnectionPoolManager()
{
try {
//这是获取关键
Context initCtx=new InitialContext();
// jboss 的数据库 配置文件 中的 portal-ds.xml 配置
ds = (DataSource)initCtx.lookup("java:/ChinaWiservDS");
} catch (NamingException e) {
e.printStackTrace();
}
}
/**
* 返回唯一实例.如果是第一次调用此方法,则创建实例
*
* @return ConnectionPoolManager 唯一实例
*/
static synchronized public ConnectionPoolManager getInstance()
{
if (instance == null)
{
instance = new ConnectionPoolManager();
}
return instance;
}
/**
* 获取数据库连接
* @return - 返回一个可用数据库连接
*/
public Connection getConnection()
throws SQLException
{
Connection cnn=null;
try
{
if(ds == null)
throw new Exception();
cnn=ds.getConnection();
cnn.setAutoCommit(false);
if (cnn == null)
{
throw new Exception();
}
return cnn;
}
catch (Exception ex)
{
ex.printStackTrace();
throw new SQLException("连接池连接获取异常");
}
}
/**
* 释放数据库连接
* @param cnn 欲释放回连接池的连接
* @return
*/
public void closeConnection(Connection cnn)
{
try
{
if (cnn != null)
{
cnn.close();
cnn = null;
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
Jboss中多个war包都使用 Jboss的数据库连接方式
最新推荐文章于 2019-06-30 22:15:05 发布