通过JT400的JDBC可以在本地Apache Tomcat 8安装上运行,但在服务器上运行的Apache Tomcat 8上运行失败

时间:2015-05-09 00:38:03

标签: java apache tomcat ibm-midrange

我在运行Apache Tomcat 8的开发工作站上运行并测试了一个Java应用程序。我有一个已建立的IBM i(AS / 400)数据库连接,使用JT400.jar文件在本地工作。当我使用相同的JT400.jar文件构建并部署应用程序到运行Apache Tomcat 8的生产服务器时,数据库连接似乎失败了,我无法弄清楚原因。

我得到以下“HTTP状态500 - Servlet执行引发异常”错误:

<code>
java.lang.AbstractMethodError
org.apache.tomcat.dbcp.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:913)
org.apache.tomcat.dbcp.dbcp2.PoolableConnection.validate(PoolableConnection.java:218)
org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:302)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2164)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2147)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:1902)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1412)
utilities.SerialSearch.doSearch(SerialSearch.java:81)
processes.ProcessScan.getSerialScreenDetail(ProcessScan.java:66)
processes.ProcessScan.ProcessScanRequest(ProcessScan.java:103)
controller.MetricServlet.performTask(MetricServlet.java:145)
controller.MetricServlet.doPost(MetricServlet.java:43)
javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
</code>

有什么不同,我该如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:0)

问题解决了。菜鸟错了。我无意中将旧的jt400 jar文件通过重命名留在Apache Tomcat 8服务器上的lib文件夹中。一旦我删除了旧的jar文件,我的问题就解决了我上周安装的新jt400 jar,它开始了冲突。谢谢!

答案 1 :(得分:0)

使用当前最新版本(截至今天的9.3)时出现了同样的错误。

问题是我使用的是JDK 8,并且使用maven来获取包,我收到了一个不适合这个JDK的版本。

为了解决这个问题,我使用了正确的maven限定符:

    <dependency>
        <groupId>net.sf.jt400</groupId>
        <artifactId>jt400</artifactId>
        <version>9.3</version>
        <classifier>jt400_jdk8</classifier>
    </dependency>

请注意,如果您使用完整套件下载zip,则所有版本的jar都具有相同的名称(即jt400.jar),这使得它们很难用于distinguih。