【问题标题】:Exception in SQL adapter IBM WorklightSQL 适配器 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 池?或如何使连接活跃?

【问题讨论】:

    标签: ibm-mobilefirst websphere


    【解决方案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" 以避免过时的连接
    猜你喜欢
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    相关资源
    最近更新 更多