I'm running into an issue with db connections becoming stale and WebMaker not recycling them properly.
When a user pulls up a form for the first time after hours of non-use an error occurs when the controller tries to use a connection that's no longer valid.
How can I tweak the connection pool settings in WebMaker or otherwise resolve this issue?
When a user pulls up a form for the first time after hours of non-use an error occurs when the controller tries to use a connection that's no longer valid.
How can I tweak the connection pool settings in WebMaker or otherwise resolve this issue?
RE: connection pools
WebMaker uses Apache Commons DBCP, which should handle much of this for you. Do you have more details about the exact error? Is this being logged? Or are you actually seeing something on the form?
Regards
Abdul
RE: connection pools
Here is the exception by the way:
java.sql.SQLException: No more data to read from socket
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1200)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1155)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:279)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:205)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:861)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1145)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1267)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3550)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1086)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:169)
at com.hyfinity.xengine.effectors.SQLStatement.effect(SQLStatement.java:557)
at com.hyfinity.xengine.effectors.BaseEffector.effect(BaseEffector.java:195)
at com.hyfinity.xengine.core.Rule.fireWithoutContext(Rule.java:197)
at com.hyfinity.xengine.core.Rule.fire(Rule.java:146)
at com.hyfinity.xengine.core.RuleBase.processRules(RuleBase.java:289)
at com.hyfinity.xengine.core.RuleBase.forwardChain(RuleBase.java:215)
at com.hyfinity.xengine.XEngine.execute(XEngine.java:95)
at com.hyfinity.xagent.StandardXAgent.callXMLService(StandardXAgent.java:197)
at com.hyfinity.xagent.StandardXAgent.service(StandardXAgent.java:172)
at com.hyfinity.xplatform.XPlatform.service(XPlatform.java:429)
at com.hyfinity.xplatform.XPlatform.serviceRequest(XPlatform.java:387)
at com.hyfinity.xengine.effectors.Service.callService(Service.java:223)
at com.hyfinity.xengine.effectors.Service.effect(Service.java:179)
at com.hyfinity.xengine.effectors.BaseEffector.effect(BaseEffector.java:195)
at com.hyfinity.xengine.core.Rule.fireWithoutContext(Rule.java:197)
at com.hyfinity.xengine.core.Rule.fire(Rule.java:146)
at com.hyfinity.xengine.core.RuleBase.processRules(RuleBase.java:289)
at com.hyfinity.xengine.core.RuleBase.forwardChain(RuleBase.java:215)
at com.hyfinity.xengine.XEngine.execute(XEngine.java:95)
at com.hyfinity.xagent.StandardXAgent.callXMLService(StandardXAgent.java:197)
at com.hyfinity.xagent.StandardXAgent.service(StandardXAgent.java:172)
at com.hyfinity.xplatform.XPlatform.service(XPlatform.java:429)
at com.hyfinity.xgate.HTTP2Java.processAction(HTTP2Java.java:1065)
at com.hyfinity.xgate.HTTP2Java.doPost(HTTP2Java.java:633)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
The error only happens after the application hasn't been used for a while, and everything works fine if the application is reloaded a few moments later.
RE: connection pools
Unfortunately you cannot access such parameters from within WebMaker currently . We have a patch under test for release soon, which enables WebMaker to delegate such config parameter handling to the webapp container via JNDI.
Kind Regards
Abdul
RE: connection pools
RE: connection pools
I sent you a private message via the forum. Did you receive it?
Regards
Abdul
RE: connection pools