WELD-000215 Attempt to call end() on a transient conversation
karl_zhang Sep 25, 2012 5:36 AMDear All,
I am now trying to migrate a application from JBoss4 to JBoss7.1.1. During the regression test I found the following exception in JBoss server log file:
Session event listener threw exception: org.jboss.weld.exceptions.IllegalStateException: WELD-000215 Attempt to call end() on a transient conversation
at org.jboss.weld.context.conversation.ConversationImpl.end(ConversationImpl.java:114) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
at org.jboss.weld.context.AbstractConversationContext.destroy(AbstractConversationContext.java:303) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
at org.jboss.weld.context.http.HttpConversationContextImpl.destroy(HttpConversationContextImpl.java:12) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
at org.jboss.weld.context.http.HttpSessionContextImpl.destroy(HttpSessionContextImpl.java:61) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
at org.jboss.weld.servlet.WeldListener.sessionDestroyed(WeldListener.java:88) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:690) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:585) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:390) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:375) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1316) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590) [jbossweb-7.0.13.Final.jar:]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_04]
I don't understand in what circumstance this could happen.
If a bean was declared as long conversation through conversation.begin(), why it could become transient later?
On the other hand, if a conversation bean was transient or a long conversation bean became transient by calling conversation.end(), why it will be handled by ConversationImpl?
Could anyone give me an explanation? Thank you!
Best Regards,
Karl