Tomcat 数据源学习笔记
Tomcat 数据源学习笔记
条件1:数据库驱动程序的jar包必须放在Tomcat的common/lib的目录下。
条件2: web应用的WEB-INF/lib目录下不存在Tomcat的common/lib目录下的jar包(Tomcat的配置手册说只需不存在Jakarta-Commons DBCP 1.0.jar,Jakarta-Commons Collections 2.0.jar, Jakarta-Commons Pool 1.0.jar这三个jar包就可以了,但是测试的时候发现不只是这三个jar包,其他包会造成未知的连接错误,所以最好WEB-INF/lib目录下不存在common/lib目录下的jar包)。
配置步骤1:配置server.xml文件的数据源(需要对server.xml配置文件有一定了解,这里以Mysql为例)
<Context path="/DBTest" docBase="DBTest"
debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt"
timestamp="true"/>
<Resource name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/TestDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<parameter>
<name>username</name>
<value>javauser</value>
</parameter>
<parameter>
<name>password</name>
<value>javadude</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/test?autoReconnect=true</value>
</parameter>
</ResourceParams>
</Context>
配置步骤2:配置web.xml文件的数据源引用(需要注意数据源引用的配置位置)
<web-app>
………
<!—其他配置在上面完成,以下是配置数据源引用-->
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
配置步骤3:编写数据库连接类DB.java,完成数据库连接。
package org.test;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public class DB
{
//数据源
private static DataSource ds;
/**
* 创建数据源方法
* @throws Exception
*/
public static void createDataSource()throws Exception
{
try
{
Context context = new InitialContext();
if (context == null)
{
throw new Exception("create context failed!");
}
ds = (DataSource)context.lookup("java:comp/env/java/TestDB");
//创建失败时,再进行一次
if (ds == null)
{
Thread.sleep(2000);
ds = (DataSource)context.lookup("java:comp/env/java/TestDB");
if (ds == null)
{
throw new Exception("get datasource failed!");
}
}
}
catch(NamingException ne)
{
throw ne;
}
catch(Exception e)
{
throw e;
}
}
/**
* 获取数据库连接方法
* @return conncetion
*/
public static Connection getConnection()
{
try
{
Connection con = null;
if (ds == null)
{
createDataSource();
}
con = ds.getConnection();
return con;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
}
到此,所有配置操作完成,剩下的就需要你编写javabean来进行数据库操作了 :)
QQ:99681004