Problems with application-like behaviour project
raffaele.camanzo Oct 31, 2006 6:49 AMHi All,
I'm currently developing an application-like project using Seam 1.1 beta 1 (CVS ver. 30/10), JBoss 4.0.5, Myfaces and Facelets (I removed everything about Tomahawk because of too many headaches).
This project provides its services with a tabbed layout (I made a first tryout using Tomahawk tabbed pane component... But too many strange behaviours, waste of time and headaches) allowing the user to open a tab (or give the caption to an already opened) from a menu or from another tab keeping the current state (for example the results of a search) of each of them (it is not reasonable that a search page does not keep track of the last search request if I move on a detail page for a result item and then I move back to the search page).
To achieve this goal using Seam I want to create a conversation for each tab currently opened. In order to resume the current state (what the user did on it) of the selected tab I tried to create conversations with an explicit ID (Seam should detect that there is a conversation with the same identifier, resume that one and not call again the begin method).
To check the capability I created a simple project which merely creates a list of links which call the same action (the @Begin method of my conversation with a static id... in this example). I was expecting that the first time Seam creates the conversation and the others refers to it, but this is the result of my tryouts:
1 - The first, the best possible for my needs and probably what-I-cannot-do tryout:
The h:commandLink action was a method of a session scoped stateful bean (something like a session handler) with the logics to retrieve the outcome related to the tab-action and, using the page-action model (faces-config.xml + pages.xml), call the begin method of the correct conversation.
Unfortunately this approach fails because when the Manager tries to set the id of the current conversation, the conversation list is unmodifiable and I get an UnsupportedOperationException; but this is reasonable because Gavin told in more than a post that the conversation is strictly related to the request boundaries and then probably when Seam tries to set the conversation id the request handling is in a state that makes this operation unsafe (even if there is a redirection to a different action handler, and should seem a different request I think that the http request is only one and the redirection is an internal handling of Seam).
2 ? Not the best? but a good one:
The h:commandLink action is the begin method of the conversation which handles the tab behaviour, the first time the action is called Seam reads the id, does not find it in the conversations list and creates the conversation with the given identifier (and calls the begin method). If the user clicks the link another time Seam finds the conversation and switches to that one without invoking the begin method. Unfortunately also this approach fails, indeed, Seam throws an exception when I click the link the second time saying to me that is unable to render a view for a null viewId (I like the Seam logics of not to call again the begin method but I hoped that the outcome was stored and passed to the Seam rendering handler to render the same view). Probably I left something and I hope that someone can help me to understand where my logics is wrong and how can I solve this problem, but now? a little bit of code to have a wider vision of the problem:
Layout.xhtml (the page with the list of links)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:s="http://jboss.com/products/seam/taglib" xmlns:c="http://java.sun.com/jstl/core"> <f:view> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title><h:outputText value="#{mainmsg.title}" /></title> <link href="css/main.css" rel="stylesheet" type="text/css"/> </head> <body> <div id="document"> <div id="header"> <div id="title"></div> <div id="status"> <ui:insert name=?status? /> </div> </div> <div id="container"> <div> <h:form> <ul> <c:forEach items="#{sessionHandler.contextTabs}" var="contextTab"> <li> <h:commandLink action="#{provaAction.startConversation}"> <h:outputText value="label" /> <f:param name="token" value="#{contextTab.token}" /> <f:param name="conversationPropagation" value="nest" /> </h:commandLink> </li> </c:forEach> </ul> </h:form> <ui:insert name="contextmanager" /> </div> </div> </div> </body> </f:view> </html>
ProvaAction.java (the tab handler)
import javax.ejb.Remove; import javax.ejb.Stateful; import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; import org.jboss.logging.Logger; import org.jboss.seam.annotations.Begin; import org.jboss.seam.annotations.Conversational; import org.jboss.seam.annotations.Create; import org.jboss.seam.annotations.Destroy; import org.jboss.seam.annotations.End; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Out; import org.jboss.seam.core.Conversation; @Stateful @Name("provaAction") @Conversational public class ProvaAction implements Prova { @Begin(id="mypersonalid", nested=true) public String startConversation() { FacesContext context = FacesContext.getCurrentInstance(); String tok = (String) context.getExternalContext().getRequestParameterMap().get("token"); Logger.getLogger(this.getClass()).info("TOKEN IS: " + tok); Logger.getLogger(this.getClass()).info("CONVERSATION IS: " + Conversation.instance().getId()); return "prova"; } @End public String endConversation() { // TODO Auto-generated method stub return null; } @Remove @Destroy public void destroy() { // TODO Auto-generated method stub } }
exception:
2006-10-31 12:21:41,797 DEBUG [org.jboss.seam.contexts.Lifecycle] >>> Begin web request 2006-10-31 12:21:41,797 DEBUG [org.jboss.seam.Component] instantiating Seam component: org.jboss.seam.core.manager 2006-10-31 12:21:41,797 DEBUG [org.jboss.seam.Component] initializing new instance of: org.jboss.seam.core.manager 2006-10-31 12:21:41,797 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.core.manager 2006-10-31 12:21:41,798 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.core.manager 2006-10-31 12:21:41,798 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postCreate.org.jboss.seam.core.manager 2006-10-31 12:21:41,798 DEBUG [org.jboss.seam.core.Manager] Found conversation id in request parameter: mypersonalid 2006-10-31 12:21:41,798 DEBUG [org.jboss.seam.core.Manager] Restoring conversation with id: mypersonalid 2006-10-31 12:21:41,798 DEBUG [org.jboss.seam.jsf.AbstractSeamPhaseListener] After restoring conversation context: ConversationContext(myperson alid) 2006-10-31 12:21:41,798 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.Namin gContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 2006-10-31 12:21:41,798 DEBUG [org.jboss.seam.jsf.AbstractSeamPhaseListener] committing transaction after phase: RESTORE_VIEW(1) 2006-10-31 12:21:41,798 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.Namin gContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 2006-10-31 12:21:41,798 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.Namin gContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 2006-10-31 12:21:41,798 DEBUG [org.jboss.seam.jsf.AbstractSeamPhaseListener] beginning transaction prior to phase: RENDER_RESPONSE(6) 2006-10-31 12:21:41,799 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.Namin gContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 2006-10-31 12:21:41,799 DEBUG [org.jboss.seam.contexts.Lifecycle] flushing page context 2006-10-31 12:21:41,799 DEBUG [org.jboss.seam.Component] instantiating Seam component: facesMessages 2006-10-31 12:21:41,799 DEBUG [org.jboss.seam.Component] initializing new instance of: facesMessages 2006-10-31 12:21:41,799 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.facesMessages 2006-10-31 12:21:41,799 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.facesMessages 2006-10-31 12:21:41,799 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postCreate.facesMessages 2006-10-31 12:21:41,805 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: sessionHandler 2006-10-31 12:21:41,805 DEBUG [org.jboss.seam.contexts.Contexts] found in session context: sessionHandler 2006-10-31 12:21:41,805 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolved name to Seam component 2006-10-31 12:21:41,806 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preRemoveVariable.currentTab 2006-10-31 12:21:41,806 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postRemoveVariable.currentTab 2006-10-31 12:21:41,806 DEBUG [org.jboss.seam.contexts.Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts 2006-10-31 12:21:41,809 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: mainmsg 2006-10-31 12:21:41,809 DEBUG [org.jboss.seam.contexts.Contexts] found in event context: mainmsg 2006-10-31 12:21:41,809 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolved name to Seam component 2006-10-31 12:21:41,810 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: sessionHandler 2006-10-31 12:21:41,810 DEBUG [org.jboss.seam.contexts.Contexts] found in session context: sessionHandler 2006-10-31 12:21:41,810 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolved name to Seam component 2006-10-31 12:21:41,810 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preRemoveVariable.currentTab 2006-10-31 12:21:41,810 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postRemoveVariable.currentTab 2006-10-31 12:21:41,810 DEBUG [org.jboss.seam.contexts.Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts 2006-10-31 12:21:41,811 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: sessionHandler 2006-10-31 12:21:41,811 DEBUG [org.jboss.seam.contexts.Contexts] found in session context: sessionHandler 2006-10-31 12:21:41,811 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolved name to Seam component 2006-10-31 12:21:41,811 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preRemoveVariable.currentTab 2006-10-31 12:21:41,811 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postRemoveVariable.currentTab 2006-10-31 12:21:41,811 DEBUG [org.jboss.seam.contexts.Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts 2006-10-31 12:21:41,812 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: provaAction 2006-10-31 12:21:41,812 DEBUG [org.jboss.seam.contexts.Contexts] found in conversation context: provaAction 2006-10-31 12:21:41,812 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolved name to Seam component 2006-10-31 12:21:41,814 DEBUG [org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor] ++++ LongLivedSessionPropagationIntercep tor 2006-10-31 12:21:41,814 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preRemoveVariable.currentTab 2006-10-31 12:21:41,814 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postRemoveVariable.currentTab 2006-10-31 12:21:41,814 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preRemoveVariable.token 2006-10-31 12:21:41,814 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postRemoveVariable.token 2006-10-31 12:21:41,814 DEBUG [org.jboss.seam.contexts.Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts 2006-10-31 12:21:41,815 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: conversation 2006-10-31 12:21:41,815 DEBUG [org.jboss.seam.contexts.Contexts] found in conversation context: conversation 2006-10-31 12:21:41,815 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolved name to Seam component 2006-10-31 12:21:41,817 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preRemoveVariable.org.jboss.seam.core.pageParameters 2006-10-31 12:21:41,817 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postRemoveVariable.org.jboss.seam.core.pageParameter s 2006-10-31 12:21:41,817 DEBUG [org.jboss.seam.core.Manager] Storing conversation state: mypersonalid 2006-10-31 12:21:41,817 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.core.manager.conversat ionId 2006-10-31 12:21:41,817 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.core.manager.conversa tionId 2006-10-31 12:21:41,817 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.core.manager.conversat ionIsLongRunning 2006-10-31 12:21:41,817 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.core.manager.conversa tionIsLongRunning 2006-10-31 12:21:41,825 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.Namin gContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 2006-10-31 12:21:41,825 DEBUG [org.jboss.seam.jsf.AbstractSeamPhaseListener] committing transaction after phase: RENDER_RESPONSE(6) 2006-10-31 12:21:41,825 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.Namin gContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 2006-10-31 12:21:41,825 DEBUG [org.jboss.seam.contexts.Lifecycle] After render response, destroying contexts 2006-10-31 12:21:41,825 DEBUG [org.jboss.seam.contexts.Lifecycle] destroying business process context 2006-10-31 12:21:41,825 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preDestroyContext.BUSINESS_PROCESS 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postDestroyContext.BUSINESS_PROCESS 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.contexts.Lifecycle] flushing server-side conversation context 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.contexts.Lifecycle] flushing session context 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.contexts.Lifecycle] destroying event context 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preDestroyContext.EVENT 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.contexts.Contexts] destroying: cal 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.contexts.Contexts] destroying: org.jboss.seam.core.manager 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preDestroy.org.jboss.seam.core.manager 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.contexts.Contexts] destroying: msgs 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.contexts.Contexts] destroying: dbb 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.contexts.Contexts] destroying: amsg 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.contexts.Contexts] destroying: facelets.Encoding 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.contexts.Contexts] destroying: org.apache.myfaces.application.jsp.JspStateManagerImpl.SERIALIZED_ VIEW 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.contexts.Contexts] destroying: mainmsg 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.contexts.Contexts] destroying: com.sun.facelets.legacy.ELCONTEXT 2006-10-31 12:21:41,826 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postDestroyContext.EVENT 2006-10-31 12:21:41,827 DEBUG [org.jboss.seam.contexts.Lifecycle] <<< End web request 2006-10-31 12:21:41,827 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.Namin gContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 2006-10-31 12:21:41,827 DEBUG [org.jboss.seam.servlet.SeamExceptionFilter] ended request 2006-10-31 12:21:46,777 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.Namin gContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 2006-10-31 12:21:46,777 DEBUG [org.jboss.seam.jsf.AbstractSeamPhaseListener] beginning transaction prior to phase: RESTORE_VIEW(1) 2006-10-31 12:21:46,777 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.Namin gContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 2006-10-31 12:21:46,777 DEBUG [org.jboss.seam.contexts.Lifecycle] >>> Begin web request 2006-10-31 12:21:46,788 DEBUG [org.jboss.seam.Component] instantiating Seam component: org.jboss.seam.core.manager 2006-10-31 12:21:46,789 DEBUG [org.jboss.seam.Component] initializing new instance of: org.jboss.seam.core.manager 2006-10-31 12:21:46,789 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.core.manager 2006-10-31 12:21:46,789 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.core.manager 2006-10-31 12:21:46,789 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postCreate.org.jboss.seam.core.manager 2006-10-31 12:21:46,789 DEBUG [org.jboss.seam.core.Manager] Restoring conversation with id: mypersonalid 2006-10-31 12:21:46,789 DEBUG [org.jboss.seam.jsf.AbstractSeamPhaseListener] After restoring conversation context: ConversationContext(4) 2006-10-31 12:21:46,790 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: provaAction 2006-10-31 12:21:46,790 DEBUG [org.jboss.seam.contexts.Contexts] found in conversation context: provaAction 2006-10-31 12:21:46,790 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolved name to Seam component 2006-10-31 12:21:46,790 DEBUG [org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor] ++++ LongLivedSessionPropagationIntercep tor 2006-10-31 12:21:46,790 DEBUG [org.jboss.seam.Component] instantiating Seam component: interpolator 2006-10-31 12:21:46,790 DEBUG [org.jboss.seam.Component] initializing new instance of: interpolator 2006-10-31 12:21:46,791 ERROR [org.apache.myfaces.application.jsp.JspViewHandlerImpl] ViewId must not be null 2006-10-31 12:21:46,791 DEBUG [org.jboss.mx.loading.RepositoryClassLoader] setRepository, repository=org.jboss.mx.loading.HeirarchicalLoaderRep ository3@32831c19, cl=org.jboss.mx.loading.HeirarchicalLoaderRepository3$CacheClassLoader@4660a77c{ url=null ,addedOrder=0} 2006-10-31 12:21:46,791 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preRemoveVariable.provaAction 2006-10-31 12:21:46,791 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postRemoveVariable.provaAction 2006-10-31 12:21:46,791 DEBUG [org.jboss.seam.interceptors.RemoveInterceptor] Stateful component was removed: provaAction 2006-10-31 12:21:46,795 DEBUG [org.jboss.seam.Component] instantiating Seam component: org.jboss.seam.core.exceptions 2006-10-31 12:21:46,795 DEBUG [org.jboss.seam.Component] initializing new instance of: org.jboss.seam.core.exceptions 2006-10-31 12:21:46,795 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.core.exceptions 2006-10-31 12:21:46,795 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.core.exceptions 2006-10-31 12:21:46,795 INFO [org.jboss.seam.interceptors.ExceptionInterceptor] no exceptions.xml file found 2006-10-31 12:21:46,798 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postCreate.org.jboss.seam.core.exceptions 2006-10-31 12:21:46,799 ERROR [org.jboss.seam.interceptors.ExceptionInterceptor] redirecting to debug page javax.ejb.EJBTransactionRolledbackException: java.lang.NullPointerException: ViewId must not be null at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:93) at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130) at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:201) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulInstanceInterceptor.java:83) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78) at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:131) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.stateful.StatefulContainer.localInvoke(StatefulContainer.java:203) at org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:98) at $Proxy155.startConversation(Unknown Source) at it.finservice.organizer.modules.dummy.components.Prova$$FastClassByCGLIB$$d2bea6d.invoke(<generated>) at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:47) at org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideInterceptor.java:67) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:57) at org.jboss.seam.interceptors.ExceptionInterceptor.handleExceptions(ExceptionInterceptor.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.seam.util.Reflections.invoke(Reflections.java:17) at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66) at org.jboss.seam.interceptors.AsynchronousInterceptor.invokeAsynchronouslyIfNecessary(AsynchronousInterceptor.java:29) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.seam.util.Reflections.invoke(Reflections.java:17) at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66) at org.jboss.seam.intercept.RootInterceptor.invokeInContexts(RootInterceptor.java:168) at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:141) at org.jboss.seam.intercept.RootInterceptor.aroundInvoke(RootInterceptor.java:128) at org.jboss.seam.intercept.ClientSideInterceptor.interceptInvocation(ClientSideInterceptor.java:60) at org.jboss.seam.intercept.ClientSideInterceptor.intercept(ClientSideInterceptor.java:47) at org.jboss.seam.intercept.Proxy$$EnhancerByCGLIB$$ed08c757.startConversation(<generated>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sun.el.parser.AstValue.invoke(AstValue.java:151) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283) at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68) at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:69) at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:63) at javax.faces.component.UICommand.broadcast(UICommand.java:106) at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168) at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343) at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:45) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:32) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.NullPointerException: ViewId must not be null at org.apache.myfaces.application.jsp.JspViewHandlerImpl.getViewIdPath(JspViewHandlerImpl.java:281) at org.apache.myfaces.application.jsp.JspViewHandlerImpl.getActionURL(JspViewHandlerImpl.java:158) at org.jboss.seam.jsf.SeamViewHandler.getActionURL(SeamViewHandler.java:48) at com.sun.facelets.FaceletViewHandler.getActionURL(FaceletViewHandler.java:786) at org.jboss.seam.core.Manager.redirect(Manager.java:864) at org.jboss.seam.core.Manager.redirect(Manager.java:798) at org.jboss.seam.core.ConversationEntry.select(ConversationEntry.java:89) at org.jboss.seam.interceptors.ConversationInterceptor.getOutcomeForConversationId(ConversationInterceptor.java:94) at org.jboss.seam.interceptors.ConversationInterceptor.endOrBeginLongRunningConversation(ConversationInterceptor.java:50) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.seam.util.Reflections.invoke(Reflections.java:17) at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66) at org.jboss.seam.interceptors.BusinessProcessInterceptor.manageBusinessProcessContext(BusinessProcessInterceptor.java:50) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.seam.util.Reflections.invoke(Reflections.java:17) at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66) at org.jboss.seam.interceptors.ConversationalInterceptor.checkConversationForConversationalBean(ConversationalInterceptor.java:81) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.seam.util.Reflections.invoke(Reflections.java:17) at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66) at org.jboss.seam.interceptors.EventInterceptor.aroundInvoke(EventInterceptor.java:51) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.seam.util.Reflections.invoke(Reflections.java:17) at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66) at org.jboss.seam.interceptors.RemoveInterceptor.removeIfNecessary(RemoveInterceptor.java:40) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.seam.util.Reflections.invoke(Reflections.java:17) at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66) at org.jboss.seam.intercept.RootInterceptor.invokeInContexts(RootInterceptor.java:168) at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:141) at org.jboss.seam.intercept.RootInterceptor.aroundInvoke(RootInterceptor.java:128) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118) at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor.invoke(ExtendedPersistenceContextPropagationInterceptor.java: 57) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126) ... 84 more 2006-10-31 12:21:46,802 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.debug.lastException 2006-10-31 12:21:46,802 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.debug.lastException 2006-10-31 12:21:46,802 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.debug.phaseId 2006-10-31 12:21:46,802 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.debug.phaseId 2006-10-31 12:21:46,802 DEBUG [org.jboss.seam.Component] instantiating Seam component: redirect 2006-10-31 12:21:46,802 DEBUG [org.jboss.seam.Component] initializing new instance of: redirect 2006-10-31 12:21:46,803 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.redirect 2006-10-31 12:21:46,803 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.redirect 2006-10-31 12:21:46,803 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postCreate.redirect 2006-10-31 12:21:46,803 DEBUG [org.jboss.mx.loading.RepositoryClassLoader] setRepository, repository=org.jboss.mx.loading.HeirarchicalLoaderRep ository3@32831c19, cl=org.jboss.mx.loading.HeirarchicalLoaderRepository3$CacheClassLoader@36a8a199{ url=null ,addedOrder=0} 2006-10-31 12:21:46,804 DEBUG [org.jboss.seam.core.Manager] Storing conversation state: mypersonalid 2006-10-31 12:21:46,804 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.core.manager.conversat ionId 2006-10-31 12:21:46,804 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.core.manager.conversa tionId 2006-10-31 12:21:46,804 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.core.manager.conversat ionIsLongRunning 2006-10-31 12:21:46,804 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.core.manager.conversa tionIsLongRunning 2006-10-31 12:21:46,804 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.Namin gContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 2006-10-31 12:21:46,806 DEBUG [org.jboss.seam.Component] instantiating Seam component: resourceBundle 2006-10-31 12:21:46,806 DEBUG [org.jboss.seam.Component] initializing new instance of: resourceBundle 2006-10-31 12:21:46,806 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.resourceBundle 2006-10-31 12:21:46,807 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.resourceBundle 2006-10-31 12:21:46,807 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postCreate.resourceBundle 2006-10-31 12:21:46,807 DEBUG [org.jboss.seam.Component] instantiating Seam component: locale 2006-10-31 12:21:46,807 DEBUG [org.jboss.seam.Component] initializing new instance of: locale 2006-10-31 12:21:46,807 DEBUG [org.jboss.seam.core.ResourceBundle] loaded resource bundle: messages 2006-10-31 12:21:46,808 DEBUG [org.jboss.mx.loading.RepositoryClassLoader] setRepository, repository=org.jboss.mx.loading.HeirarchicalLoaderRep ository3@32831c19, cl=org.jboss.mx.loading.HeirarchicalLoaderRepository3$CacheClassLoader@79095fd7{ url=null ,addedOrder=0} 2006-10-31 12:21:46,809 DEBUG [org.jboss.seam.Component] instantiating Seam component: interpolator 2006-10-31 12:21:46,809 DEBUG [org.jboss.seam.Component] initializing new instance of: interpolator 2006-10-31 12:21:46,809 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.Namin gContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 2006-10-31 12:21:46,809 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.Namin gContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 2006-10-31 12:21:46,809 DEBUG [org.jboss.seam.jsf.AbstractSeamPhaseListener] rolling back transaction after phase: INVOKE_APPLICATION(5) 2006-10-31 12:21:46,809 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.Namin gContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 2006-10-31 12:21:46,810 DEBUG [org.jboss.seam.core.Manager] Storing conversation state: mypersonalid 2006-10-31 12:21:46,810 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.core.manager.conversat ionId 2006-10-31 12:21:46,810 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.core.manager.conversa tionId 2006-10-31 12:21:46,810 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.core.manager.conversat ionIsLongRunning 2006-10-31 12:21:46,810 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.core.manager.conversa tionIsLongRunning 2006-10-31 12:21:46,810 DEBUG [org.jboss.seam.contexts.Lifecycle] After render response, destroying contexts 2006-10-31 12:21:46,810 DEBUG [org.jboss.seam.contexts.Lifecycle] destroying business process context 2006-10-31 12:21:46,810 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preDestroyContext.BUSINESS_PROCESS 2006-10-31 12:21:46,810 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postDestroyContext.BUSINESS_PROCESS 2006-10-31 12:21:46,810 DEBUG [org.jboss.seam.contexts.Lifecycle] flushing server-side conversation context 2006-10-31 12:21:46,810 DEBUG [org.jboss.seam.contexts.Lifecycle] flushing session context 2006-10-31 12:21:46,811 DEBUG [org.jboss.seam.contexts.Lifecycle] destroying event context 2006-10-31 12:21:46,811 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preDestroyContext.EVENT 2006-10-31 12:21:46,811 DEBUG [org.jboss.seam.contexts.Contexts] destroying: org.jboss.seam.core.manager 2006-10-31 12:21:46,811 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.preDestroy.org.jboss.seam.core.manager 2006-10-31 12:21:46,811 DEBUG [org.jboss.seam.contexts.Contexts] destroying: org.jboss.seam.exceptionHandled 2006-10-31 12:21:46,811 DEBUG [org.jboss.seam.contexts.Contexts] destroying: com.sun.facelets.legacy.ELCONTEXT 2006-10-31 12:21:46,811 DEBUG [org.jboss.seam.core.Events] Processing event:org.jboss.seam.postDestroyContext.EVENT 2006-10-31 12:21:46,811 DEBUG [org.jboss.seam.contexts.Lifecycle] <<< End web request
3 ? Jamiroquai * (-1) = moving without travelling AKA little workaround but same results:
This solution is exactly the same as the previous one except for the action management.
Idea: ok, when the conversation is resumed the begin method is not called anymore and the outcome is not set, well, but if the begin method is an actionListener and the action of the commandLink is a static outcome? Fails in the same way?
Any help is really appreciated!
Raffaele