从 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/