这个配置弄了大概我一个上午。以前用tomcat 5.后来配置还是出了问题,原因是很简单的一个“r”没有写。
配置方法如下:
在tomcat安装目录下conf目录下的context.xml加入
<Resource
name="jdbc/test" auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/lucene"
username="root" password="admin"
maxActive="30" maxIdle="10" maxWait="-1"/>
第一步好了,然后就是加入dbcp包和mysql驱动包,2个包复制到lib目录下。
三:修改项目中的web.xml文件
加入
<resource-ref>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
最后就是测试
<%@page contentType="text/html; charset=GBK"%>
<%@page import="java.sql.*" %>
<%@page import="javax.naming.*" %>
<%@page import="javax.sql.DataSource" %>
<HTML>
<HEAD>
<TITLE>JNDI测试</TITLE>
</HEAD>
<BODY>
<%
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/test");
Connection conn = ds.getConnection();
out.println(conn.toString());
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
%>
</BODY>
</HTML>
如果输出:
jdbc:mysql://localhost:3306/lucene, UserName=root@localhost, MySQL-AB JDBC Driver
这个测试不能再应用程序中,只能在web容器中才可以。
刚测试了一下,如果想测试多个数据源的话,在context.xml要加入
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
使得数据源交由dbcpfactory管理。
如果想使用dbcp自动回收数据库连接资源的话,
可以在后面增加一条:
removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
removeAbandonedTimeout 超时单位为秒,设置是需设置相当才行