[jboss-user] [JBoss Seam] - Problems with IntervalRenderer and PhaseListener

LudgerTheile do-not-reply at jboss.com
Tue Feb 27 05:35:39 EST 2007


Hi,

I tried to build a page with a clock. 
When I call the page, the clock is rendered, but after the first update after the renderer interval of 5 seconds I get a PhaseListener Exception:


  | 
  | 10:48:02,125 INFO  [ClockBean] setRenderManager
  | 10:48:02,125 INFO  [RenderHub] scheduled render service created:
  |   core pool size : 5
  | 10:48:02,140 INFO  [ClockBean] getServerTime
  | 10:48:07,140 INFO  [RenderHub] core render service created:
  |   core pool size : 10
  |   max pool size  : 15
  |   keep alive time: 300000
  | 10:48:07,140 INFO  [ClockBean] getState = com.icesoft.faces.webapp.xmlhttp.PersistentFacesState at 14418746[com.icesoft.faces.context.BridgeFacesContext at 531e15]
  | 10:48:07,140 ERROR [PhaseListenerManager] Exception in PhaseListener RENDER_RESPONSE(6) beforePhase.
  | java.lang.NullPointerException
  | 	at org.jboss.seam.util.Parameters.convertMultiValueRequestParameter(Parameters.java:48)
  | 	at org.jboss.seam.pdf.DocumentStorePhaseListener.beforePhase(DocumentStorePhaseListener.java:32)
  | 	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.PersistentFacesState.render(PersistentFacesState.java:180)
  | 	at com.icesoft.faces.async.render.RunnableRender.run(RunnableRender.java:89)
  | 	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
  | 	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
  | 	at java.lang.Thread.run(Thread.java:595)
  | 10:48:07,140 INFO  [ClockBean] renderingException fatal render failure for viewNumber 1
  | 
  | 

Because i wondered why a method from org.jboss.seam.pdf.DocumentStorePhaseListener is called, I removed the jboss-seam-pdf.jar from clocktest.ear\clocktest.war\WEB-INF\lib. After this I get the following output:


  | 
  | 10:53:59,468 INFO  [ClockBean] setRenderManager
  | 10:53:59,562 INFO  [RenderHub] scheduled render service created:
  |   core pool size : 5
  | 10:53:59,625 INFO  [ClockBean] getServerTime
  | 10:54:04,625 INFO  [RenderHub] core render service created:
  |   core pool size : 10
  |   max pool size  : 15
  |   keep alive time: 300000
  | 10:54:04,640 INFO  [ClockBean] getState = com.icesoft.faces.webapp.xmlhttp.PersistentFacesState at 26451219[com.icesoft.faces.context.BridgeFacesContext at 1930e5b]
  | 10:54:04,640 ERROR [SeamPhaseListener] uncaught exception
  | java.lang.IllegalStateException: No active application scope
  | 	at org.jboss.seam.core.Init.instance(Init.java:78)
  | 	at org.jboss.seam.jsf.TransactionalSeamPhaseListener.handleTransactionsBeforePhase(TransactionalSeamPhaseListener.java:22)
  | 	at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:49)
  | 	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.PersistentFacesState.render(PersistentFacesState.java:180)
  | 	at com.icesoft.faces.async.render.RunnableRender.run(RunnableRender.java:89)
  | 	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
  | 	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
  | 	at java.lang.Thread.run(Thread.java:595)
  | 10:54:04,640 ERROR [SeamPhaseListener] swallowing exception
  | java.lang.IllegalStateException: No active application scope
  | 	at org.jboss.seam.core.Init.instance(Init.java:78)
  | 	at org.jboss.seam.jsf.TransactionalSeamPhaseListener.handleTransactionsBeforePhase(TransactionalSeamPhaseListener.java:22)
  | 	at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:49)
  | 	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.PersistentFacesState.render(PersistentFacesState.java:180)
  | 	at com.icesoft.faces.async.render.RunnableRender.run(RunnableRender.java:89)
  | 	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
  | 	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
  | 	at java.lang.Thread.run(Thread.java:595)
  | 10:54:04,640 ERROR [SeamPhaseListener] uncaught exception
  | java.lang.IllegalStateException: No active application scope
  | 	at org.jboss.seam.core.Init.instance(Init.java:78)
  | 	at org.jboss.seam.jsf.TransactionalSeamPhaseListener.handleTransactionsAfterPhase(TransactionalSeamPhaseListener.java:34)
  | 	at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:112)
  | 	at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersAfter(PhaseListenerManager.java:89)
  | 	at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:391)
  | 	at com.icesoft.faces.webapp.xmlhttp.PersistentFacesState.render(PersistentFacesState.java:180)
  | 	at com.icesoft.faces.async.render.RunnableRender.run(RunnableRender.java:89)
  | 	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
  | 	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
  | 	at java.lang.Thread.run(Thread.java:595)
  | 10:54:04,640 ERROR [SeamPhaseListener] swallowing exception
  | java.lang.IllegalStateException: No active application scope
  | 	at org.jboss.seam.core.Init.instance(Init.java:78)
  | 	at org.jboss.seam.jsf.TransactionalSeamPhaseListener.handleTransactionsAfterPhase(TransactionalSeamPhaseListener.java:34)
  | 	at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:112)
  | 	at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersAfter(PhaseListenerManager.java:89)
  | 	at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:391)
  | 	at com.icesoft.faces.webapp.xmlhttp.PersistentFacesState.render(PersistentFacesState.java:180)
  | 	at com.icesoft.faces.async.render.RunnableRender.run(RunnableRender.java:89)
  | 	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
  | 	at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
  | 	at java.lang.Thread.run(Thread.java:595)
  | 10:54:04,640 INFO  [ClockBean] renderingException fatal render failure for viewNumber 1
  | 
  |  

