第一步:
一定确保 连接池,数据库驱动 等一些jar包,在tomcat/common/lib下存在
提示: 建议使用apache-tomcat-5.5.26版本,
因为在tomcat5.5.26中的common/lib/naming-factory-dbcp.jar文件中已经包含了DBCP 连接池了。
注意1:
一定要注意DBCP的包名,你可以用winRar or Zip 打开naming-factory-dbcp.jar
来查看具体的DBCP的包路径。
以tomcat5.5.26为例:DBCP的类路径是:
org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory
如果你的DBCP类路径输入错误,将引发:
javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactor]
异常!!!
注意2:
将mysql的连接驱动拷贝到common/lib/下
第二步:
开始具体配置了!!!~ 本Web App项目的名称为 Demo
首先在 Tomcat 5.5/conf/Catalina/localhost/下建立一个与你的项目同名的xml文件。
以本测试为例: 就是 Demo.xml
在这个Demo.xml文件中输入如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/Demo" docBase="Demo" crossContext="true" debug="5" reloadable="true">
<Resource
name="jdbc/web"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
maxActive="100"
maxIdle="30"
maxwait="5000"
username="数据库de用户名"
password="数据库de密码"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/数据库名"
/>
</Context>
注意:
path:Web应用程序的上下文路径。(就是你的项目 名前加上以个 “/”)
docBase:表示的项目的具体路径,如果你的项目是在F:/Demo,这里就应该是F:/Demo
但本测试项目的文件位置,是在tomcat/webapps/Demo中,所以属性为Demo
< Resource >元素为JNDI,在lookup是要查找的资源
name: 表示JNDI在lookup是输入的 资源名
开始测试: 在Demo项目中建立 index.jsp 并输入如下内容
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%!
final String JNDINAME = "java:comp/env/jdbc/web" ;
%>
<%
Connection conn = null ;
try
{
// 初始化查找命名空间
Context ctx = new InitialContext() ;
out.println("InitialContext is OK !<BR>") ;
DataSource ds = (DataSource)ctx.lookup(JNDINAME) ;
// 找到DataSource
out.println("DataSource is OK !<BR>") ;
conn = ds.getConnection();
out.println("Connection is OK !<BR>") ;
if (conn==null)
{
out.println("connect is not null !");
}
else
{
out.println("Is Connected !!! <BR>") ;
out.println(conn.getCatalog()+" !");
}
}
catch(Exception e)
{
out.println("<BR>");
out.println(e) ;
out.println("<BR>");
System.out.println(e) ;
}
finally
{
if (null != conn)
{
conn.close();
}
}
%>
测试完毕 !!!!
最后还有提示一点: 在配置完毕后,一定要用IE,打开这个xml文件,来检查是否有语法错误。
我就是因为在
<Resource
……..
/>
最后少了以个 结束标记 ” / ” , 最后导致
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
导致浪费了我一天的时间,来找错误!!!