Destroy conversation exception...
tony.herstell1 Feb 10, 2007 3:13 PMGiven:
<!DOCTYPE pages PUBLIC
"-//JBoss/Seam Pages Configuration DTD 1.1//EN"
"http://jboss.com/products/seam/pages-1.1.dtd">
<pages no-conversation-view-id="/mainmenu.xhtml">
<page view-id="/userCRUD.xhtml" timeout="300000">
Reason: #{cRUDUserController.mode} User ( #{user.username} )
</page>
<page view-id="/userConfirm.xhtml" timeout="300000">
Reason: Confirm #{cRUDUserController.mode} User (#{user.username} )
</page>
<page view-id="/userRegistration.xhtml" timeout="300000">
Reason: Registration of new User
</page>
<page view-id="/organisationCRUD.xhtml" timeout="300000">
Reason: #{cRUDOrganisationController.mode} Organisation ( #{organisation.name} )
</page>
<page view-id="/organisationConfirm.xhtml" timeout="300000">
Reason: Confirm #{cRUDOrganisationController.mode} Organisation (#{organisation.name} )
</page>
</pages>
and:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<div xmlns="http://www.w3.org/1999/xhtml"
xmlns:c="http://java.sun.com/jstl/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ice="http://www.icesoft.com/icefaces/component">
<div align="center">
<h1>
<ice:outputText rendered="#{not empty conversationList}" value="Workspaces" />
</h1>
</div>
<div>
<ice:form>
<ice:dataTable value="#{conversationList}" var="entry"
rendered="#{not empty conversationList}">
<ice:column>
<f:facet name="header">Workspace</f:facet>
<ice:outputText value="#{entry.description}" rendered="#{entry.current}"/>
<ice:commandLink action="#{entry.select}" value="#{entry.description}" rendered="#{!entry.current}"/>
<ice:outputText value="[current]" rendered="#{entry.current}"/>
</ice:column>
<ice:column>
<f:facet name="header">Activity</f:facet>
<ice:outputText value="#{entry.startDatetime}">
<f:convertDateTime type="time" pattern="hh:mm a"/>
</ice:outputText>
<ice:outputText value=" - "/>
<ice:outputText value="#{entry.lastDatetime}">
<f:convertDateTime type="time" pattern="hh:mm a"/>
</ice:outputText>
</ice:column>
<ice:column>
<f:facet name="header">Action</f:facet>
<ice:commandButton action="#{entry.select}" value="#{messages.button_switch}" rendered="#{!entry.current}"/>
<ice:commandButton action="#{entry.destroy}" value="#{messages.button_destroy}" rendered="#{!entry.current}"/>
<ice:outputText value="#{messages.label_none}" rendered="#{entry.current}"/>
</ice:column>
</ice:dataTable>
</ice:form>
</div>
</div>
hanging off the bottom of my template:
<!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:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jstl/core"
xmlns:ice="http://www.icesoft.com/icefaces/component"
xmlns:s="http://jboss.com/products/seam/taglib">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1" />
<meta http-equiv="Cache-Control" content="no-cache"/>
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>
<link rel="stylesheet" type="text/css" href="./xmlhttp/css/xp/xp.css" />
<link rel="stylesheet" type="text/css" href="./css/risingstars.css" />
<title>Rising Stars-<ui:insert name="title" /></title>
</head>
<body>
<f:facet name="aroundInvalidField">
<s:div styleClass="errorBox"/>
</f:facet>
<table class="titleDevider" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td width="25%">
<ice:graphicImage id="logo" alt="logo" url="./images/logo.gif" />
</td>
<td class="mainTitle" width="50%">
<ui:insert name="title" />
</td>
<td width="25%" align="right">
<ice:form>
<s:validateAll>
<ice:panelGrid columns="2" rendered="#{identity.loggedIn}">
<ice:outputText value="#{identity.username}" />
<ice:commandButton type="submit" value="#{messages.button_logout}" action="#{identity.logout}" styleClass="button"/>
</ice:panelGrid>
<ice:panelGrid columns="3" rendered="#{!(identity.loggedIn) and !(loggedInUser.currentlyRegistering)}">
<ice:outputLabel for="username" value="#{messages.label_username}" />
<s:decorate>
<ice:inputText id="username" value="#{identity.username}" required="true" title="#{messages.hint_username}" /><!-- partialSubmit="true" -->
</s:decorate>
<ice:outputText styleClass="mandatory" value="#{messages.tag_mandatory}" />
<ice:outputText value=""/>
<div align="left">
<ice:message errorClass="error" for="username"/>
</div>
<ice:outputText value=""/>
<ice:outputLabel for="password" value="#{messages.label_password}"/>
<s:decorate>
<ice:inputSecret id="password" value="#{identity.password}" redisplay="true" required="true" title="#{messages.hint_password}" /><!-- partialSubmit="true" -->
</s:decorate>
<ice:outputText styleClass="mandatory" value="#{messages.tag_mandatory}" />
<ice:outputText value=""/>
<div align="left">
<ice:message errorClass="error" for="password" />
</div>
<ice:outputText value=""/>
</ice:panelGrid>
<ice:panelGrid columns="2" rendered="#{!(identity.loggedIn) and !(loggedInUser.currentlyRegistering)}" >
<ice:commandButton id="loginAttempt" type="submit" value="#{messages.button_login}" action="#{identity.login}">
<s:conversationPropagation type="none"/>
</ice:commandButton>
<s:button type="submit" value="#{messages.button_register}" immediate="true" action="#{userRegistrationController.startRegistration}">
<s:conversationPropagation type="none"/>
</s:button>
</ice:panelGrid>
<ice:panelGrid columns="1" rendered="#{!(identity.loggedIn) and !(loggedInUser.currentlyRegistering)}">
<ice:message infoClass="error" for="loginAttempt" />
</ice:panelGrid>
<ice:panelGrid columns="1" rendered="#{loggedInUser.currentlyRegistering}">
<ice:outputLabel>
<ice:outputText value="#{messages.advisory_text_registering}"/>
</ice:outputLabel>
</ice:panelGrid>
</s:validateAll>
</ice:form>
</td>
</tr>
</table>
<!-- Menu Section -->
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="166px" class="menuArea">
<ice:form>
<ice:menuBar orientation="vertical" rendered="#{!(loggedInUser.currentlyRegistering)}">
<ice:menuItem id="goHomeMenuOption" value="#{messages.menu_item_main_menu}" action="#{menu.goHome}">
<s:conversationPropagation type="none"/>
</ice:menuItem>
<ice:menuItem id="usersMenuSection" value="#{messages.menu_item_users}" rendered="#{identity.loggedIn}">
<ice:menuItem id="usersFindMenuOption" value="#{messages.menu_item_find}" action="#{findUserController.startFind}" rendered="#{identity.loggedIn}">
<s:conversationPropagation type="none"/>
</ice:menuItem>
<ice:menuItem id="usersCreateMenuOption" value="#{messages.menu_item_create}" action="#{cRUDUserController.startCreate}" rendered="#{identity.loggedIn}">
<s:conversationPropagation type="none"/>
</ice:menuItem>
</ice:menuItem>
<ice:menuItem id="organisationMenuSection" value="#{messages.menu_item_organisations}" rendered="#{identity.loggedIn}">
<ice:menuItem id="organisationsFindMenuOption" value="#{messages.menu_item_find}" action="#{findOrganisationController.startFind}" rendered="#{identity.loggedIn}">
<s:conversationPropagation type="none"/>
</ice:menuItem>
<ice:menuItem id="organisationsCreateMenuOption" value="#{messages.menu_item_create}" action="#{cRUDOrganisationController.startCreate}" rendered="#{identity.loggedIn}">
<s:conversationPropagation type="none"/>
</ice:menuItem>
</ice:menuItem>
<ice:menuItemSeparator/>
</ice:menuBar>
</ice:form>
</td>
<td align="center">
<ice:panelGrid>
<ui:insert name="content" />
</ice:panelGrid>
<ice:panelGrid rendered="#{!(loggedInUser.currentlyRegistering)}">
<ui:include src="conversations.xhtml"/>
</ice:panelGrid>
</td>
</tr>
</table>
<div class="footerBar">
<div class="footerProgressImage">
<ice:outputConnectionStatus />
</div>
<div class="footerAuthorText">
<ice:outputText value="#{messages.footer_text_technology}" />
<ice:outputText value="#{messages.footer_text_by}" />
<a href="mailto:#{messages.footer_text_author_email}">
<ice:outputText value="#{messages.footer_text_author_name}" onmouseovereffect="#{highlight}"/>
</a>
</div>
</div>
<!--<ui:debug hotkey="d"/>-->
</body>
</html>
When I delete a conversation using the delte button i get this exception:
09:03:59,160 WARN [Interpolator] exception interpolating string: Reason: Confirm #{cRUDOrganisationController.mode} Organisation (#{organisation.name} )
javax.faces.el.EvaluationException: Cannot get value for expression '#{cRUDOrganisationController.mode}'
at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:402)
at org.jboss.seam.core.Expressions$1.getValue(Expressions.java:53)
at org.jboss.seam.core.Interpolator.interpolateExpressions(Interpolator.java:88)
at org.jboss.seam.core.Interpolator.interpolate(Interpolator.java:67)
at org.jboss.seam.pages.Page.renderDescription(Page.java:92)
at org.jboss.seam.core.Manager.prepareBackswitch(Manager.java:1040)
at org.jboss.seam.jsf.AbstractSeamPhaseListener.beforeRender(AbstractSeamPhaseListener.java:208)
at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:57)
at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersBefore(PhaseListenerManager.java:70)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:373)
at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.renderCycle(BlockingServlet.java:457)
at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.receiveUpdates(BlockingServlet.java:444)
at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.executeRequest(BlockingServlet.java:324)
at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:186)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
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.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: javax.faces.el.EvaluationException: Exception getting value of property mode of base of type : org.jboss.seam.intercept.Proxy$$EnhancerByCGLIB$$328f5bd2
at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:96)
at org.apache.myfaces.el.ELParserHelper$MyPropertySuffix.evaluate(ELParserHelper.java:532)
at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
at org.apache.myfaces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:383)
... 33 more
Caused by: javax.faces.el.EvaluationException: Bean: org.jboss.seam.intercept.Proxy$$EnhancerByCGLIB$$328f5bd2, property: mode
at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:442)
at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:82)
... 36 more
Caused by: java.lang.reflect.InvocationTargetException
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.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:438)
... 37 more
Caused by: java.lang.IllegalStateException: no long-running conversation for @Conversational bean: cRUDOrganisationController
at org.jboss.seam.interceptors.ConversationalInterceptor.checkConversationForConversationalBean(ConversationalInterceptor.java:52)
at sun.reflect.GeneratedMethodAccessor329.invoke(Unknown Source)
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:18)
at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
at org.jboss.seam.interceptors.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:27)
at sun.reflect.GeneratedMethodAccessor100.invoke(Unknown Source)
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:18)
at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
at org.jboss.seam.intercept.RootInterceptor.createSeamInvocationContext(RootInterceptor.java:144)
at org.jboss.seam.intercept.RootInterceptor.invokeInContexts(RootInterceptor.java:129)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:102)
at org.jboss.seam.intercept.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:50)
at sun.reflect.GeneratedMethodAccessor273.invoke(Unknown Source)
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:71)
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:46)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.TxPolicy.invokeInNoTx(TxPolicy.java:66)
at org.jboss.aspects.tx.TxInterceptor$NotSupported.invoke(TxInterceptor.java:112)
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:77)
at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:102)
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 $Proxy127.getMode(Unknown Source)
at nz.co.risingstars.actions.organisation.CRUDOrganisationController$$FastClassByCGLIB$$8fc00364.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:45)
at org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideInterceptor.java:74)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:55)
at org.jboss.seam.interceptors.RemoveInterceptor.removeIfNecessary(RemoveInterceptor.java:40)
at sun.reflect.GeneratedMethodAccessor274.invoke(Unknown Source)
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:18)
at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
at org.jboss.seam.intercept.RootInterceptor.createSeamInvocationContext(RootInterceptor.java:144)
at org.jboss.seam.intercept.RootInterceptor.invokeInContexts(RootInterceptor.java:129)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:102)
at org.jboss.seam.intercept.ClientSideInterceptor.interceptInvocation(ClientSideInterceptor.java:83)
at org.jboss.seam.intercept.ClientSideInterceptor.intercept(ClientSideInterceptor.java:52)
at org.jboss.seam.intercept.Proxy$$EnhancerByCGLIB$$328f5bd2.getMode(<generated>)
... 42 more
Which blows out IceFaces with:
09:03:59,238 ERROR [[Blocking Servlet]] Servlet.service() for servlet Blocking Servlet threw exception
java.lang.RuntimeException: viewNumber 1 update queue exceeded 16
at com.icesoft.faces.webapp.xmlhttp.BlockingResponseState.writeElement(BlockingResponseState.java:188)
From all this it looks like the conversation is still trying to be rendered in the "conversation list" even though it's "just" been "destroyed"?