OJB checks per default with connection.isClosed() before return a connection from the pool. But most jdbcDrivers don't recognize timed out connections closed by the server.
To do a more serious check you can use attribute 'validationQuery'
(e.g. "SELECT 1 FROM DUAL") if you don't have success to allow re-connect of timed out connection.
regards, Armin
[EMAIL PROTECTED] wrote:
For some reason, it looks like OJB doesn't know when a connection has been closed, or there is something wrong with my setup. I'm using OJB rc5, with Oracle 9.2.0, and ojdbc4.jar (for JDK 1.4.x). It seems that when the app is not used and left idle, that connections are closed, but then when it is hit again, it tries to use the connections, throws the exception, and then notes the socket as closed.
here is my repository_database entry:
<!-- Datasource for Acronyms --> <jdbc-connection-descriptor jcd-alias="acronyms" default-connection="true" platform="Oracle" jdbc-level="2.0" driver="oracle.jdbc.OracleDriver" protocol="jdbc" subprotocol="oracle" dbalias="thin:@hpspdb1:1521:HPSPDB" username="uname" password="upass" eager-release="true" batch-mode="false" useAutoCommit="0" ignoreAutoCommitExceptions="true"> <connection-pool maxActive="1" maxIdle="2" maxWait="3" minEvictableIdleTimeMillis="4" numTestsPerEvictionRun="5" testOnBorrow="true" testOnReturn="true" testWhileIdle="true" timeBetweenEvictionRunsMillis="6" whenExhaustedAction="2" validationQuery="" logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="8"/> <sequence-manager className="org.apache.ojb.broker.util.sequence.SequenceManagerHighLowImpl"> <attribute attribute-name="grabSize" attribute-value="100"/> <attribute attribute-name="autoNaming" attribute-value="true"/> <attribute attribute-name="globalSequenceId" attribute-value="false"/> <attribute attribute-name="globalSequenceStart" attribute-value="10000"/> </sequence-manager> </jdbc-connection-descriptor>
here is the exception:
java.sql.SQLException: Io exception: Socket closed at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333) at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:389) at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:413) at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:119) at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:92) at oracle.jdbc.driver.OracleConnection.privatePrepareStatement(OracleConnection.java:950) at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection.java:802) at org.apache.ojb.broker.accesslayer.StatementsForClassImpl.prepareStatement(Unknown Source) at org.apache.ojb.broker.accesslayer.StatementsForClassImpl.prepareStatement(Unknown Source) at org.apache.ojb.broker.accesslayer.StatementsForClassImpl.getPreparedStmt(Unknown Source) at org.apache.ojb.broker.accesslayer.StatementManager.getPreparedStatement(Unknown Source) at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(Unknown Source) at org.apache.ojb.broker.accesslayer.RsQueryObject.performQuery(Unknown Source) at org.apache.ojb.broker.accesslayer.RsIterator.<init>(Unknown Source) at org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(Unknown Source) at org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(Unknown Source) at org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(Unknown Source) at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source) at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source) at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source) at org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Unknown Source) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(Unknown Source) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(Unknown Source) at gov.hhs.acronyms.sql.AcronymDAO.selectAcronyms(AcronymDAO.java:80) at gov.hhs.acronyms.actions.SearchAction.execute(SearchAction.java:68) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) at javax.servlet.http.HttpServlet.service(HttpServlet.java:165) at javax.servlet.http.HttpServlet.service(HttpServlet.java:103) at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:113) at com.caucho.server.cache.CacheFilterChain.doFilter(CacheFilterChain.java:190) at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:177) at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:221) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:253) at com.caucho.server.port.TcpConnection.run(TcpConnection.java:305) at com.caucho.util.ThreadPool.run(ThreadPool.java:273) at java.lang.Thread.run(Thread.java:534) org.apache.ojb.broker.PersistenceBrokerSQLException: java.sql.SQLException: Io exception: Socket closed at org.apache.ojb.broker.accesslayer.StatementsForClassImpl.getPreparedStmt(Unknown Source) at org.apache.ojb.broker.accesslayer.StatementManager.getPreparedStatement(Unknown Source) at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(Unknown Source) at org.apache.ojb.broker.accesslayer.RsQueryObject.performQuery(Unknown Source) at org.apache.ojb.broker.accesslayer.RsIterator.<init>(Unknown Source) at org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(Unknown Source) at org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(Unknown Source) at org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(Unknown Source) at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source) at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source) at org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unknown Source) at org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Unknown Source) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(Unknown Source) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(Unknown Source) at gov.hhs.acronyms.sql.AcronymDAO.selectAcronyms(AcronymDAO.java:80) at gov.hhs.acronyms.actions.SearchAction.execute(SearchAction.java:68) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) at javax.servlet.http.HttpServlet.service(HttpServlet.java:165) at javax.servlet.http.HttpServlet.service(HttpServlet.java:103) at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:113) at com.caucho.server.cache.CacheFilterChain.doFilter(CacheFilterChain.java:190) at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:177) at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:221) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:253) at com.caucho.server.port.TcpConnection.run(TcpConnection.java:305) at com.caucho.util.ThreadPool.run(ThreadPool.java:273) at java.lang.Thread.run(Thread.java:534) Caused by: java.sql.SQLException: Io exception: Socket closed at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333) at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:389) at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:413) at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:119) at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:92) at oracle.jdbc.driver.OracleConnection.privatePrepareStatement(OracleConnection.java:950) at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection.java:802) at org.apache.ojb.broker.accesslayer.StatementsForClassImpl.prepareStatement(Unknown Source) at org.apache.ojb.broker.accesslayer.StatementsForClassImpl.prepareStatement(Unknown Source) ... 30 more
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
