[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