My environment: JBoss AS 4.0.5.GA, JBoss Seam 1.1.7.RC1, IceFaces 1.5.3

Below my code:

The ClockBean:


  | 
  | import java.io.Serializable;
  | import java.text.SimpleDateFormat;
  | import java.util.Calendar;
  | 
  | import org.jboss.seam.ScopeType;
  | import org.jboss.seam.annotations.Logger;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Scope;
  | import org.jboss.seam.log.Log;
  | 
  | import com.icesoft.faces.async.render.IntervalRenderer;
  | import com.icesoft.faces.async.render.RenderManager;
  | import com.icesoft.faces.async.render.Renderable;
  | import com.icesoft.faces.webapp.xmlhttp.PersistentFacesState;
  | import com.icesoft.faces.webapp.xmlhttp.RenderingException;
  | 
  | @Name("clock")
  | @Scope(ScopeType.SESSION)
  | public class ClockBean implements Renderable, Serializable {
  | 
  | 	private static final long serialVersionUID = -3056813303865921418L;
  | 
  | 	@Logger
  | 	private Log log;
  | 
  | 	private final int renderInterval = 5000;
  | 
  | 	private PersistentFacesState state;
  | 
  | 	private IntervalRenderer clock;
  | 
  | 	public void setRenderManager(RenderManager renderManager) {
  | 		log.info("setRenderManager");
  | 		clock = renderManager.getIntervalRenderer("clock");
  | 		clock.setInterval(renderInterval);
  | 		clock.add(this);
  | 		clock.requestRender();
  | 	}
  | 
  | 	public RenderManager getRenderManager() {
  | 		return null;
  | 	}
  | 
  | 	public PersistentFacesState getState() {
  | 		if (null == state)
  | 			state = PersistentFacesState.getInstance();
  | 		if (null == state)
  | 			log.info("getState = NULL");
  | 		else
  | 			log.info("getState = #0", state.toString());
  | 		return state;
  | 	}
  | 
  | 	public void renderingException(RenderingException renderingException) {
  | 		log.info("renderingException #0", renderingException.getMessage());
  | 		if (clock != null) {
  | 			clock.remove(this);
  | 			clock = null;
  | 		}
  | 	}
  | 
  | 	public String getServerTime() {
  | 		log.info("getServerTime");
  | 		SimpleDateFormat currentFormat = new SimpleDateFormat(
  | 				"dd.MM.yyyy HH:mm");
  | 		Calendar cal = currentFormat.getCalendar();
  | 		cal.setTimeInMillis(System.currentTimeMillis());
  | 		return currentFormat.format(cal.getTime());
  | 	}
  | 
  | 	public void setServerTime(String serverTime) {
  | 
  | 	}
  | }
  | 
  | 

