[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 メーリングリストの案内