我在运行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>
有什么不同,我该如何解决这个问题?
谢谢!
答案 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。