the home.xhtml:


  | 
  | <!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:ice="http://www.icesoft.com/icefaces/component"
  |       xml:lang="de" lang="de">
  | <head>
  |    <meta http-equiv="Content-Type"
  |          content="text/html; charset=iso-8859-1" />
  |    <title>Uhren test</title>
  | 
  | </head>
  | 
  | <body>
  | <f:view>
  |    <div>
  |       <ice:outputText value="#{clock.serverTime}" />  
  |    </div>
  | </f:view>
  | </body>
  | 
  | </html>
  | 
  | 

the components.xml:


  | 
  | <?xml version="1.0" encoding="UTF-8"?>
  | <components xmlns="http://jboss.com/products/seam/components"
  |             xmlns:core="http://jboss.com/products/seam/core"
  |             xmlns:drools="http://jboss.com/products/seam/drools"
  |             xmlns:security="http://jboss.com/products/seam/security"
  |             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |             xsi:schemaLocation=
  |                 "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-1.1.xsd 
  |                  http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-1.1.xsd
  |                  http://jboss.com/products/seam/security http://jboss.com/products/seam/security-1.1.xsd
  |                  http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.1.xsd">
  | 
  |    <core:init debug="true" jndi-pattern="@jndiPattern@"/>
  |      
  |    <core:manager concurrent-request-timeout="500" 
  |                  conversation-timeout="120000" 
  |                  conversation-id-parameter="cid" 
  |                  conversation-is-long-running-parameter="clr"/>
  |     
  |    <core:pages no-conversation-view-id="/home.xhtml"/>
  |    
  |    <core:managed-persistence-context name="entityManager"
  |                persistence-unit-jndi-name="java:/clocktestEntityManagerFactory"/>
  | 
  |    <core:ejb installed="@embeddedEjb@"/>
  |          
  | 	<component name="renderManager"
  | 		class="com.icesoft.faces.async.render.RenderManager"
  | 		scope="APPLICATION" />
  | 
  | 	<component name="clock" scope="SESSION">
  | 		<property name="renderManager">#{renderManager}</property>
  | 	</component>
  |       
  | </components>
  | 
  | 

the faces-config.xml:


  | 
  | <?xml version='1.0' encoding='UTF-8'?>
  | <!DOCTYPE faces-config PUBLIC
  |           "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
  |           "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
  | 
  | <faces-config>
  | 
  |    <application>
  |       <message-bundle>messages</message-bundle>
  |       <view-handler>com.icesoft.faces.facelets.D2DSeamFaceletViewHandler</view-handler>
  |    </application>
  | 
  |    <!-- Seam transaction management -->
  |    <lifecycle>
  |       <phase-listener>org.jboss.seam.jsf.TransactionalSeamPhaseListener</phase-listener>
  |    </lifecycle>
  |     
  |    <!-- No Seam transaction management -->
  |    <!--  
  |    <lifecycle>
  |       <phase-listener>org.jboss.seam.jsf.SeamPhaseListener</phase-listener>
  |    </lifecycle>
  |    -->
  | 
  | </faces-config>
  | 
  | 

