2012-05-02 34 views
0

我得到我的應用程序出現以下錯誤:javax.ejb.NoSuchEJBException:找不到狀態bean

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) 

在調試我成功的應用部分,當它來到網頁重定向,出現此錯誤。

有人可以給我一些指示,看看它可能出錯嗎?

回答

0

我剛剛有一個類似的問題,這與bean本身的超時有關。

您可以在狀態bean本身帶有註釋

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

或通過設置JBOSS_HOME \服務器\ 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