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 以使其全球化。我将卸妆周期设为 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 回答