替换为websphere中的WSCallHelper.clearStatementCache(连接)Liberty配置文件
我正在将应用程序从WAS7迁移到Liberty。替换为websphere中的WSCallHelper.clearStatementCache(连接)Liberty配置文件
在某些情况下,现有代码使用WSCallHelper.clearStatementCache(connection)
(例如:在过程调用的情况下未找到包)。
我发现WSCallHelper
不存在于liberty服务器中。
你能帮我解决这个问题吗? 它可以是特定的自由,也可以是支持所有服务器的一般方法。
了解更多有关您需要拨打WSCallHelper.clearStatementCache(connection)
的场景将会有所帮助,但根据您所描述的内容,我会假设它只在错误路径上调用。
在Liberty中,没有API以编程方式清除语句缓存。但是,只有在许多属性相同的情况下才能匹配高速缓存的语句,例如:SQL字符串,RS可保存性,模式,隔离级别以及其他一些属性。
为什么你不需要clearStatementCache:你打电话clearStatementCache是在对数据库中找不到包,但包应该在任何SQL字符串或模式来体现描述
的示例场景。因此,假设您的应用程序不重试失败的SQL字符串,则根本不需要调用clearStatementCache。
如果你真的要清除语句缓存:
正如JDBC规范定义,声明是一个连接的子对象。因此,清除语句缓存的一种创造性方式是摆脱与错误语句的联系。调用connection.close()
可能无法完成此操作,因为应用程序服务器可能会汇集连接,但调用connection.abort()
将清除底层连接并因此清除语句高速缓存。
我们还应该指出,如果您希望采用更具针对性的方法,并且希望从缓存中删除特定语句(或者首先不要进入缓存),则可以使用JDBC规范API java.sql.Statement.setPoolable(false)
。在关闭语句句柄之前调用它。应用程序服务器不会缓存标记为poolable = false的语句。