回 帖 发 新 帖 刷新版面

主题:[原创]jndi数据库连接池

我通过普通连接可以正确连接上数据库,代码如下:
String dri = "com.mysql.jdbc.Driver";
      String db = "jdbc:mysql://127.0.0.1:3306/bb?user=root&password=bb";
      Connection conn = null;
      try{
        Class.forName(dri).newInstance();
        conn = DriverManager.getConnection(db);

但通过JNDI配置连接就出现下面
问题提示:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

环境是Tomcat5.5+MYSQL5.0
配置是(加粗字体):
1,    C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\server.xml

<GlobalNamingResources>

    <!-- Test entry for demonstration purposes -->
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>

    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
       description="User database that can be updated and saved"
           factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname="conf/tomcat-users.xml" />
    
    <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/mysql">
    <parameter>
      <name>url</name>
      <value>jdbc:mysql://127.0.0.1:3306/bb?autoReconnection=true</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>5</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>50</value>
    </parameter>
    <parameter>
      <name>maxWait</name>
      <value>3000</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>com.mysql.jdbc.Driver</value>
    </parameter>
    <parameter>
      <name>removeAbandoned</name>
      <value>true</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>root</value>
    </parameter>
     <parameter>
      <name>password</name>
      <value>bb</value>
    </parameter>
  </ResourceParams>
    <parameter>
      <name>factory</name>
      <!--<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>-->
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>   
  </GlobalNamingResources>

2.D:\wei\WEB-INF\web.xml
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>

3. C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\wei.xml:

<Context path="/wei" docBase="D:/wei" reloadable="true" privileged="true" debug="0">
<ResourceLink name="jdbc/mysql" global="jdbc/mysql" type="javax.sql.DataSource"/>
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mysql" >
    <parameter>
      <name>url</name>
      <value>jdbc:mysql://127.0.0.1:3306/bb?autoReconnection=true</value>
    </parameter>
    <parameter>
      <name>maxIdle</name>
      <value>5</value>
    </parameter>
    <parameter>
      <name>maxActive</name>
      <value>50</value>
    </parameter>
    <parameter>
      <name>maxWait</name>
      <value>3000</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>com.mysql.jdbc.Driver</value>
    </parameter>
    <parameter>
      <name>removeAbandoned</name>
      <value>true</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>root</value>
    </parameter>
     <parameter>
      <name>password</name>
      <value>bb</value>
    </parameter>
  </ResourceParams>
    <parameter>
      <name>factory</name>
      <!--<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>-->
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>   
</Context>

4代码如下
Connection conn = null;      
      try{
          InitialContext ctx = new InitialContext();
            DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
            conn = ds.getConnection();
        }

回复列表 (共1个回复)

沙发

驱动包没加到 classpath 中

我来回复

您尚未登录,请登录后再回复。点此登录或注册