[jbossseam-issues] [JBoss JIRA] Assigned: (JBSEAM-2124) Natural conversation ids are broken

Pete Muir (JIRA) jira-events at lists.jboss.org
Fri Nov 23 17:04:18 EST 2007


     [ http://jira.jboss.com/jira/browse/JBSEAM-2124?page=all ]

Pete Muir reassigned JBSEAM-2124:
---------------------------------

    Assignee: Pete Muir  (was: Shane Bryzak)

> Natural conversation ids are broken
> -----------------------------------
>
>                 Key: JBSEAM-2124
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-2124
>             Project: JBoss Seam
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.0.CR2
>            Reporter: Shane Bryzak
>         Assigned To: Pete Muir
>            Priority: Blocker
>             Fix For: 2.0.1.GA
>
>
> When re-entering an existing conversation that uses a natural conversation id, we currently get a "Conversation id is already in use" exception like the following:
> Caused by: java.lang.IllegalStateException: Conversation id is already in use: PlaceBid:62748261
>         at org.jboss.seam.core.Manager.updateCurrentConversationId(Manager.java:90)
>         at org.jboss.seam.faces.FacesManager.beforeRedirect(FacesManager.java:73)
>         at org.jboss.seam.faces.FacesManager.redirect(FacesManager.java:164)
>         at org.jboss.seam.faces.Navigator.redirect(Navigator.java:91)
>         at org.jboss.seam.navigation.RedirectNavigationHandler.navigate(RedirectNavigationHandler.java:53)
>         at org.jboss.seam.navigation.Rule.execute(Rule.java:100)
>         at org.jboss.seam.navigation.Navigation.navigate(Navigation.java:123)
>         at org.jboss.seam.navigation.Pages.navigate(Pages.java:134)
>         at org.jboss.seam.jsf.SeamNavigationHandler.handleNavigation(SeamNavigationHandler.java:83)
>         at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:119)
>         at javax.faces.component.UICommand.broadcast(UICommand.java:383)
>         at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
>         at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
>         at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
> The workaround for this is to specify the named conversation within the @Begin annotation for the action being called, like so:
> @Begin(join = true, conversation = "PlaceBid")
> public void placeBid() { 
> This way, ConversationInterceptor can redirect to the existing named conversation the same way it does a ce.redirect() for standard conversations.  However this is less than ideal, as we don't want to introduce yet another annotation attribute here if we can avoid it.  The preferred way of configuring this would be in a navigation rule in pages.xml:
>     <page view-id="/auction.xhtml">
>         <param name="id" value="#{auctionDetail.selectedAuctionId}"/>
>         
>         <navigation from-action="#{bidAction.placeBid}">
>           <begin-conversation join="true" conversation="PlaceBid"/>
>           <redirect view-id="/bid.xhtml"/>
>         </navigation>
>     </page>
> The problem with this though is that it happens too late - conversation propagation defined in navigation rules like this get processed in ConversationControl.beginOrEndConversation(), after the action method has already been invoked thereby producing the same "Conversation id already in use" exception.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list