SQL 适配器 IBM Worklight 中的异常
Posted
技术标签:
【中文标题】SQL 适配器 IBM Worklight 中的异常【英文标题】:Exception in SQL adapter IBM Worklight 【发布时间】:2014-05-08 12:41:40 【问题描述】:当我尝试在 Worklight 中使用 SQL 适配器访问数据库时,几个小时不活动。收到以下错误。但是如果我第二次尝试连接数据库,我可以获取数据。
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection W DSRA8650W: 关闭 JDBC 子包装器出错, com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement@39ba47f8 com.ibm.db2.jcc.am.SqlException:[jcc][10120][10943][4.13.127] 无效 操作:语句关闭。 ERRORCODE=-4470, SQLSTATE=null A 在连接的操作过程中发生通信错误 底层套接字、套接字输入流或套接字输出流。 错误位置:T4Agent.sendRequest() - 刷新 (-1)。信息: 连接重置。错误码=-44
99,SQLSTATE=08001。
目前我已将 maxConnectionPerNode 设置为 1000,requestTimeoutInSeconds 设置为 60。
经过一天的搜索得知对于 JEE 应用程序,当连接池的连接过时,或者我们试图访问已关闭的准备好的语句时,就会出现此问题。如何从 Worklight 刷新 JDBC 池?或如何使连接活跃?
【问题讨论】:
【参考方案1】:我假设您在谈论您的开发环境。 连接池已超时,因此您在第一次调用时收到错误,在第二次调用时成功。一旦你转移到生产环境,我假设你不会有几个小时不活动,如果你愿意,你可以配置连接策略。
例如,对于 WebSphere Application Server Liberty Profile 配置,编辑 server.xml
文件并为每个 <dataSource>
元素添加一个带有agedTimeout 属性的<connectionManager>
元素:<connectionManager agedTimeout="timeout"/>
例如:
<dataSource jndiName="jdbc/AppCenterDS" transactional="false">
<connectionManager agedTimeout="7h30m"/>
<jdbcDriver libraryRef="mysqlLib"/>
...
</dataSource>
查看更多信息:https://pic.dhe.ibm.com/infocenter/wrklight/v6r1m0/topic/com.ibm.worklight.installconfig.doc/install_config/c_handling_stale_mysql_connections.html
【讨论】:
目前在 TESTING 环境中遇到异常。当我早上下载新应用程序并第一次尝试从数据库获取详细信息时,我遇到了这个异常。但是在开发过程中我从未遇到过这个问题。感谢你的回答。生病尝试一下,如果有效,请标记您的答案。 非常感谢@ravidor。现在工作正常。我还添加了 minPoolSize = "1" 以避免过时的连接以上是关于SQL 适配器 IBM Worklight 中的异常的主要内容,如果未能解决你的问题,请参考以下文章
IBM Worklight 6.1 - 使用 SQL 适配器连接到 MS SQL 失败
IBM Worklight - 无法显示使用 SQL 适配器检索到的数据
如何使用自定义 IN 参数在 IBM Worklight SQL 适配器中调用存储过程
IBM Worklight - 无法从客户端调用插入查询的 SQL 适配器过程。我的编码有啥问题?
如何在 ibm worklight 中通过 sql 适配器从 db2 检索或显示 html 页面上的数据?安卓混合应用开发