[Seasar-user:4075] S2のコネクションプーリングについて
齋藤 宗範
[E-MAIL ADDRESS DELETED]
2006年 7月 14日 (金) 12:00:59 JST
お世話になっております。
齋藤と申します。
DIコンテナからデータソースを取得し、DBアクセスをしています。
DBアクセスをした後にResultSet>PreparedStatement>Connectionの順に
close()を呼び出しているのですが、DBのカーソルが残ったままになります。
何度も処理を実行するとカーソルの上限を超えてしまい、エラーが発生してしまいま
す。
oracle のカーソルの上限をあげる以外にエラーを回避する方法はあるのでしょうか
?
もしくは、何か設定もれがあるのでしょうか?
そもそもの知識不足で不適切な質問をしているかもしれませんが、
ご教授よろしくお願いいたします。
データベースはoracle 10gを使用しています。
コネクションプールの設定は以下です。
<component
name="connectionPool"
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
<property name="timeout">600</property>
<property name="maxPoolSize">10</property>
<!--
JTAトランザクションが開始されていない場合にコネクションを
取得できないようにするには次のプロパティをfalseにしてください.
-->
<property name="allowLocalTx">true</property>
<destroyMethod name="close"/>
</component>
<component
name="dataSource"
class="org.seasar.extension.dbcp.impl.DataSourceImpl"/>
スタックトレース
Caused by: java.sql.SQLException: ORA-01000: 最大オープン・カーソル数を超え
ました。
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at
oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:21
3)
at
oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatem
ent.java:908)
at
oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java
:1114)
at
oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStat
ement.java:959)
at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java
:1234)
at
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedSta
tement.java:3415)
at
oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatem
ent.java:3459)
at
org.seasar.extension.dbcp.impl.ConnectionWrapperImpl$PreparedStatementWrappe
r.executeQuery(ConnectionWrapperImpl.java:564)
at
org.seasar.framework.util.PreparedStatementUtil.executeQuery(PreparedStateme
ntUtil.java:35)
at
org.seasar.extension.jdbc.impl.BasicResultSetFactory.createResultSet(BasicRe
sultSetFactory.java:36)
at
org.seasar.extension.jdbc.impl.OracleResultSetFactory.createResultSet(Oracle
ResultSetFactory.java:27)
at
org.seasar.extension.jdbc.impl.BasicSelectHandler.createResultSet(BasicSelec
tHandler.java:173)
at
org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler
.java:162)
at
org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler
.java:135)
at
org.seasar.extension.jdbc.impl.BasicSelectHandler.execute(BasicSelectHandler
.java:120)
at
org.seasar.dao.impl.SelectDynamicCommand.execute(SelectDynamicCommand.java:5
5)
at
org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:53
)
Seasar-user メーリングリストの案内