I read some more code... My line of attack was wrong. StatementManager.getPreparedStatement() is infact called with an SQL string so there is no caching of PreparedStatement Objects as such... but than how can we get "Invalid statement handle or statement is closed" from db ?
I am assuming if the PB was closed... we'd have recieved "java.lang.IllegalStateException" much earlier in the stack (on a DelegatingPB.getBroker() call)... Is it possible that the connection was closed ? without calling PB.close()... BTW we are using connections from app server by declaring a Data Source in app server -akhil "nntp://news.gmane.org/gmane.group.name" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Hi, > > We have started facing this issue randomly on RC4. > Using PB API under AppServer. Called from SLSBs. > Each session calls the PBFactory().getdefaultBroker()... uses it and called > PB.close(). > intermittently we are getting an SQLException which means the > PreparedStatement was closed (stack trace below) > > Any ideas when/how this can happen ? > Is there a non-caching alternative to "StatementsForClassImpl" > (just to build in the thaught... we wont face this if we do no cache > PreparedStatements) > > TIA > akhil > > rethrown as org.apache.ojb.broker.PersistenceBrokerSQLException: > [IBM][JDBCDriver] CLI0601E Invalid statement handle or statement is > closed.SQLSTATE=S1000 > at > org.apache.ojb.broker.accesslayer.StatementsForClassImpl.getPreparedStmt(Sta > tementsForClassImpl.java:188) > > at > org.apache.ojb.broker.accesslayer.StatementManager.getPreparedStatement(Stat > ementManager.java:680) > > at > org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(JdbcAccessImpl > .java:266) > > at org.apache.ojb.broker.accesslayer.RsIterator.<init>(RsIterator.java:200) > > at > org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(RsIterator > FactoryImpl.java:95) > > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(Pers > istenceBrokerImpl.java:2371) > > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(Persis > tenceBrokerImpl.java:1712) > > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Persis > tenceBrokerImpl.java:1343) > > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Persis > tenceBrokerImpl.java:1515) > > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Persis > tenceBrokerImpl.java:1551) > > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Persis > tenceBrokerImpl.java:1540) > > at > org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(Persistenc > eBrokerImpl.java:1802) > > at > org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Dele > gatingPersistenceBroker.java:286) > > at > org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Dele > gatingPersistenceBroker.java:286) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
