[Seasar-user:6964] WebSphere 6.0 における[ESSR0062]エラー発生について

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 3月 29日 (木) 20:02:08 JST


島本と申します。

WebSphere 6.0.2.17 + seasar2.2.9 + s2hibernate1.1.0 + s2-axis-1.0.0を使って
おります。
フレームワークは、swingを使用しています。

月に一回程度、月次処理によるアクセスが集中すると思われる時期に、
Exceptionが発生し、新規アクセスができなくなっています。
現象としては、クライアント画面は起動するが、固まってしまいます。
Exception発生以前にアクセス済みのものは、
発生後も問題なく使用できているようです。

調べた所、seasar2.2.9のバージョンでは
ConnectionPoolImpl#checkInTx()にてnotifyしていないというバグを見つけまし
た。
あと、以下のサイトを見つけました。

http://ameblo.jp/confidencial/entry-10007478236.html

これによると、3つのポイントの一つで、
「S2のトランザクション管理クラスは当然書かない」
という記述を見受けました。
今こちらの設定は、S2のトランザクション管理クラスを使用しています。

設定情報、エラーログを以下に記述します。

【j2ee.dicon】
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components namespace="j2ee">
     <component name="transactionManager"
          class="org.seasar.extension.jta.TransactionManagerImpl"/>
     <component name="requiredTx"
          class="org.seasar.extension.tx.RequiredInterceptor"/>
     <component name="requiresNewTx"
          class="org.seasar.extension.tx.RequiresNewInterceptor"/>
     <component name="mandatoryTx"
          class="org.seasar.extension.tx.MandatoryInterceptor"/>
     <component name="notSupportedTx"
          class="org.seasar.extension.tx.NotSupportedInterceptor"/>

     <component class
="org.seasar.extension.jdbc.impl.BasicStatementFactory"/>
     <component class
="org.seasar.extension.jdbc.impl.OracleResultSetFactory"/>

     <component name="xaDataSource"
          class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
          <property name="driverClassName">
               "oracle.jdbc.driver.OracleDriver"
          </property>
          <property name="URL">
          "jdbc:oracle:thin:****:1521:****"
          </property>
          <property name="user">"****"</property>
          <property name="password">"****"</property>
     </component>

     <component name="connectionPool"
          class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
          <property name="timeout">600</property>
          <property name="maxPoolSize">500</property>
          <!-- JTAトランザクションが開始されていない場合にコネクションを
               取得できないようにするには次のプロパティをfalseにしてくださ
い.-->
          <property name="allowLocalTx">true</property>
          <destroyMethod name="close"/>
     </component>
     <component name="dataSource"
          class="org.seasar.extension.dbcp.impl.DataSourceImpl"/>

</components>


【エラーログ】
org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外が発
生しました。
理由はorg.seasar.framework.exception.SSQLException: [ESSR0062]コネクション
は既に閉じています
     at
org.seasar.framework.util.ConnectionUtil.prepareCall(ConnectionUtil.java(Inlined

Compiled Code))
・
・
Caused by: org.seasar.framework.exception.SSQLException: [ESSR0062]コネク
ションは既に閉じています
     at
org.seasar.extension.dbcp.impl.ConnectionWrapperImpl.assertOpened(ConnectionWrapperImpl.java(Inlined

Compiled Code))
     at
org.seasar.extension.dbcp.impl.ConnectionWrapperImpl.prepareCall(ConnectionWrapperImpl.java(Compiled

Code))
     ... 58 more

中略・・・

org.seasar.hibernate.HibernateRuntimeException: [EHBN0001]Hibernateで例外が
発生しました。
理由はnet.sf.hibernate.exception.GenericJDBCException: Could not execute
query
     at
org.seasar.hibernate.impl.S2SessionImpl.find(S2SessionImpl.java(Inlined
Compiled Code))
・
・
Caused by: net.sf.hibernate.exception.GenericJDBCException: Could not
execute query
     at
net.sf.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:80)
     at
net.sf.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:69)
     at
net.sf.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
     at net.sf.hibernate.impl.SessionImpl.convert(SessionImpl.java(Inlined
Compiled Code))
     at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java(Compiled
Code))
     at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java(Compiled
Code))
     ... 55 more
Caused by: org.seasar.framework.exception.SSQLException: [ESSR0062]コネク
ションは既に閉じています
     at
org.seasar.extension.dbcp.impl.ConnectionWrapperImpl.assertOpened(ConnectionWrapperImpl.java(Inlined

Compiled Code))
     at
org.seasar.extension.dbcp.impl.ConnectionWrapperImpl.prepareStatement(ConnectionWrapperImpl.java(Compiled

Code))
     at
net.sf.hibernate.impl.BatcherImpl.getPreparedStatement(BatcherImpl.java(Compiled

Code))
     at
net.sf.hibernate.impl.BatcherImpl.getPreparedStatement(BatcherImpl.java(Inlined

Compiled Code))
     at
net.sf.hibernate.impl.BatcherImpl.prepareQueryStatement(BatcherImpl.java(Compiled

Code))
     at
net.sf.hibernate.loader.Loader.prepareQueryStatement(Loader.java(Compiled
Code))
     at net.sf.hibernate.loader.Loader.doQuery(Loader.java(Compiled Code))
     at
net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java(Compiled

Code))
     at net.sf.hibernate.loader.Loader.doList(Loader.java(Inlined Compiled
Code))
     at net.sf.hibernate.loader.Loader.list(Loader.java(Compiled Code))
     at
net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java(Inlined
Compiled Code))
     ... 57 more


原因ではないかと思われる情報はいくつか収集したのですが、
決定的な情報が無い状態です。

どなたか、ご教授いただけないでしょうか。
宜しくお願い致します。






Seasar-user メーリングリストの案内