Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 严重:无法使用context.xml文件创建池-tomcat 7的初始连接_Java_Xml_Tomcat_Runtimeexception - Fatal编程技术网

Java 严重:无法使用context.xml文件创建池-tomcat 7的初始连接

Java 严重:无法使用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.

我试图在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>