0

アプリケーションで次のエラーが発生します。

2012-04-27 12:29:07,623 4540114 DEBUG [org.jboss.seam.jsf.SeamPhaseListener] (http-localhost%2F127.0.0.1-8080-3:) committing transaction after phase: INVOKE_APPLICATION 5
2012-04-27 12:29:07,623 4540114 DEBUG [org.jboss.seam.transaction.UTTransaction] (http-localhost%2F127.0.0.1-8080-3:) committing JTA transaction
2012-04-27 12:29:07,624 4540115 ERROR [org.jboss.aspects.tx.TxPolicy] (http-localhost%2F127.0.0.1-8080-3:) javax.ejb.NoSuchEJBException: Could not find stateful bean: a2d6v-rpg5ad-h1j0xu2n-1-h1j3g9no-cb
2012-04-27 12:29:07,624 4540115 WARN  [org.jboss.seam.jsf.SeamPhaseListener] (http-localhost%2F127.0.0.1-8080-3:) uncaught exception, passing to exception handler
java.lang.IllegalStateException: Could not commit transaction
    at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListener.java:625)

デバッグ中にアプリケーション部分で成功し、ページリダイレクトになると、このエラーが発生します。

どこが間違っている可能性があるかについて、誰かが私にいくつかの指針を与えることができますか?

4

1 に答える 1

0

同様の問題が発生しましたが、それはすべて、Bean 自体のタイムアウトに関係していました。

アノテーションを使用して、ステートフル Bean 自体にタイムアウトを設定できます。

@CacheConfig (maxSize=100000, idleTimeoutSeconds=300, removalTimeoutSeconds=0)

または、JBOSS_HOME\server\default\conf\standardjboss.xml を次のように設定します。

<container-configuration>
      <container-name>Standard Stateful SessionBean</container-name>
      ...
      <container-cache-conf>
        ...
        <cache-policy-conf>              
          <remover-period>0</remover-period>
          <max-bean-life>900</max-bean-life>

指定されたパラメータは秒です。
私は個人的に standardjboss.xml を変更してグローバルにしました。remover-period を 0 にして、無限大に設定しました。Bean の最大寿命より短い場合、その状態は削除され、Bean に触れていない場合は javax.ejb.NoSuchEJBException が発生します。また、ステートフル Bean が実際にぶら下がっている必要があることも確認する価値があります。

https://community.jboss.org/wiki/howdothetimeoutsworkwithejb3statefulbeans

https://community.jboss.org/wiki/JbossTimeoutSettingForSeam

http://docs.jboss.org/seam/2.2.2.Final/reference/en-US/html_single/#d0e25223

于 2012-05-08T13:16:00.177 に答える