【问题标题】:JDBC via JT400 works on local Apache Tomcat 8 install but fails on Apache Tomcat 8 running on server通过 JT400 的 JDBC 适用于本地 Apache Tomcat 8 安装,但在服务器上运行的 Apache Tomcat 8 上失败
【发布时间】:2015-07-20 00:20:43
【问题描述】:

我有一个 Java 应用程序在运行 Apache Tomcat 8 的开发工作站上运行和测试。我有一个使用 JT400.jar 文件在本地工作的已建立的 IBM i (AS/400) 数据库连接。当我使用相同的 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>

有什么不同以及如何解决问题?

谢谢!

【问题讨论】:

    标签: java apache tomcat ibm-midrange


    【解决方案1】:

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

    【讨论】:

    • 您能否详细说明您正在使用的 jar 的“新版本”。我在 jt400 8.7 中使用 AS400JDBCDriver 并得到 AbstractMethodError。
    【解决方案2】:

    我在使用当前最新版本(截至今天 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),这使得它们难以区分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      • 2014-01-08
      • 1970-01-01
      • 2015-11-01
      • 2011-12-27
      • 2016-02-22
      相关资源
      最近更新 更多