When using IBATIS with OSCache getting "Closed Connection" when using proxy
connections and closing
---------------------------------------------------------------------------------------------------
Key: IBATIS-539
URL: https://issues.apache.org/jira/browse/IBATIS-539
Project: iBatis for Java
Issue Type: Bug
Components: SQL Maps
Affects Versions: 2.3.0
Environment: Microsoft Windows XP Professional, Oracle 10g, BEA
Weblogic 10,
Reporter: George H. Marvin
Fix For: 2.3.3, 2.3.2, 2.3.1, 2.3.0
When an IBATIS Query is run without CACHING, connections are properly closed
and everything runs fine. When caching is activated, the first query executes
properly, there is a close() issued to the proxy connection, a new proxy
connection is obtained and the second query aborts in
OracleStatement.ensureOpen(). The last IBATIS class executed is
PreparedStatementLogProxy (line 62).
The following is an example of the code I am talking about:
public void getReference(VOCSCommand cmd) {
List<?> results = null;
Map<?, ?> paramList = cmd.params;
Connection proxyConn=null;
try {
BaseVO baseVo = cmd.basevo;
logger.debug("userid=" +
baseVo.getUserCredentials().getUserId());
logger.debug("password=" +
baseVo.getUserCredentials().getPassword());
proxyConn = getProxyConnection(baseVo);
smc.setUserConnection(proxyConn);
results = smc.queryForList(cmd.cmdName.trim(),
paramList);
// proxyConn.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (proxyConn != null) {
try {
logger.debug("Error closing proxyConn -
[getReference]");
proxyConn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
if (results != null)
cmd.result.addAll(results);
}
I get the following results for 2 executions:
2008-09-30 15:34:24,262 INFO [common.DCapesObjectFactory] - BEGIN: loading
Spring config:DCAPES_DYNAMIC_DEFS
2008-09-30 15:34:27,921 DEBUG [base.Config] - OSCache: Config called
2008-09-30 15:34:27,921 INFO [base.Config] - OSCache: Getting properties from
URL
file:/C:/gmarvin_ts_Spiral2/dcapes_lc/dcapes/dcapes-dms/classes/oscache.properties
for the default configuration
2008-09-30 15:34:27,952 INFO [base.Config] - OSCache: Properties read
{cache.capacity=100000, cache.event.listeners=SimpleStatisticListenerImpl}
2008-09-30 15:34:27,952 DEBUG [base.AbstractCacheAdministrator] - Constructed
AbstractCacheAdministrator()
2008-09-30 15:34:27,952 INFO [general.GeneralCacheAdministrator] - Constructed
GeneralCacheAdministrator()
2008-09-30 15:34:27,952 INFO [general.GeneralCacheAdministrator] - Creating
new cache
2008-09-30 15:34:28,015 INFO [SimpleStatisticListenerImpl] - Creation of
SimpleStatisticListenerImpl
2008-09-30 15:34:28,765 DEBUG [vocs.VoCacheDDMSImpl] - In VoCacheDDMSImpl...
2008-09-30 15:34:28,906 INFO [common.DCapesObjectFactory] - END: loading
Spring config:DCAPES_DYNAMIC_DEFS
2008-09-30 15:34:28,906 DEBUG [vocs.VoCacheCloseProblemTest] - testInvokeService
2008-09-30 15:34:29,516 DEBUG [vocs.VoCacheDDMSImpl] - userid=billbinz
2008-09-30 15:34:29,516 DEBUG [vocs.VoCacheDDMSImpl] - password=bil6bil!
2008-09-30 15:34:30,313 DEBUG [sql.Connection] - {conn-100000} Connection
2008-09-30 15:34:30,344 DEBUG [algorithm.AbstractConcurrentReadCache] - get
called (key=748120546|-1124938390|AEQ%|%|getServSiteLookupInfo|11512063|
select GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION where GLC_CD
like ? and GLC_NM like ? |executeQueryForList|0|-999999)
2008-09-30 15:34:30,344 DEBUG [algorithm.AbstractConcurrentReadCache] -
persistRetrieve called
(key=748120546|-1124938390|AEQ%|%|getServSiteLookupInfo|11512063| select
GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION where GLC_CD like ?
and GLC_NM like ? |executeQueryForList|0|-999999)
2008-09-30 15:34:30,344 DEBUG [base.Cache] - No cache entry exists for
key='748120546|-1124938390|AEQ%|%|getServSiteLookupInfo|11512063| select
GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION where GLC_CD like ?
and GLC_NM like ? |executeQueryForList|0|-999999', creating
2008-09-30 15:34:30,360 DEBUG [SimpleStatisticListenerImpl] - accessed
2008-09-30 15:34:30,360 DEBUG [SimpleStatisticListenerImpl] - ACCESS : MISS:
748120546|-1124938390|AEQ%|%|getServSiteLookupInfo|11512063| select
GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION where GLC_CD like ?
and GLC_NM like ? |executeQueryForList|0|-999999
2008-09-30 15:34:30,360 DEBUG [SimpleStatisticListenerImpl] - STATISTIC : Hit =
0, stale hit =0, miss = 1
2008-09-30 15:34:30,360 DEBUG [cache.CacheModel] - Cache
'ServSiteLookupVO.ServSiteLookupVO-cache': cache miss
2008-09-30 15:34:30,391 DEBUG [sql.Connection] - {conn-100000} Preparing
Statement: select GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION
where GLC_CD like ? and GLC_NM like ?
2008-09-30 15:34:31,079 DEBUG [sql.PreparedStatement] - {pstm-100001} Executing
Statement: select GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION
where GLC_CD like ? and GLC_NM like ?
2008-09-30 15:34:31,079 DEBUG [sql.PreparedStatement] - {pstm-100001}
Parameters: [AEQ%, %]
2008-09-30 15:34:31,079 DEBUG [sql.PreparedStatement] - {pstm-100001} Types:
[java.lang.String, java.lang.String]
2008-09-30 15:34:31,142 DEBUG [sql.ResultSet] - {rset-100002} ResultSet
2008-09-30 15:34:31,204 DEBUG [sql.ResultSet] - {rset-100002} Header: [GLC_CD,
GLC_NM]
2008-09-30 15:34:31,204 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQA,
ALFORDSVILLE]
2008-09-30 15:34:31,204 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQB,
ALFRED]
2008-09-30 15:34:31,204 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQC,
ALFRED]
2008-09-30 15:34:31,204 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQD,
ALFRED STATION]
2008-09-30 15:34:31,204 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQE,
ALFREDO VASQUEZ C]
2008-09-30 15:34:31,204 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQF,
ALFRED]
2008-09-30 15:34:31,204 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQG,
ALFRED]
2008-09-30 15:34:31,220 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQH,
ALEGRETE]
2008-09-30 15:34:31,220 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQJ,
ALGENRODT]
2008-09-30 15:34:31,220 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQK,
ALEGRETE NOVO]
2008-09-30 15:34:31,220 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQM,
ALGER-HOUARI BOUM]
2008-09-30 15:34:31,220 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQN,
ALFRED 01]
2008-09-30 15:34:31,220 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQQ,
ALGIERS]
2008-09-30 15:34:31,220 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQS,
ALGHERO]
2008-09-30 15:34:31,220 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQT,
ALGECIRAS]
2008-09-30 15:34:31,235 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQU,
ALGIERS]
2008-09-30 15:34:31,235 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQV,
ALGER]
2008-09-30 15:34:31,235 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQW,
ALEKSANDROVSK SAK]
2008-09-30 15:34:31,235 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQX,
ALGHERO]
2008-09-30 15:34:31,235 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQY,
ALFONSO LOPEZ PUM]
2008-09-30 15:34:31,235 DEBUG [sql.ResultSet] - {rset-100002} Result: [AEQZ,
ALFTAVER]
2008-09-30 15:34:31,251 DEBUG [algorithm.AbstractConcurrentReadCache] - get
called (key=748120546|-1124938390|AEQ%|%|getServSiteLookupInfo|11512063|
select GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION where GLC_CD
like ? and GLC_NM like ? |executeQueryForList|0|-999999)
2008-09-30 15:34:31,251 DEBUG [algorithm.AbstractConcurrentReadCache] -
persistRetrieve called
(key=748120546|-1124938390|AEQ%|%|getServSiteLookupInfo|11512063| select
GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION where GLC_CD like ?
and GLC_NM like ? |executeQueryForList|0|-999999)
2008-09-30 15:34:31,251 DEBUG [base.Cache] - No cache entry exists for
key='748120546|-1124938390|AEQ%|%|getServSiteLookupInfo|11512063| select
GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION where GLC_CD like ?
and GLC_NM like ? |executeQueryForList|0|-999999', creating
2008-09-30 15:34:31,251 DEBUG [algorithm.AbstractConcurrentReadCache] -
persistStore called
(key=748120546|-1124938390|AEQ%|%|getServSiteLookupInfo|11512063| select
GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION where GLC_CD like ?
and GLC_NM like ? |executeQueryForList|0|-999999)
2008-09-30 15:34:31,251 DEBUG [algorithm.AbstractConcurrentReadCache] -
persistRetrieveGroup called (groupName=ServSiteLookupVO.ServSiteLookupVO-cache)
2008-09-30 15:34:31,251 DEBUG [algorithm.AbstractConcurrentReadCache] -
persistStoreGroup called (groupName=ServSiteLookupVO.ServSiteLookupVO-cache)
2008-09-30 15:34:31,267 DEBUG [SimpleStatisticListenerImpl] - cacheEntryAdded
2008-09-30 15:34:31,267 DEBUG [cache.CacheModel] - Cache
'ServSiteLookupVO.ServSiteLookupVO-cache': stored object '[EMAIL PROTECTED],
[EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED]'
2008-09-30 15:34:31,267 DEBUG [vocs.VoCacheDDMSImpl] - Error closing proxyConn
- [getReference]
[servSite]=AEQA [servSiteDescription]=ALFORDSVILLE
[servSite]=AEQB [servSiteDescription]=ALFRED
[servSite]=AEQC [servSiteDescription]=ALFRED
[servSite]=AEQD [servSiteDescription]=ALFRED STATION
[servSite]=AEQE [servSiteDescription]=ALFREDO VASQUEZ C
[servSite]=AEQF [servSiteDescription]=ALFRED
[servSite]=AEQG [servSiteDescription]=ALFRED
[servSite]=AEQH [servSiteDescription]=ALEGRETE
[servSite]=AEQJ [servSiteDescription]=ALGENRODT
[servSite]=AEQK [servSiteDescription]=ALEGRETE NOVO
[servSite]=AEQM [servSiteDescription]=ALGER-HOUARI BOUM
[servSite]=AEQN [servSiteDescription]=ALFRED 01
[servSite]=AEQQ [servSiteDescription]=ALGIERS
[servSite]=AEQS [servSiteDescription]=ALGHERO
[servSite]=AEQT [servSiteDescription]=ALGECIRAS
[servSite]=AEQU [servSiteDescription]=ALGIERS
[servSite]=AEQV [servSiteDescription]=ALGER
[servSite]=AEQW [servSiteDescription]=ALEKSANDROVSK SAK
[servSite]=AEQX [servSiteDescription]=ALGHERO
[servSite]=AEQY [servSiteDescription]=ALFONSO LOPEZ PUM
[servSite]=AEQZ [servSiteDescription]=ALFTAVER
2008-09-30 15:34:31,282 DEBUG [vocs.VoCacheDDMSImpl] - userid=billbinz
2008-09-30 15:34:31,282 DEBUG [vocs.VoCacheDDMSImpl] - password=bil6bil!
2008-09-30 15:34:31,423 DEBUG [sql.Connection] - {conn-100003} Connection
2008-09-30 15:34:31,423 DEBUG [algorithm.AbstractConcurrentReadCache] - get
called (key=1869442161|-1126941579|B%|%|getServSiteLookupInfo|11512063|
select GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION where GLC_CD
like ? and GLC_NM like ? |executeQueryForList|0|-999999)
2008-09-30 15:34:31,423 DEBUG [algorithm.AbstractConcurrentReadCache] -
persistRetrieve called
(key=1869442161|-1126941579|B%|%|getServSiteLookupInfo|11512063| select
GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION where GLC_CD like ?
and GLC_NM like ? |executeQueryForList|0|-999999)
2008-09-30 15:34:31,423 DEBUG [base.Cache] - No cache entry exists for
key='1869442161|-1126941579|B%|%|getServSiteLookupInfo|11512063| select
GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION where GLC_CD like ?
and GLC_NM like ? |executeQueryForList|0|-999999', creating
2008-09-30 15:34:31,423 DEBUG [SimpleStatisticListenerImpl] - accessed
2008-09-30 15:34:31,423 DEBUG [SimpleStatisticListenerImpl] - ACCESS : MISS:
1869442161|-1126941579|B%|%|getServSiteLookupInfo|11512063| select
GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION where GLC_CD like ?
and GLC_NM like ? |executeQueryForList|0|-999999
2008-09-30 15:34:31,423 DEBUG [SimpleStatisticListenerImpl] - STATISTIC : Hit =
0, stale hit =0, miss = 2
2008-09-30 15:34:31,423 DEBUG [cache.CacheModel] - Cache
'ServSiteLookupVO.ServSiteLookupVO-cache': cache miss
2008-09-30 15:34:31,423 DEBUG [sql.PreparedStatement] - {pstm-100001} Executing
Statement: select GLC_CD,GLC_NM from DCAPES_JOPES_REF.S_GEOLOCATION
where GLC_CD like ? and GLC_NM like ?
2008-09-30 15:34:31,423 DEBUG [sql.PreparedStatement] - {pstm-100001}
Parameters: [B%, %]
2008-09-30 15:34:31,423 DEBUG [sql.PreparedStatement] - {pstm-100001} Types:
[java.lang.String, java.lang.String]
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in mil/af/dcapes/ddms/vocs/data/ServSiteLookupVO.xml.
--- The error occurred while applying a parameter map.
--- Check the ServSiteLookupVO.ServSiteParamMap.
--- Check the statement (query failed).
--- Cause: java.sql.SQLException: Closed Connection
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:185)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList(GeneralStatement.java:123)
at
com.ibatis.sqlmap.engine.mapping.statement.CachingStatement.executeQueryForList(CachingStatement.java:97)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:615)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:589)
at
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
at
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:95)
at
mil.af.dcapes.ddms.vocs.VoCacheDDMSImpl.getReference(VoCacheDDMSImpl.java:39)
at
mil.af.dcapes.ddms.vocs.VoCacheDDMSImpl.invokeService(VoCacheDDMSImpl.java:61)
at
mil.af.dcapes.ddms.vocs.VoCacheCloseProblemTest.closeConnectionTest(VoCacheCloseProblemTest.java:62)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at
org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at
org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at
org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at
org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at
org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at
org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at
org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at
org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at
org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.sql.SQLException: Closed Connection
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at
oracle.jdbc.driver.OracleStatement.ensureOpen(OracleStatement.java:3517)
at
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3297)
at
oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3422)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
com.ibatis.common.jdbc.logging.PreparedStatementLogProxy.invoke(PreparedStatementLogProxy.java:62)
at $Proxy7.execute(Unknown Source)
at
com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java:186)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteQuery(GeneralStatement.java:205)
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:173)
... 29 more
2008-09-30 15:34:31,501 DEBUG [vocs.VoCacheDDMSImpl] - Error closing proxyConn
- [getReference]
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.