我正在尝试使用Tomcat建立与MySQL数据库的连接池。我的简单应用程序名为Projekt,在Apache/conf/Catalina/localhost下的Projekt.xml中:
<Context docBase="Projekt.war" path="/Projekt">
<Resource name="jdbc/mysqldb"
auth="Container"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/Music"
username="andrzej"
password="qazxsw"
maxActive="20"
maxIdle="30"
maxWait="5"
/>
</Context>
我的应用程序的web.xml
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>org.jtp.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/Hai</url-pattern>
</servlet-mapping>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mysqldb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
在我的Apache/lib文件夹中,我有
mysql-connector-java-5.1.18-bin.jar
但是当我执行这段代码时:
Context initContext = new InitialContext();
dataSource = (DataSource)initContext.lookup("java:comp/env/jdbc/mysqldb");
System.out.println(dataSource.getConnection().createStatement().
execute("select * from Users"));
我遇到了异常。
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
我现在感到困惑,在一些地方,我读到可能是由于没有将驱动程序放置在tomcat/lib中引起的,但我已经将其放置并且它也工作正常,因为当我使用手动连接测试驱动程序时它可以正常工作。
对于我的设置,我试图遵循http://people.apache.org/~fhanik/jdbc-pool/jdbc-pool.html
编辑: 最终解决了,似乎是我在一个文件中有一些剩余的上下文标签,因此在解析时覆盖了其他属性,所以最终问题出在我自己身上。