java中使用应用服务器配置的数据库连接
2012-05-31 15:11
696 查看
适用于基本所有的应用服务器,如jboss、tomcat
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; public class ConnectionPoolManager { private static Log _log = LogFactory.getLog(ConnectionPoolManager.class); private static ConnectionPoolManager instance; private DataSource ds = null; /** * 构造函数私有以防止其它对象创建本类实例 */ private ConnectionPoolManager() { try { Context initCtx=new InitialContext(); //ChinaWiservDS portal-ds.xml 配置 ds = (DataSource) _lookup( initCtx ,"test"); } catch (NamingException e) { e.printStackTrace(); } } private ConnectionPoolManager(String jndiName) { try { Context initCtx=new InitialContext(); //ChinaWiservDS portal-ds.xml 配置 ds = (DataSource) _lookup( initCtx ,jndiName); } catch (NamingException e) { e.printStackTrace(); } } private static Object _lookup(Context ctx, String location) throws NamingException{ Object obj = null; try { obj = ctx.lookup(location); } catch (NamingException n1) { // java:comp/env/ObjectName to ObjectName if (location.indexOf("java:comp/env/") != -1) { try { String newLocation = location.replace( "java:comp/env/", ""); if (_log.isDebugEnabled()) { _log.debug(n1.getMessage()); _log.debug("Attempt " + newLocation); } obj = ctx.lookup(newLocation); } catch (NamingException n2) { // java:comp/env/ObjectName to java:ObjectName String newLocation = location.replace( "comp/env/", ""); if (_log.isDebugEnabled()) { _log.debug(n2.getMessage()); _log.debug("Attempt " + newLocation); } obj = ctx.lookup(newLocation); } } // java:ObjectName to ObjectName else if (location.indexOf("java:") != -1) { try { String newLocation = location.replace("java:", ""); if (_log.isDebugEnabled()) { _log.debug(n1.getMessage()); _log.debug("Attempt " + newLocation); } obj = ctx.lookup(newLocation); } catch (NamingException n2) { // java:ObjectName to java:comp/env/ObjectName String newLocation = location.replace( "java:", "java:comp/env/"); if (_log.isDebugEnabled()) { _log.debug(n2.getMessage()); _log.debug("Attempt " + newLocation); } obj = ctx.lookup(newLocation); } } // ObjectName to java:ObjectName else if (location.indexOf("java:") == -1) { try { String newLocation = "java:" + location; if (_log.isDebugEnabled()) { _log.debug(n1.getMessage()); _log.debug("Attempt " + newLocation); } obj = ctx.lookup(newLocation); } catch (NamingException n2) { // ObjectName to java:comp/env/ObjectName String newLocation = "java:comp/env/" + location; if (_log.isDebugEnabled()) { _log.debug(n2.getMessage()); _log.debug("Attempt " + newLocation); } obj = ctx.lookup(newLocation); } } else { throw new NamingException(); } } return obj; } /** * 返回唯一实例.如果是第一次调用此方法,则创建实例 * * @return ConnectionPoolManager 唯一实例 */ static synchronized public ConnectionPoolManager getInstance(String jndiName) { if (instance == null) { instance = new ConnectionPoolManager(jndiName); } return instance; } /** * 获取数据库连接 * @return - 返回一个可用数据库连接 */ public Connection getConnection() throws SQLException { Connection cnn=null; try { if(ds == null){ throw new Exception(); } cnn=ds.getConnection(); if (cnn == null){ throw new Exception(); } cnn.setAutoCommit(false); 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(); } } }
相关文章推荐
- java使用不同厂商驱动进行数据库连接(配置文件)
- apache服务器的使用与配置2+php如何连接数据库
- java jdbc使用配置文件连接数据库
- java jdbc使用配置文件连接数据库:
- java使用JNDI 获取weblogic配置的数据源 连接数据库
- 使用JDBC技术连接数据库(附源码)--JAVA的简单应用
- java中使用配置文件做数据库连接
- java使用JNDI 获取weblogic配置的数据源 连接数据库
- Java_JDBC连接数据库_使用读取配置文件的方式
- java使用JNDI 获取weblogic配置的数据源 连接数据库
- JAVA使用JDBC连接数据库SQL Server2012
- Java使用JDBC连接随意类型数据库(mysql oracle。。)
- java连接各种数据库配置
- HBase的安装配置和使用Java连接
- Java使用JDBC连接数据库的实现方法
- 在pring-data-jpa中使用druid进行数据库连接的配置
- 在Heroku上部署Java应用-连接数据库
- Java使用JDBC连接数据库的实现方法
- Spring-Java配置文件远程连接mongdb数据库