java - 自由 java.lang.UnsupportedOperationException : getLargeUpdateCount not implemented

标签 java jdbc websphere-liberty

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 功能来解决该错误。

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

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

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

关于java - 自由 java.lang.UnsupportedOperationException : getLargeUpdateCount not implemented,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55126974/

相关文章:

java - 带有 JRE 7 的 Liberty 运行时

java - 如何通过jtextfield替换文件中的一行?

java - 如何解决 FileSizeLimitExceededException 错误?

java - 将参数从 JavaScript (jQuery) 传送到基于 Java 的 REST 服务的最佳实践?

java - PreparedStatement 抛出语法错误

apple-push-notifications - Worklight 推送通知 (APNS) 失败并出现 javax.net.ssl.SSLHandshakeException

java - 无法在 Liberty 中设置 keyStore(.p12 扩展名)

java - 无法使用 OAuth 2 通过 Jakarta Mail 连接到 Office 365 SMTP 服务器

java - UCanAccess 错误 - net.ucanaccess.jdbc.UcanaccessSQLException : incompatible data type in operation: ; in LIMIT, OFFSET 或 FETCH

eclipse - eclipse中通过jdbc连接DB2数据库