Spring boot 使用spring数据jpa和完整的tomcat jdbc配置的spring引导会为ResetForwardedTimer抛出java.lang.ClassNotFoundException

Spring boot 使用spring数据jpa和完整的tomcat jdbc配置的spring引导会为ResetForwardedTimer抛出java.lang.ClassNotFoundException,spring-boot,spring-data-jpa,tomcat-jdbc,Spring Boot,Spring Data Jpa,Tomcat Jdbc,我正在使用SpringBoot 1.3.0.RELEASE和以下pom依赖项 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> &

我正在使用SpringBoot 1.3.0.RELEASE和以下pom依赖项

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.4</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
当我切换到tomcat jdbc的完整dbcp配置时,如下所示:

spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@**********
spring.datasource.username=*****
spring.datasource.password=*****
spring.datasource.initial-size=0
spring.datasource.max-active=10
spring.datasource.default-auto-commit=true
spring.datasource.default-transaction-isolation=2
spring.datasource.fair-queue=false
spring.datasource.jdbc-interceptors=ConnectionState;StatementFinalizer;ResetAbandonedTimer"
spring.datasource.jmx-enabled=true
spring.datasource.log-abandoned=true
spring.datasource.max-idle=1
spring.datasource.max-wait=30000
spring.datasource.min-evictable-idle-time-millis=60000
spring.datasource.min-idle=1
spring.datasource.remove-abandoned=true
spring.datasource.remove-abandoned-timeout=300
spring.datasource.test-on-borrow=true
spring.datasource.test-on-return=false
spring.datasource.test-while-idle=false
spring.datasource.time-between-eviction-runs-millis=10000
spring.datasource.use-equals=false
spring.datasource.validation-interval=60000
spring.datasource.validation-query=SELECT 2+2 FROM DUAL
我得到以下堆栈跟踪

2015-11-20 16:58:18.788 ERROR 48307 --- [nio-8080-exec-1] o.a.tomcat.jdbc.pool.ConnectionPool      : Unable to inform interceptor of pool start.
java.lang.ClassNotFoundException: Unable to load class: org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer" from ClassLoader:java.net.URLClassLoader@5bbcaf22;ClassLoader:TomcatEmbeddedWebappClassLoader
context: ROOT
delegate: true
----------> Parent Classloader:
java.net.URLClassLoader@5bbcaf22
    at org.apache.tomcat.jdbc.pool.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:56) ~[tomcat-jdbc-8.0.28.jar:na]
    at org.apache.tomcat.jdbc.pool.PoolProperties$InterceptorDefinition.getInterceptorClass(PoolProperties.java:964) ~[tomcat-jdbc-8.0.28.jar:na]\
    at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:447) [tomcat-jdbc-8.0.28.jar:na]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:141) [tomcat-jdbc-8.0.28.jar:na]
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:115) [tomcat-jdbc-8.0.28.jar:na]
......
......
......
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedWebappClassLoader.loadClass(TomcatEmbeddedWebappClassLoader.java:74) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167) ~[tomcat-embed-core-8.0.28.jar:8.0.28]
    at java.lang.Class.forName0(Native Method) ~[na:1.8.0_20]
    at java.lang.Class.forName(Class.java:340) ~[na:1.8.0_20]
    at org.apache.tomcat.jdbc.pool.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:38) ~[tomcat-jdbc-8.0.28.jar:na]
    ... 147 common frames omitted
2015-11-20 16:58:18.788错误48307---[nio-8080-exec-1]o.a.tomcat.jdbc.pool.ConnectionPool:无法通知侦听器池启动。
java.lang.ClassNotFoundException:无法从ClassLoader:java.net加载类:org.apache.tomcat.jdbc.pool.interceptor.ResetAbundedTimer”。URLClassLoader@5bbcaf22;类加载器:TomcatEmbeddedWebappClassLoader
上下文:根
代表:是的
---------->父类加载器:
java.net。URLClassLoader@5bbcaf22
在org.apache.tomcat.jdbc.pool.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:56)~[tomcat-jdbc-8.0.28.jar:na]
在org.apache.tomcat.jdbc.pool.PoolProperties$InterceptorDefinition.getInterceptorClass(PoolProperties.java:964)~[tomcat-jdbc-8.0.28.jar:na]\
位于org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:447)[tomcat-jdbc-8.0.28.jar:na]
位于org.apache.tomcat.jdbc.pool.ConnectionPool.(ConnectionPool.java:141)[tomcat-jdbc-8.0.28.jar:na]
在org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:115)[tomcat-jdbc-8.0.28.jar:na]
......
......
......
原因:java.lang.ClassNotFoundException:org.apache.tomcat.jdbc.pool.interceptor.resetAbundedTimer“
在org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedWebappClassLoader.loadClass(TomcatEmbeddedWebappClassLoader.java:74)~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
在org.apache.catalina.loader.WebappClassLoaderBase.loadeclass(WebappClassLoaderBase.java:1167)~[tomcat-embed-core-8.0.28.jar:8.0.28]
在java.lang.Class.forName0(本机方法)~[na:1.8.0\u 20]
在java.lang.Class.forName(Class.java:340)~[na:1.8.0\u20]
在org.apache.tomcat.jdbc.pool.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:38)~[tomcat-jdbc-8.0.28.jar:na]
... 省略147个公共帧
即使使用不同的spring引导版本,情况似乎也是如此。。。。 我的配置(取自我们已经使用的SpringDataSourceBean)不是boot所期望的吗

干杯


spring.datasource.jdbc interceptors=ConnectionState;StatementFinalizer;resetAbundedTimer中删除

我感谢您!难以置信的经过这么多年的发展,你可能会认为被打字错误咬伤的日子已经一去不复返了……非常感谢!很抱歉浪费了字节!我很高兴在那里帮忙;)
2015-11-20 16:58:18.788 ERROR 48307 --- [nio-8080-exec-1] o.a.tomcat.jdbc.pool.ConnectionPool      : Unable to inform interceptor of pool start.
java.lang.ClassNotFoundException: Unable to load class: org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer" from ClassLoader:java.net.URLClassLoader@5bbcaf22;ClassLoader:TomcatEmbeddedWebappClassLoader
context: ROOT
delegate: true
----------> Parent Classloader:
java.net.URLClassLoader@5bbcaf22
    at org.apache.tomcat.jdbc.pool.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:56) ~[tomcat-jdbc-8.0.28.jar:na]
    at org.apache.tomcat.jdbc.pool.PoolProperties$InterceptorDefinition.getInterceptorClass(PoolProperties.java:964) ~[tomcat-jdbc-8.0.28.jar:na]\
    at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:447) [tomcat-jdbc-8.0.28.jar:na]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:141) [tomcat-jdbc-8.0.28.jar:na]
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:115) [tomcat-jdbc-8.0.28.jar:na]
......
......
......
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedWebappClassLoader.loadClass(TomcatEmbeddedWebappClassLoader.java:74) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167) ~[tomcat-embed-core-8.0.28.jar:8.0.28]
    at java.lang.Class.forName0(Native Method) ~[na:1.8.0_20]
    at java.lang.Class.forName(Class.java:340) ~[na:1.8.0_20]
    at org.apache.tomcat.jdbc.pool.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:38) ~[tomcat-jdbc-8.0.28.jar:na]
    ... 147 common frames omitted