今天搞了很久,终于把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>
<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 cnotallow=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
>