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