<Context path="/CaseStudy01" docBase="CaseStudy01" debug="0"
reloadable="true" crossContext="true" cookie="true">
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="casestudy01.localhost_log." suffix=".txt"
timestamp="true"/> <Resource name="jdbc/mySQLDB" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/mySQLDB">
<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>5000</value>
</parameter>
<!-- MySQL dB username and password for dB connections -->
<parameter>
<name>username</name>
<value>cs01</value>
</parameter>
<parameter>
<name>password</name>
<value>cs01</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/cs01?autoReconnect=true</value>
</parameter>
</ResourceParams>
</Context>在程序中InitialContext ic = null;
DataSource ds = null;
ic = new InitialContext();
ds = (DataSource)ic.lookup("java:comp/env/jdbc/mySQLDB");
reloadable="true" crossContext="true" cookie="true">
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="casestudy01.localhost_log." suffix=".txt"
timestamp="true"/> <Resource name="jdbc/mySQLDB" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/mySQLDB">
<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>5000</value>
</parameter>
<!-- MySQL dB username and password for dB connections -->
<parameter>
<name>username</name>
<value>cs01</value>
</parameter>
<parameter>
<name>password</name>
<value>cs01</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/cs01?autoReconnect=true</value>
</parameter>
</ResourceParams>
</Context>在程序中InitialContext ic = null;
DataSource ds = null;
ic = new InitialContext();
ds = (DataSource)ic.lookup("java:comp/env/jdbc/mySQLDB");
等待
InitialContext ic = null;
DataSource ds = null;
try{
ic = new InitialContext();
ds = (DataSource)ic.lookup("java:comp/env/jdbc/mySQLDB");
} catch(NamingException ne){
throw new Exception("InitialContext取得失敗", ne);
}
Connection con = ds.getConnection();
你的应用在e:/mysite
访问路径:http://localhost:8080/mshome
则需要做如下工作,在d:/tomcat/conf/Catalina/localhost目录下新建mshome.xml
内容:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="e:/mysite" path="/mshome" privileged="true" reloadable="true">
<Resource name="ConnPool"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="ConnPool">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<!-- Maximum number of dB connections in pool. Make sure you
configure your mysqld max_connections large enough to handle
all of your db connections. Set to 0 for no limit.
-->
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<!-- Maximum number of idle dB connections to retain in pool.
Set to 0 for no limit.
-->
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<!-- Maximum time to wait for a dB connection to become available
in ms, in this example 10 seconds. An Exception is thrown if
this timeout is exceeded. Set to -1 to wait indefinitely.
-->
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<!-- MySQL dB username and password for dB connections -->
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<!-- Class name for the old mm.mysql JDBC driver - uncomment this entry and comment next
if you want to use this driver - we recommend using Connector/J though
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
-->
<!-- Class name for the official MySQL Connector/J driver -->
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
<!--
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
-->
</parameter>
<!-- The JDBC connection url for connecting to your MySQL dB.
The autoReconnect=true argument to the url makes sure that the
mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
connection. mysqld by default closes idle connections after 8 hours.
-->
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/mshome?autoReconnect=true</value>
<!--
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mshome</value>
-->
</parameter>
</ResourceParams>
</Context>
修改web.xml
增加:
<resource-ref>
<res-ref-name>ConnCenter</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>编写类(注意ConnPool和上面的关系):
public static synchronized Connection getConnection() throws Exception {
DataSource ds = null;
Connection conn = null;
logger.info("JNDI 连接数据库");
try {
Context initCtx = new javax.naming.InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
ds = (DataSource) envCtx.lookup("ConnPool");
conn = ds.getConnection();
logger.info("GET sql Connection scuess : conn = " + conn);
return conn;
} catch (SQLException ex) {
logger.error("get sql Connection failure : " + ex.getMessage());
throw ex;
} catch (NamingException ex) {
throw ex;
}
}