javax.ejb.NoSuchEJBException:找不到有状态bean

时间:2012-05-02 13:06:15

标签: jsf java-ee ejb seam

我的应用程序出现以下错误:

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)

调试时我在应用程序部分成功,当涉及页面重定向时,会发生此错误。

有人可以给我一些关于它可能出错的指示吗?

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,这与豆子本身的超时有关。

您可以使用注释

在有状态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。 还值得检查一下,你实际上需要一个有状态的豆子。

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