今天搞了很久,终于把Tomcat5.0得mysql数据源配置成功了。
最初总是出现“Cannot create JDBC driver of class '' for connect URL 'null', cause: No suitable driver”的错误。
现在将我的配置成功的心得体会写下来。
1. 先下载mysql的jdbc驱动程序,我用的是mysql-connector-java-5.0.3-bin.jar,将其放在%Tomcat_Home%common/lib目录下。因为这样配置的数据源需要tomcat服务器去利用jdbc的驱动连接数据库,所以,只有将其放在lib下,服务器启动时就能加载这个jar文件了。
2. 我用Myeclipse建立一个项目(例如项目名叫DataSource),然后发布到tomcat服务器上,这样就在%Tomcat_Home%conf/Catalina/localhost建立一个DataSource.xml文件。这应该时这个项目在服务器上的上下文环境吧。我们的数据源就在这里面进行配置了。
3. 这个DataSource.xml文件的内容为:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="D:/Tomcat 5.0/webapps/DataSource" path="/DataSource" workDir="work/Catalina/localhost/DataSource">
<Resource auth="Container" name="jdbc/datasource" type="javax.sql.DataSource"/>
<ResourceLink name="jdbc/datasource" global="jdbc/datasource" type="javax.sql.DataSource" /> //实际用这一个
<Resource name=” jdbc/datasource” type="javax.sql.DataSource" /> //这句我用上面这个代替了
<ResourceParams name="jdbc/datasource">
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>200</value>
</parameter>
<parameter>
<name>password</name>
<value>root</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/archives?autoReconnect=true</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>0</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
</ResourceParams>
</Context>
4. 不过最开始,我是在Tomcat Administration里面进行的数据源配置的,可是这样tomcat就在%Tomcat_Home%conf/Catalina/localhost/server.xml里面添加了上面红色的部分,将其拷贝到%Tomcat_Home%conf/Catalina/localhost/DataSource.xml中,如上所示。并将<Resource name=” jdbc/datasource” type="javax.sql.DataSource" /> 换成<ResourceLink name="jdbc/datasource" global="jdbc/datasource" type="javax.sql.DataSource" />就可以了。
5. 最后在你项目的web.xml中添加如下:
<resource-ref>
<res-ref-name>jdbc/datasource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
6. 下面写个jsp进行测试吧
<%...@ page import="java.io.*,java.util.*,java.sql.*,javax.sql.*,javax.naming.*"%>
<%...@ page contentType="text/html;charset=GB2312"%>
<html>
<head><title>DataSourse Connection Test</title></head>
<body>
<%...
try{
Statement stmt;
ResultSet rs;
javax.naming.Context ctx=new javax.naming.InitialContext();
javax.sql.DataSource ds= (javax.sql.DataSource)ctx.lookup ("java:comp/env/jdbc/datasource");
java.sql.Connection con=ds.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery("select * from user");
while(rs.next()){
out.print(rs.getInt(1));
out.print(rs.getString(2));
}
rs.close();
stmt.close();
con.close();
}catch(Exception e){
out.print(e.getMessage());
}
%>
</body>
</html>