SQL适配器IBM Worklight中的异常

时间:2014-05-08 12:41:40

标签: ibm-mobilefirst websphere

在尝试使用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() - flush(-1)。信息:   连接重置。 ERRORCODE = -44

99,SQLSTATE = 08001。

目前我已将maxConnectionPerNode设置为1000,requestTimeoutInSeconds为60。

经过一天的搜索后才知道,对于JEE应用程序,当连接池有过时连接时,或者我们正在尝试访问已关闭的预准备语句时会出现此问题。如何从Worklight刷新JDBC池?或如何使连接活着?

1 个答案:

答案 0 :(得分:2)

我假设你在谈论你的开发环境 连接池已超时,因此第一次调用时出错,第二次调用成功。一旦你转移到生产环境,我认为你不会有几个小时的不活动,如果你愿意,你可以配置连接政策。

例如,对于WebSphere Application Server Liberty Profile配置编辑server.xml文件,并为每个<dataSource>元素添加带有agingTimeout属性的<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