Java 严重:无法使用context.xml文件创建池-tomcat 7的初始连接
我试图在tomcatJava 严重:无法使用context.xml文件创建池-tomcat 7的初始连接,java,xml,tomcat,runtimeexception,Java,Xml,Tomcat,Runtimeexception,我试图在tomcat7.0.52上运行project,并通过context.xml文件初始化为DB 但它抛出了一堆异常,我无法找出哪里出了问题 以下是控制台输出: java.sql.SQLException: com.mysql.jdbc.Driver at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254) at org.apache.tomcat.
7.0.52
上运行project,并通过context.xml
文件初始化为DB
但它抛出了一堆异常,我无法找出哪里出了问题
以下是控制台输出:
java.sql.SQLException: com.mysql.jdbc.Driver
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)
at org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:554)
at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:242)
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:141)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
mysql-connector-java-5.1.27-bin.jar
添加到cp中:
我试图更改context.xml文件的内容:
<resource-env-ref>
<description>Travel Agency Datasource</description>
<resource-env-ref-name>jdbc/onlinedb</resource-env-ref-name>
<resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
</resource-env-ref>
旅行社数据源
jdbc/onlinedb
javax.sql.DataSource
但它一直在失败
如何解决这个问题?您必须向类路径添加MySQL jdbc驱动程序 将MySQL二进制jar放入tomcat lib文件夹,或将其添加到we应用程序WEB-INF/lib文件夹
您可以找到binary jar(相应地更改版本):当您遇到这样的异常时,最有用的信息通常位于stacktrace的底部:
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
...
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246)
问题是Tomcat找不到
com.mysql.jdbc.Driver
。这通常是由于包含MySQL驱动程序的JAR不在Tomcat希望找到它的位置(即webapps//WEB-INF/lib
目录中)造成的。在调整了完全工作的context.xml设置后,我也处理了此异常。我不希望context.xml中包含环境细节,所以我将它们取出并看到了这个错误。我意识到我必须在基于系统属性JVM-D args的代码中完全创建这个数据源资源
仅删除用户/pwd/主机的原始错误:
org.apache.tomcat.jdbc.pool.ConnectionPool init
严重:无法创建池的初始连接
已删除context.xml的全部内容,请尝试以下操作:
在使用第一个连接之前的某个时间启动app server时初始化数据源对象。如果使用Spring,在@bean数据源构造函数中的@Configuration bean中这样做是很好的
要使用的包:org.apache.tomcat.jdbc.pool*
PoolProperties p = new PoolProperties();
p.setUrl(jdbcUrl);
p.setDriverClassName(driverClass);
p.setUsername(user);
p.setPassword(pwd);
p.setJmxEnabled(true);
p.setTestWhileIdle(false);
p.setTestOnBorrow(true);
p.setValidationQuery("SELECT 1");
p.setTestOnReturn(false);
p.setValidationInterval(30000);
p.setValidationQueryTimeout(100);
p.setTimeBetweenEvictionRunsMillis(30000);
p.setMaxActive(100);
p.setInitialSize(5);
p.setMaxWait(10000);
p.setRemoveAbandonedTimeout(60);
p.setMinEvictableIdleTimeMillis(30000);
p.setMinIdle(5);
p.setLogAbandoned(true);
p.setRemoveAbandoned(true);
p.setJdbcInterceptors(
"org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;"+
"org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");
org.apache.tomcat.jdbc.pool.DataSource ds = new org.apache.tomcat.jdbc.pool.DataSource();
ds.setPoolProperties(p);
return ds;
我使用sprint引导(2.1.1),mysql版本是8.0.13。我在pom中添加了依赖项,解决了我的问题 <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
mysql
MySQL连接器/J»所有版本链接:
尝试将其添加到tomcat lib文件夹中如果您有新问题,请单击按钮询问。如果这个问题有助于提供上下文,请包含一个链接。嗨-抱歉,在提交第一部分之前,我正在编辑我找到的解决方案。如果你现在同意这是有帮助的,请你重新说明。实际上,我并不是那个否决你答案的人。然而,它仍然有点混乱,因为你似乎要问一个单独的问题,然后回答原来的问题?如果您重新编辑以删除您的问题(最好作为单独的问题提问,imho),我将向上投票以删除您的向下投票人造成的损害。
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
...
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246)
PoolProperties p = new PoolProperties();
p.setUrl(jdbcUrl);
p.setDriverClassName(driverClass);
p.setUsername(user);
p.setPassword(pwd);
p.setJmxEnabled(true);
p.setTestWhileIdle(false);
p.setTestOnBorrow(true);
p.setValidationQuery("SELECT 1");
p.setTestOnReturn(false);
p.setValidationInterval(30000);
p.setValidationQueryTimeout(100);
p.setTimeBetweenEvictionRunsMillis(30000);
p.setMaxActive(100);
p.setInitialSize(5);
p.setMaxWait(10000);
p.setRemoveAbandonedTimeout(60);
p.setMinEvictableIdleTimeMillis(30000);
p.setMinIdle(5);
p.setLogAbandoned(true);
p.setRemoveAbandoned(true);
p.setJdbcInterceptors(
"org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;"+
"org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");
org.apache.tomcat.jdbc.pool.DataSource ds = new org.apache.tomcat.jdbc.pool.DataSource();
ds.setPoolProperties(p);
return ds;
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>