[jboss-user] [JBoss Seam] - @End from "join" ends all conversations - unexpected action
Bernix
do-not-reply at jboss.com
Thu Dec 20 04:00:00 EST 2007
I have two beans in conversation scope, beanA and beanB. beanA is backing pageA individually,and beanB is backing pageB individually.
beanA will begin the long-running conversation in pageA at first, then we jump to pageB, pageB will begin(join=true) beanB.
but when we end the joined conversation in beanB.done , the beanA is destroyed as well.....
beanA
@Stateful
| @Scope(CONVERSATION)
| @Name("beanA")
| public class BeanA implements IBeanA {
|
| public BeanA() {
| System.out.println(">>>>>> BeanA is constructed.");
| }
|
| @Begin
| public void init() {
| System.out.println(">>>>>> BeanA is initialized.");
| }
|
| @End
| public void done() {
| System.out.println(">>>>>> BeanA is done.");
| }
|
| @Remove
| public void destroy() {
| System.out.println(">>>>>> BeanA is destroyed.");
| }
| }
beanB
@Stateful
| @Name("beanB")
| @Scope (CONVERSATION)
| public class BeanB implements IBeanB {
|
| public BeanB() {
| System.out.println(">>>>>> BeanB is constructed.");
| }
|
| @Begin(join=true)
| public void init() {
| System.out.println(">>>>>> BeanB is initialized.");
| }
|
| @End(beforeRedirect=true)
| public void done() {
| System.out.println(">>>>>> BeanB is done.");
| }
|
| @Remove
| public void destroy() {
| System.out.println(">>>>>> BeanB is destroyed.");
| }
| }
home.xhtml
<s:link view="/pageA.xhtml" action="#{beanA.init()}" value="Go to beanA">
pageA
<s:link view="/pageB.xhtml" action="#{beanB.init()}" value="Go to beanB"/>
pageB
<h:form>
| <h:commandButton action="#{beanB.done}" value="Done beanB"/>
| </h:form>
pageB.page.xml
<navigation from-action="#{beanB.done}">
| <redirect view-id="/pageA.xhtml"/>
| </navigation>
we do the following steps:
1. enter home page
2. link to pageA
3. link to pageB
4. click "Done beanB" in pageB
then we got the exception.....the log is:
16:31:46,333 INFO [STDOUT] >>>>>> BeanA is constructed.
| 16:31:46,458 INFO [STDOUT] >>>>>> BeanA is initialized.
| 16:31:49,458 INFO [STDOUT] >>>>>> BeanB is constructed.
| 16:31:49,489 INFO [STDOUT] >>>>>> BeanB is initialized.
| 16:31:56,129 INFO [STDOUT] >>>>>> BeanB is done.
| 16:31:56,145 INFO [STDOUT] >>>>>> BeanB is destroyed.
| 16:31:56,161 INFO [STDOUT] >>>>>> BeanA is destroyed.
| 16:31:56,254 INFO [STDOUT] >>>>>> BeanA is constructed.
|
Why the @End in beanB.done() cause the beanA to be destroyed?
We would hope that resume to beanA when beanB is done.
I know we can use nested conversation in beanB,yes,nested conversation works OK.
I just wondering,if I join a conversation,how can I end it then resume to the previous long-running conversation?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4114530#4114530
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4114530
More information about the jboss-user
mailing list