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