在以TOMCAT为WEB服务器的项目中,怎么样才能用JNDI建立数据库连接池呢? 请按下面的步骤: ######################## 1:首先在你运行的Tomcat/common/lib/下面要添加二个包commons-dbcp-1.1.jar,commons-pool-1.1.jar ######################## ######################## 2:(关键)如何配置Tomcat/conf/server.xml呢? ######################## <Context> <Resource name="jdbc/hgjfDB" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/hgjfDB"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter> <name>maxActive</name> <value>10</value> </parameter> <parameter> <name>maxIdle</name> <value>30</value> </parameter> <parameter> <name>maxWait</name> <value>10000</value> </parameter> <parameter> <name>username</name> <value>oa</value> </parameter> <parameter> <name>password</name> <value>oa</value> </parameter> <parameter> <name>driverClassName</name> <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value> </parameter> <parameter> <name>url</name> <value>jdbc:microsoft:sqlserver://192.168.1.84:1433;DatabaseName=hgjfoa;SelectMethod=cursor</value> </parameter> </ResourceParams> </Context> ######################## 3:数据库连接池类:文件ConnectionPool.java ######################## package com.db;
import java.sql.*;
import javax.naming.*; import javax.sql.*;
/** * * <p>Title: 数据库连接池</p> * <p>Description: 用JNDI建立数据库连接池</p> * <p>Copyright: Copyright (c) 2005</p> * <p>Company: KC SoftGroup</p> * @author KaileChen * @version 1.0 */ public class ConnectionPool {
private static String JNDI_NAME = "java:comp/env/jdbc/hgjfDB"; private DataSource ds; private static ConnectionPool mySelf;
private ConnectionPool(DataSource ds) { this.ds = ds; }
public static ConnectionPool getInstance() { try { if (mySelf == null) { Context initCtx = new InitialContext(); DataSource ds = (DataSource) initCtx.lookup(JNDI_NAME); mySelf = new ConnectionPool(ds); } return mySelf; } catch (NamingException ex) { System.out.println(ex.getMessage()); throw new RuntimeException("ConnectionPool.getInstance.NamingException"); } }
public Connection getConnection(boolean autoCommit) throws SQLException {
Connection con = ds.getConnection(); con.setAutoCommit(autoCommit); return con; }
} ######################## 4:如何调用已经建立好的Connection呢? ######################## public class NewsBO { private ConnectionPool pool = null; public NewsBO() { this.pool = ConnectionPool.getInstance(); }
public Collection findAll() throws NewsException { Connection con = null; try { con = pool.getConnection(true); .............................. } catch (Exception e) { } finally { .............................. } } } ########################