the web.xml:


  | 
  | <?xml version="1.0" ?>
  | <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  | 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  | 	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  | 	version="2.4">
  | 
  | 	<context-param>
  | 		<param-name>javax.faces.CONFIG_FILES</param-name>
  | 		<param-value>/WEB-INF/navigation.xml</param-value>
  | 	</context-param>
  | 
  | 	<listener>
  | 		<listener-class>
  | 			org.jboss.seam.servlet.SeamListener
  | 		</listener-class>
  | 	</listener>
  | 
  | 	<listener>
  | 		<listener-class>
  | 			org.apache.myfaces.webapp.StartupServletContextListener
  | 		</listener-class>
  | 	</listener>
  | 
  | 	<context-param>
  | 		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  | 		<param-value>client</param-value>
  | 	</context-param>
  | 
  | 	<context-param>
  | 		<param-name>facelets.DEVELOPMENT</param-name>
  | 		<param-value>true</param-value>
  | 	</context-param>
  | 
  | 	<context-param>
  | 		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  | 		<param-value>.xhtml</param-value>
  | 	</context-param>
  | 
  | 
  | 	<filter>
  | 		<filter-name>Seam Exception Filter</filter-name>
  | 		<filter-class>
  | 			org.jboss.seam.servlet.SeamExceptionFilter
  | 		</filter-class>
  | 	</filter>
  | 
  | 	<!--
  | 		<filter>
  | 		<filter-name>Seam Redirect Filter</filter-name>
  | 		<filter-class>org.jboss.seam.servlet.SeamRedirectFilter</filter-class>
  | 		</filter>
  | 	-->
  | 
  | 	<filter-mapping>
  | 		<filter-name>Seam Exception Filter</filter-name>
  | 		<url-pattern>/*</url-pattern>
  | 	</filter-mapping>
  | 
  | 	<!--
  | 		<filter-mapping>
  | 		<filter-name>Seam Redirect Filter</filter-name>
  | 		<url-pattern>*.seam</url-pattern>
  | 		</filter-mapping>
  | 	-->
  | 
  | 	<servlet>
  | 		<servlet-name>Faces Servlet</servlet-name>
  | 		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  | 		<load-on-startup>1</load-on-startup>
  | 	</servlet>
  | 
  | 	<!--
  | 		<servlet-mapping>
  | 		<servlet-name>Faces Servlet</servlet-name>
  | 		<url-pattern>*.seam</url-pattern>
  | 		</servlet-mapping>
  | 	-->
  | 	<context-param>
  | 		<param-name>com.icesoft.faces.actionURLSuffix</param-name>
  | 		<param-value>.seam</param-value>
  | 	</context-param>
  | 
  | 	<context-param>
  | 		<param-name>com.icesoft.faces.synchronousUpdate</param-name>
  | 		<param-value>true</param-value>
  | 	</context-param>
  | 
  | 	<servlet>
  | 		<servlet-name>Blocking Servlet</servlet-name>
  | 		<servlet-class>
  | 			com.icesoft.faces.webapp.xmlhttp.BlockingServlet
  | 		</servlet-class>
  | 		<load-on-startup>1</load-on-startup>
  | 	</servlet>
  | 
  | 	<servlet>
  | 		<servlet-name>Persistent Faces Servlet</servlet-name>
  | 		<servlet-class>
  | 			com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet
  | 		</servlet-class>
  | 		<load-on-startup>1</load-on-startup>
  | 	</servlet>
  | 
  | 	<servlet-mapping>
  | 		<servlet-name>Persistent Faces Servlet</servlet-name>
  | 		<url-pattern>/xmlhttp/*</url-pattern>
  | 	</servlet-mapping>
  | 
  | 	<servlet-mapping>
  | 		<servlet-name>Persistent Faces Servlet</servlet-name>
  | 		<url-pattern>/xmlhttp/*</url-pattern>
  | 	</servlet-mapping>
  | 
  | 	<servlet-mapping>
  | 		<servlet-name>Persistent Faces Servlet</servlet-name>
  | 		<url-pattern>*.iface</url-pattern>
  | 	</servlet-mapping>
  | 
  | 	<!-- Blocking Servlet Mapping -->
  | 	<servlet-mapping>
  | 		<servlet-name>Blocking Servlet</servlet-name>
  | 		<url-pattern>/block/*</url-pattern>
  | 	</servlet-mapping>
  | 
  | 	<!-- Faces Servlet Mapping -->
  | 	<servlet-mapping>
  | 		<servlet-name>Persistent Faces Servlet</servlet-name>
  | 		<url-pattern>*.seam</url-pattern>
  | 	</servlet-mapping>
  | 
  | 	<welcome-file-list>
  | 		<welcome-file>index.html</welcome-file>
  | 	</welcome-file-list>
  | </web-app>
  | 
  | 


Has someone an idea what's wrong?

Thanks  Ludger !



View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4022962#4022962

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4022962



More information about the jboss-user mailing list