自由 java.lang.UnsupportedOperationException:getLargeUpdateCount 未实现

liberty java.lang.UnsupportedOperationException: getLargeUpdateCount not implemented

websphere liberty 16 迁移到 19.0.0.1 我遇到了这个异常: 在 运行 个存储过程后关闭连接,出现以下异常:

EJB threw an unexpected (non-declared) exception during invocation of method "callStoredProcedure" on bean "BeanId(UPD_TIMBRI_EAR#UPD_TIMBRI_EJB.jar#StampsSaver, null)". Exception data: java.lang.UnsupportedOperationException: getLargeUpdateCount not implemented at java.sql.Statement.getLargeUpdateCount(Statement.java:1092) at com.ibm.ws.rsadapter.jdbc.v42.WSJdbc42CallableStatement.getCompatibleUpdateCount(WSJdbc42CallableStatement.java:46) at com.ibm.ws.rsadapter.impl.DatabaseHelper.getUpdateCount(DatabaseHelper.java:336) at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.closeWrapper(WSJdbcPreparedStatement.java:306) at com.ibm.ws.rsadapter.jdbc.WSJdbcCallableStatement.closeWrapper(WSJdbcCallableStatement.java:146) at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.close(WSJdbcObject.java:152) at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.close(WSJdbcObject.java:110) at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.closeChildWrappers(WSJdbcObject.java:193) at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.close(WSJdbcObject.java:150) at com.ibm.ws.rsadapter.jdbc.WSJdbcObject.close(WSJdbcObject.java:110) at com.ibm.rtv.timbri.ejb.StampsSaver.callStoredProcedure(StampsSaver.java:163).....

代码:

Connection stampConn = stampDS.getConnection();
stampConn.setAutoCommit(false);
try {
    CallableStatement pstmt = stampConn.prepareCall("{call GRANTUSERSTAMPS()}");
    if (pstmt.execute()) {
        logger.logp(Level.FINEST, sourceClass, sourceMethod, "StoredProcedure OK");
    } else {
        logger.logp(Level.FINEST, sourceClass, sourceMethod, "StoredProcedure KO");
    }
    ;
    } catch (SQLException e) {
        System.out.println("could not get JDBC connection: " + e);
    } finally {
        stampConn.close();
    }

自由 gitHub 似乎问题已从 FP 18.0.0.3 修复。 也许我哪里错了。

在等待修复期间,如果您的应用程序或服务器中的其他功能都不依赖 JDBC 4.2 规范中的新功能,则可能可以通过暂时切换到jdbc-4.1 功能。

为此,请在您的服务器配置(通常是 server.xml)的 featureManager 元素下查找 jdbc-4.2,并将其替换为 jdbc-4.1。

<featureManager>
  <feature>jdbc-4.1</feature>
  ... other features
</featureManager>

如果其他功能暗示 jdbc-4.2 功能可能不会在此处显示,在这种情况下,您可以简单地尝试添加 jdbc-4.1,如上面的示例,这将覆盖 jdbc-4.2 的使用或与其发生冲突,具体取决于所涉及的其他功能的确切要求。如果发生冲突,则无法使用此临时解决方法。