java - 替换 websphere Liberty 配置文件中的 WSCallHelper.clearStatementCache(connection)

标签 java jakarta-ee websphere websphere-8 websphere-liberty

我正在将应用程序从 WAS7 迁移到 Liberty。

现有代码在某些情况下使用WSCallHelper.clearStatementCache(connection)(例如:在过程调用的情况下找不到包)。

我发现 WSCallHelper 在 liberty 服务器中不存在。

你能帮我想出一个自由的替代解决方案吗? 它可以是特定的自由,也可以是支持所有服务器的通用方法。

最佳答案

了解更多关于您需要调用 WSCallHelper.clearStatementCache(connection) 的场景会很有帮助,但根据您所描述的内容,我假设它仅在错误路径。

在 Liberty 中,没有以编程方式清除语句缓存的 API。但是,缓存的语句只有在许多属性相同时才会匹配,例如:SQL 字符串、RS 可保存性、模式、隔离级别等。

为什么不需要 clearStatementCache:
您描述的调用 clearStatementCache 的示例场景是在数据库中找不到包时,但包应该反射(reflect)在 SQL 字符串或架构中。因此,假设您的应用程序不会重试失败的 SQL 字符串,您根本不需要调用 clearStatementCache。

如果你真的很想清除语句缓存:
正如 JDBC 规范所定义的,Statements 是 Connection 的子对象。因此,清除语句缓存的一种创造性方法是摆脱与错误语句的连接。调用 connection.close() 可能无法完成此操作,因为连接可以由应用程序服务器合并,但调用 connection.abort() 将摆脱底层连接,因此清除语句缓存。

关于java - 替换 websphere Liberty 配置文件中的 WSCallHelper.clearStatementCache(connection),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40698993/

相关文章:

java - JDBC 领域 : GlassFish v2. 1 = 正常; GlassFish v3 = 失败,用户原因无效

java - JAXB Java EE 从 Schema 生成实体类

websphere - IBM Websphere Application Server 和 IBM Websphere Process Server 之间的区别?

java - File.isFile() 和 File.isDirectory() 都返回 false

java - 对于循环整数和字符串变量?

java - 运行可移植 Web 服务应用程序服务器

java - Ant 在 javac 处失败且没有消息

java - 使用 Eclipse Indigo 时获取 realpath 的问题

java - Websphere Application Server 7 和 Eclipse

hibernate - 从 JPA2.0 迁移到 JPA 2.1 时出现 "Unsupported use of GenericConnection"异常