You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by "Karr, David" <da...@wamu.net> on 2008/01/24 06:18:38 UTC

Still trying to move simple RichFaces 3.1.3 app from BEA JSF 1.1 to MyFaces 1.1.5 (Tomcat)

I asked about this a few days ago, but I'm not making any progress on
this.  I'd appreciate any hints on what I might be doing wrong.

I have a simple app using the default JSF 1.1 implementation in WebLogic
9.2.2, which also uses RichFaces 3.1.3.  It works at this point.

I exported the WAR file and I added to the WEB-INF/lib all the libraries
that come with the MyFaces 1.1.5 distribution, resulting in the
following:

* commons-beanutils-1.7.0.jar
* commons-codec-1.3.jar
* commons-collections-3.2.jar
* commons-digester-1.6.jar
* commons-el-1.0.jar
* commons-lang-2.1.jar
* commons-logging-1.0.4.jar
* jstl-1.1.0.jar
* myfaces-api-1.1.5.jar
* myfaces-impl-1.1.5.jar
* richfaces-api-3.1.3.GA.jar
* richfaces-impl-3.1.3.GA.jar
* richfaces-ui-3.1.3.GA.jar

I then re-jared the WAR file, and then copied it to the Tomcat 5.5.25
webapps dir.  It deployed.  I then tried to go to the URL for the app,
and Tomcat very quickly hit a StackOverflow error.

The Catalina log had the following log info and exception:

------------------
Jan 23, 2008 8:54:12 PM
org.apache.myfaces.shared_impl.config.MyfacesConfig
getBooleanInitParameter
INFO: No context init parameter 'org.apache.myfaces.PRETTY_HTML' found,
using default value true
Jan 23, 2008 8:54:12 PM
org.apache.myfaces.shared_impl.config.MyfacesConfig
getBooleanInitParameter
INFO: No context init parameter 'org.apache.myfaces.ALLOW_JAVASCRIPT'
found, using default value true
Jan 23, 2008 8:54:12 PM
org.apache.myfaces.shared_impl.config.MyfacesConfig
getBooleanInitParameter
INFO: No context init parameter
'org.apache.myfaces.READONLY_AS_DISABLED_FOR_SELECTS' found, using
default value true
Jan 23, 2008 8:54:12 PM
org.apache.myfaces.shared_impl.config.MyfacesConfig getCurrentInstance
INFO: Tomahawk jar not available. Autoscrolling, DetectJavascript,
AddResourceClass and CheckExtensionsFilter are disabled now.
Jan 23, 2008 8:54:12 PM
org.apache.myfaces.shared_impl.config.MyfacesConfig getCurrentInstance
INFO: Starting up Tomahawk on the MyFaces-JSF-Implementation
Jan 23, 2008 8:54:14 PM
org.apache.myfaces.lifecycle.PhaseListenerManager
informPhaseListenersAfter
SEVERE: Exception in PhaseListener RENDER_RESPONSE(6) afterPhase
java.lang.NullPointerException
	at
org.ajax4jsf.context.AjaxContextImpl.getSubmittedRegionClientId(AjaxCont
extImpl.java:574)
	at
org.ajax4jsf.context.AjaxContextImpl.isAjaxRequest(AjaxContextImpl.java:
474)
	at
org.ajax4jsf.context.AjaxContextImpl.isAjaxRequest(AjaxContextImpl.java:
466)
	at
org.ajax4jsf.event.AjaxPhaseListener.afterPhase(AjaxPhaseListener.java:7
8)
------------------

Looking in the RichFaces source code, line 466 is the one line in this
method:

	public boolean isAjaxRequest() {
		return isAjaxRequest(FacesContext.getCurrentInstance());
	}

So, for whatever reason, "FacesContext.getCurrentInstance()" is null.

In the "localhost" log, there was the following extremely truncated
exception (it went on forever, repeating the top two stack entries):

---------------
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.StackOverflowError
	at
javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletReque
stWrapper.java:216)
	at
org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHt
tpRequest.java:545)
	at
javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletReque
stWrapper.java:216)
	at
org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHt
tpRequest.java:545)
---------------

If it helps, here is my faces-config.xml and web.xml:

---------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
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">
    <display-name>TabPanel</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>server</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.validateXml</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.verifyObjects</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
  		<description>
  			Validate managed beans, navigation rules and
ensure that forms are not nested.
  		</description>
       	<param-name>org.apache.myfaces.VALIDATE</param-name>
       	<param-value>true</param-value>
    </context-param>
  <context-param>
    <description>A class implementing the
	
org.apache.myfaces.shared.renderkit.html.util.AddResource
		    interface. It is responsible to
   			place scripts and css on the right position in
your HTML document.
            Default:
"org.apache.myfaces.shared.renderkit.html.util.DefaultAddResource"
            Follow the description on the MyFaces-Wiki-Performance page
to enable
            StreamingAddResource instead of DefaultAddResource if you
want to
            gain performance.
    </description>
    <param-name>org.apache.myfaces.ADD_RESOURCE_CLASS</param-name>
 
<param-value>org.apache.myfaces.renderkit.html.util.DefaultAddResource</
param-value>
 
<!--param-value>org.apache.myfaces.component.html.util.StreamingAddResou
rce</param-value-->
  </context-param>

  <context-param>
    <description>
        A very common problem in configuring MyFaces-web-applications
        is that the Extensions-Filter is not configured at all
        or improperly configured. This parameter will check for a
properly
        configured Extensions-Filter if it is needed by the web-app.
        In most cases this check will work just fine, there might be
cases
        where an internal forward will bypass the Extensions-Filter and
the check
        will not work. If this is the case, you can disable the check by
setting
        this parameter to false.
    </description>
    <param-name>org.apache.myfaces.CHECK_EXTENSIONS_FILTER</param-name>
    <param-value>true</param-value>
  </context-param>

  <context-param>
    <description>
        Change the url-pattern from the ExtensionsFilter
        Default is "/faces/myFacesExtensionResource"
        Note: The filter-mapping for ExtensionsFilter, the url-pattern
is
        this value + "/*", else there comes a exception
    </description>
    <param-name>org.apache.myfaces.RESOURCE_VIRTUAL_PATH</param-name>
    <param-value>/faces/extensionResource</param-value>
  </context-param>
	<context-param>
		<param-name>org.richfaces.SKIN</param-name>
		<param-value>blueSky</param-value>
	</context-param>
	<filter>
		<display-name>RichFaces Filter</display-name>
		<filter-name>richfaces</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>richfaces</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>
<!-- 
	<listener>
		<listener-class>
			com.sun.faces.config.ConfigureListener
		</listener-class>
	</listener>
 -->
    <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>/faces/*</url-pattern>
	</servlet-mapping>
	<session-config>
		<session-timeout>35</session-timeout>
	</session-config>
	<mime-mapping>
		<extension>html</extension>
		<mime-type>text/html</mime-type>
	</mime-mapping>
	<mime-mapping>
		<extension>txt</extension>
		<mime-type>text/plain</mime-type>
	</mime-mapping>
	<login-config>
		<auth-method>BASIC</auth-method>
	</login-config>
</web-app>
---------------------

---------------------
<!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>
    <locale-config>
      <default-locale>en</default-locale>
    </locale-config>
  </application>

  <managed-bean>
  	<managed-bean-name>ratingRequest</managed-bean-name>
 
<managed-bean-class>com.wamu.ais.tabpanel.RatingRequestBean</managed-bea
n-class>
  	<managed-bean-scope>session</managed-bean-scope>
  </managed-bean>

   <lifecycle>
 
<phase-listener>com.wamu.ais.tabpanel.LifeCycleListener</phase-listener>
 
<phase-listener>com.wamu.ais.tabpanel.CacheControlPhaseListener</phase-l
istener>
  </lifecycle>
 
</faces-config>
---------------------

RE: Still trying to move simple RichFaces 3.1.3 app from BEA JSF 1.1 to MyFaces 1.1.5 (Tomcat)

Posted by "Karr, David" <da...@wamu.net>.
Ok, I think I'm iterating toward some clues.  I copied in everything
from the problem app, except using a very trivial "main.jsp", and then I
started adding elements.  It was still ok after adding a couple
RichFaces elements, but when I "jumped to the end" and copied in the
entire "main.jsp" from the problem app (which works in WebLogic),
running it blew up Tomcat.  I should be able to narrow this down to
something.

> -----Original Message-----
> From: mwessendorf@gmail.com [mailto:mwessendorf@gmail.com] On 
> Behalf Of Matthias Wessendorf
> Sent: Wednesday, January 23, 2008 9:34 PM
> To: MyFaces Discussion
> Subject: Re: Still trying to move simple RichFaces 3.1.3 app 
> from BEA JSF 1.1 to MyFaces 1.1.5 (Tomcat)
> 
> hrm.
> 
> what happens if you "hit" a very simple page.
> 
> <f:view>
> <h:outputText value="HAllo" />
> </f:view>
> 
> have you tried to set a break point inside the FacesServlet ?
> (like in service(), where the lifecycle.execute(facesContext) 
> is launched)
> 
> perhaps it maybe helpful, to upload a simple demo app to our jira?
> 
> Thanks!
> Matthias
> 
> On Jan 23, 2008 9:18 PM, Karr, David <da...@wamu.net> wrote:
> > I asked about this a few days ago, but I'm not making any 
> progress on 
> > this.  I'd appreciate any hints on what I might be doing wrong.
> >
> > I have a simple app using the default JSF 1.1 implementation in 
> > WebLogic 9.2.2, which also uses RichFaces 3.1.3.  It works 
> at this point.
> >
> > I exported the WAR file and I added to the WEB-INF/lib all the 
> > libraries that come with the MyFaces 1.1.5 distribution, 
> resulting in 
> > the
> > following:
> >
> > * commons-beanutils-1.7.0.jar
> > * commons-codec-1.3.jar
> > * commons-collections-3.2.jar
> > * commons-digester-1.6.jar
> > * commons-el-1.0.jar
> > * commons-lang-2.1.jar
> > * commons-logging-1.0.4.jar
> > * jstl-1.1.0.jar
> > * myfaces-api-1.1.5.jar
> > * myfaces-impl-1.1.5.jar
> > * richfaces-api-3.1.3.GA.jar
> > * richfaces-impl-3.1.3.GA.jar
> > * richfaces-ui-3.1.3.GA.jar
> >
> > I then re-jared the WAR file, and then copied it to the 
> Tomcat 5.5.25 
> > webapps dir.  It deployed.  I then tried to go to the URL 
> for the app, 
> > and Tomcat very quickly hit a StackOverflow error.
> >
> > The Catalina log had the following log info and exception:
> >
> > ------------------
> > Jan 23, 2008 8:54:12 PM
> > org.apache.myfaces.shared_impl.config.MyfacesConfig
> > getBooleanInitParameter
> > INFO: No context init parameter 'org.apache.myfaces.PRETTY_HTML' 
> > found, using default value true Jan 23, 2008 8:54:12 PM 
> > org.apache.myfaces.shared_impl.config.MyfacesConfig
> > getBooleanInitParameter
> > INFO: No context init parameter 
> 'org.apache.myfaces.ALLOW_JAVASCRIPT'
> > found, using default value true
> > Jan 23, 2008 8:54:12 PM
> > org.apache.myfaces.shared_impl.config.MyfacesConfig
> > getBooleanInitParameter
> > INFO: No context init parameter
> > 'org.apache.myfaces.READONLY_AS_DISABLED_FOR_SELECTS' found, using 
> > default value true Jan 23, 2008 8:54:12 PM 
> > org.apache.myfaces.shared_impl.config.MyfacesConfig 
> getCurrentInstance
> > INFO: Tomahawk jar not available. Autoscrolling, DetectJavascript, 
> > AddResourceClass and CheckExtensionsFilter are disabled now.
> > Jan 23, 2008 8:54:12 PM
> > org.apache.myfaces.shared_impl.config.MyfacesConfig 
> getCurrentInstance
> > INFO: Starting up Tomahawk on the 
> MyFaces-JSF-Implementation Jan 23, 
> > 2008 8:54:14 PM org.apache.myfaces.lifecycle.PhaseListenerManager
> > informPhaseListenersAfter
> > SEVERE: Exception in PhaseListener RENDER_RESPONSE(6) afterPhase 
> > java.lang.NullPointerException
> >         at
> > 
> org.ajax4jsf.context.AjaxContextImpl.getSubmittedRegionClientId(AjaxCo
> > nt
> > extImpl.java:574)
> >         at
> > 
> org.ajax4jsf.context.AjaxContextImpl.isAjaxRequest(AjaxContext
> Impl.java:
> > 474)
> >         at
> > 
> org.ajax4jsf.context.AjaxContextImpl.isAjaxRequest(AjaxContext
> Impl.java:
> > 466)
> >         at
> > 
> org.ajax4jsf.event.AjaxPhaseListener.afterPhase(AjaxPhaseListener.java
> > :7
> > 8)
> > ------------------
> >
> > Looking in the RichFaces source code, line 466 is the one 
> line in this
> > method:
> >
> >         public boolean isAjaxRequest() {
> >                 return 
> isAjaxRequest(FacesContext.getCurrentInstance());
> >         }
> >
> > So, for whatever reason, 
> "FacesContext.getCurrentInstance()" is null.
> >
> > In the "localhost" log, there was the following extremely truncated 
> > exception (it went on forever, repeating the top two stack entries):
> >
> > ---------------
> > SEVERE: Servlet.service() for servlet Faces Servlet threw exception 
> > java.lang.StackOverflowError
> >         at
> > 
> javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletReq
> > ue
> > stWrapper.java:216)
> >         at
> > 
> org.apache.catalina.core.ApplicationHttpRequest.getSession(Application
> > Ht
> > tpRequest.java:545)
> >         at
> > 
> javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletReq
> > ue
> > stWrapper.java:216)
> >         at
> > 
> org.apache.catalina.core.ApplicationHttpRequest.getSession(Application
> > Ht
> > tpRequest.java:545)
> > ---------------
> >
> > If it helps, here is my faces-config.xml and web.xml:
> >
> > ---------------------
> > <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" 
> > version="2.4"
> > 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">
> >     <display-name>TabPanel</display-name>
> >     <welcome-file-list>
> >         <welcome-file>index.html</welcome-file>
> >         <welcome-file>index.htm</welcome-file>
> >         <welcome-file>index.jsp</welcome-file>
> >         <welcome-file>default.html</welcome-file>
> >         <welcome-file>default.htm</welcome-file>
> >         <welcome-file>default.jsp</welcome-file>
> >     </welcome-file-list>
> >     <context-param>
> >         <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
> >         <param-value>server</param-value>
> >     </context-param>
> >     <context-param>
> >         <param-name>com.sun.faces.validateXml</param-name>
> >         <param-value>true</param-value>
> >     </context-param>
> >     <context-param>
> >         <param-name>com.sun.faces.verifyObjects</param-name>
> >         <param-value>true</param-value>
> >     </context-param>
> >     <context-param>
> >                 <description>
> >                         Validate managed beans, navigation 
> rules and 
> > ensure that forms are not nested.
> >                 </description>
> >         <param-name>org.apache.myfaces.VALIDATE</param-name>
> >         <param-value>true</param-value>
> >     </context-param>
> >   <context-param>
> >     <description>A class implementing the
> >
> > org.apache.myfaces.shared.renderkit.html.util.AddResource
> >                     interface. It is responsible to
> >                         place scripts and css on the right 
> position in 
> > your HTML document.
> >             Default:
> > "org.apache.myfaces.shared.renderkit.html.util.DefaultAddResource"
> >             Follow the description on the MyFaces-Wiki-Performance 
> > page to enable
> >             StreamingAddResource instead of 
> DefaultAddResource if you 
> > want to
> >             gain performance.
> >     </description>
> >     <param-name>org.apache.myfaces.ADD_RESOURCE_CLASS</param-name>
> >
> > 
> <param-value>org.apache.myfaces.renderkit.html.util.DefaultAddResource
> > </
> > param-value>
> >
> > 
> <!--param-value>org.apache.myfaces.component.html.util.StreamingAddRes
> > ou
> > rce</param-value-->
> >   </context-param>
> >
> >   <context-param>
> >     <description>
> >         A very common problem in configuring 
> MyFaces-web-applications
> >         is that the Extensions-Filter is not configured at all
> >         or improperly configured. This parameter will check for a 
> > properly
> >         configured Extensions-Filter if it is needed by the web-app.
> >         In most cases this check will work just fine, there 
> might be 
> > cases
> >         where an internal forward will bypass the Extensions-Filter 
> > and the check
> >         will not work. If this is the case, you can disable 
> the check 
> > by setting
> >         this parameter to false.
> >     </description>
> >     
> <param-name>org.apache.myfaces.CHECK_EXTENSIONS_FILTER</param-name>
> >     <param-value>true</param-value>
> >   </context-param>
> >
> >   <context-param>
> >     <description>
> >         Change the url-pattern from the ExtensionsFilter
> >         Default is "/faces/myFacesExtensionResource"
> >         Note: The filter-mapping for ExtensionsFilter, the 
> url-pattern 
> > is
> >         this value + "/*", else there comes a exception
> >     </description>
> >     
> <param-name>org.apache.myfaces.RESOURCE_VIRTUAL_PATH</param-name>
> >     <param-value>/faces/extensionResource</param-value>
> >   </context-param>
> >         <context-param>
> >                 <param-name>org.richfaces.SKIN</param-name>
> >                 <param-value>blueSky</param-value>
> >         </context-param>
> >         <filter>
> >                 <display-name>RichFaces Filter</display-name>
> >                 <filter-name>richfaces</filter-name>
> >                 <filter-class>org.ajax4jsf.Filter</filter-class>
> >         </filter>
> >         <filter-mapping>
> >                 <filter-name>richfaces</filter-name>
> >                 <servlet-name>Faces Servlet</servlet-name>
> >                 <dispatcher>REQUEST</dispatcher>
> >                 <dispatcher>FORWARD</dispatcher>
> >                 <dispatcher>INCLUDE</dispatcher>
> >         </filter-mapping>
> > <!--
> >         <listener>
> >                 <listener-class>
> >                         com.sun.faces.config.ConfigureListener
> >                 </listener-class>
> >         </listener>
> >  -->
> >     <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>/faces/*</url-pattern>
> >         </servlet-mapping>
> >         <session-config>
> >                 <session-timeout>35</session-timeout>
> >         </session-config>
> >         <mime-mapping>
> >                 <extension>html</extension>
> >                 <mime-type>text/html</mime-type>
> >         </mime-mapping>
> >         <mime-mapping>
> >                 <extension>txt</extension>
> >                 <mime-type>text/plain</mime-type>
> >         </mime-mapping>
> >         <login-config>
> >                 <auth-method>BASIC</auth-method>
> >         </login-config>
> > </web-app>
> > ---------------------
> >
> > ---------------------
> > <!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>
> >     <locale-config>
> >       <default-locale>en</default-locale>
> >     </locale-config>
> >   </application>
> >
> >   <managed-bean>
> >         <managed-bean-name>ratingRequest</managed-bean-name>
> >
> > 
> <managed-bean-class>com.wamu.ais.tabpanel.RatingRequestBean</managed-b
> > ea
> > n-class>
> >         <managed-bean-scope>session</managed-bean-scope>
> >   </managed-bean>
> >
> >    <lifecycle>
> >
> > 
> <phase-listener>com.wamu.ais.tabpanel.LifeCycleListener</phase-listene
> > r>
> >
> > 
> <phase-listener>com.wamu.ais.tabpanel.CacheControlPhaseListener</phase
> > -l
> > istener>
> >   </lifecycle>
> >
> > </faces-config>
> > ---------------------
> >
> 
> 
> 
> --
> Matthias Wessendorf
> 
> further stuff:
> blog: http://matthiaswessendorf.wordpress.com/
> sessions: http://www.slideshare.net/mwessendorf
> mail: matzew-at-apache-dot-org
> 

Re: Still trying to move simple RichFaces 3.1.3 app from BEA JSF 1.1 to MyFaces 1.1.5 (Tomcat)

Posted by Matthias Wessendorf <ma...@apache.org>.
hrm.

what happens if you "hit" a very simple page.

<f:view>
<h:outputText value="HAllo" />
</f:view>

have you tried to set a break point inside the FacesServlet ?
(like in service(), where the lifecycle.execute(facesContext) is launched)

perhaps it maybe helpful, to upload a simple demo app to our jira?

Thanks!
Matthias

On Jan 23, 2008 9:18 PM, Karr, David <da...@wamu.net> wrote:
> I asked about this a few days ago, but I'm not making any progress on
> this.  I'd appreciate any hints on what I might be doing wrong.
>
> I have a simple app using the default JSF 1.1 implementation in WebLogic
> 9.2.2, which also uses RichFaces 3.1.3.  It works at this point.
>
> I exported the WAR file and I added to the WEB-INF/lib all the libraries
> that come with the MyFaces 1.1.5 distribution, resulting in the
> following:
>
> * commons-beanutils-1.7.0.jar
> * commons-codec-1.3.jar
> * commons-collections-3.2.jar
> * commons-digester-1.6.jar
> * commons-el-1.0.jar
> * commons-lang-2.1.jar
> * commons-logging-1.0.4.jar
> * jstl-1.1.0.jar
> * myfaces-api-1.1.5.jar
> * myfaces-impl-1.1.5.jar
> * richfaces-api-3.1.3.GA.jar
> * richfaces-impl-3.1.3.GA.jar
> * richfaces-ui-3.1.3.GA.jar
>
> I then re-jared the WAR file, and then copied it to the Tomcat 5.5.25
> webapps dir.  It deployed.  I then tried to go to the URL for the app,
> and Tomcat very quickly hit a StackOverflow error.
>
> The Catalina log had the following log info and exception:
>
> ------------------
> Jan 23, 2008 8:54:12 PM
> org.apache.myfaces.shared_impl.config.MyfacesConfig
> getBooleanInitParameter
> INFO: No context init parameter 'org.apache.myfaces.PRETTY_HTML' found,
> using default value true
> Jan 23, 2008 8:54:12 PM
> org.apache.myfaces.shared_impl.config.MyfacesConfig
> getBooleanInitParameter
> INFO: No context init parameter 'org.apache.myfaces.ALLOW_JAVASCRIPT'
> found, using default value true
> Jan 23, 2008 8:54:12 PM
> org.apache.myfaces.shared_impl.config.MyfacesConfig
> getBooleanInitParameter
> INFO: No context init parameter
> 'org.apache.myfaces.READONLY_AS_DISABLED_FOR_SELECTS' found, using
> default value true
> Jan 23, 2008 8:54:12 PM
> org.apache.myfaces.shared_impl.config.MyfacesConfig getCurrentInstance
> INFO: Tomahawk jar not available. Autoscrolling, DetectJavascript,
> AddResourceClass and CheckExtensionsFilter are disabled now.
> Jan 23, 2008 8:54:12 PM
> org.apache.myfaces.shared_impl.config.MyfacesConfig getCurrentInstance
> INFO: Starting up Tomahawk on the MyFaces-JSF-Implementation
> Jan 23, 2008 8:54:14 PM
> org.apache.myfaces.lifecycle.PhaseListenerManager
> informPhaseListenersAfter
> SEVERE: Exception in PhaseListener RENDER_RESPONSE(6) afterPhase
> java.lang.NullPointerException
>         at
> org.ajax4jsf.context.AjaxContextImpl.getSubmittedRegionClientId(AjaxCont
> extImpl.java:574)
>         at
> org.ajax4jsf.context.AjaxContextImpl.isAjaxRequest(AjaxContextImpl.java:
> 474)
>         at
> org.ajax4jsf.context.AjaxContextImpl.isAjaxRequest(AjaxContextImpl.java:
> 466)
>         at
> org.ajax4jsf.event.AjaxPhaseListener.afterPhase(AjaxPhaseListener.java:7
> 8)
> ------------------
>
> Looking in the RichFaces source code, line 466 is the one line in this
> method:
>
>         public boolean isAjaxRequest() {
>                 return isAjaxRequest(FacesContext.getCurrentInstance());
>         }
>
> So, for whatever reason, "FacesContext.getCurrentInstance()" is null.
>
> In the "localhost" log, there was the following extremely truncated
> exception (it went on forever, repeating the top two stack entries):
>
> ---------------
> SEVERE: Servlet.service() for servlet Faces Servlet threw exception
> java.lang.StackOverflowError
>         at
> javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletReque
> stWrapper.java:216)
>         at
> org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHt
> tpRequest.java:545)
>         at
> javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletReque
> stWrapper.java:216)
>         at
> org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHt
> tpRequest.java:545)
> ---------------
>
> If it helps, here is my faces-config.xml and web.xml:
>
> ---------------------
> <?xml version="1.0" encoding="UTF-8"?>
> <web-app id="WebApp_ID" version="2.4"
> 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">
>     <display-name>TabPanel</display-name>
>     <welcome-file-list>
>         <welcome-file>index.html</welcome-file>
>         <welcome-file>index.htm</welcome-file>
>         <welcome-file>index.jsp</welcome-file>
>         <welcome-file>default.html</welcome-file>
>         <welcome-file>default.htm</welcome-file>
>         <welcome-file>default.jsp</welcome-file>
>     </welcome-file-list>
>     <context-param>
>         <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
>         <param-value>server</param-value>
>     </context-param>
>     <context-param>
>         <param-name>com.sun.faces.validateXml</param-name>
>         <param-value>true</param-value>
>     </context-param>
>     <context-param>
>         <param-name>com.sun.faces.verifyObjects</param-name>
>         <param-value>true</param-value>
>     </context-param>
>     <context-param>
>                 <description>
>                         Validate managed beans, navigation rules and
> ensure that forms are not nested.
>                 </description>
>         <param-name>org.apache.myfaces.VALIDATE</param-name>
>         <param-value>true</param-value>
>     </context-param>
>   <context-param>
>     <description>A class implementing the
>
> org.apache.myfaces.shared.renderkit.html.util.AddResource
>                     interface. It is responsible to
>                         place scripts and css on the right position in
> your HTML document.
>             Default:
> "org.apache.myfaces.shared.renderkit.html.util.DefaultAddResource"
>             Follow the description on the MyFaces-Wiki-Performance page
> to enable
>             StreamingAddResource instead of DefaultAddResource if you
> want to
>             gain performance.
>     </description>
>     <param-name>org.apache.myfaces.ADD_RESOURCE_CLASS</param-name>
>
> <param-value>org.apache.myfaces.renderkit.html.util.DefaultAddResource</
> param-value>
>
> <!--param-value>org.apache.myfaces.component.html.util.StreamingAddResou
> rce</param-value-->
>   </context-param>
>
>   <context-param>
>     <description>
>         A very common problem in configuring MyFaces-web-applications
>         is that the Extensions-Filter is not configured at all
>         or improperly configured. This parameter will check for a
> properly
>         configured Extensions-Filter if it is needed by the web-app.
>         In most cases this check will work just fine, there might be
> cases
>         where an internal forward will bypass the Extensions-Filter and
> the check
>         will not work. If this is the case, you can disable the check by
> setting
>         this parameter to false.
>     </description>
>     <param-name>org.apache.myfaces.CHECK_EXTENSIONS_FILTER</param-name>
>     <param-value>true</param-value>
>   </context-param>
>
>   <context-param>
>     <description>
>         Change the url-pattern from the ExtensionsFilter
>         Default is "/faces/myFacesExtensionResource"
>         Note: The filter-mapping for ExtensionsFilter, the url-pattern
> is
>         this value + "/*", else there comes a exception
>     </description>
>     <param-name>org.apache.myfaces.RESOURCE_VIRTUAL_PATH</param-name>
>     <param-value>/faces/extensionResource</param-value>
>   </context-param>
>         <context-param>
>                 <param-name>org.richfaces.SKIN</param-name>
>                 <param-value>blueSky</param-value>
>         </context-param>
>         <filter>
>                 <display-name>RichFaces Filter</display-name>
>                 <filter-name>richfaces</filter-name>
>                 <filter-class>org.ajax4jsf.Filter</filter-class>
>         </filter>
>         <filter-mapping>
>                 <filter-name>richfaces</filter-name>
>                 <servlet-name>Faces Servlet</servlet-name>
>                 <dispatcher>REQUEST</dispatcher>
>                 <dispatcher>FORWARD</dispatcher>
>                 <dispatcher>INCLUDE</dispatcher>
>         </filter-mapping>
> <!--
>         <listener>
>                 <listener-class>
>                         com.sun.faces.config.ConfigureListener
>                 </listener-class>
>         </listener>
>  -->
>     <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>/faces/*</url-pattern>
>         </servlet-mapping>
>         <session-config>
>                 <session-timeout>35</session-timeout>
>         </session-config>
>         <mime-mapping>
>                 <extension>html</extension>
>                 <mime-type>text/html</mime-type>
>         </mime-mapping>
>         <mime-mapping>
>                 <extension>txt</extension>
>                 <mime-type>text/plain</mime-type>
>         </mime-mapping>
>         <login-config>
>                 <auth-method>BASIC</auth-method>
>         </login-config>
> </web-app>
> ---------------------
>
> ---------------------
> <!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>
>     <locale-config>
>       <default-locale>en</default-locale>
>     </locale-config>
>   </application>
>
>   <managed-bean>
>         <managed-bean-name>ratingRequest</managed-bean-name>
>
> <managed-bean-class>com.wamu.ais.tabpanel.RatingRequestBean</managed-bea
> n-class>
>         <managed-bean-scope>session</managed-bean-scope>
>   </managed-bean>
>
>    <lifecycle>
>
> <phase-listener>com.wamu.ais.tabpanel.LifeCycleListener</phase-listener>
>
> <phase-listener>com.wamu.ais.tabpanel.CacheControlPhaseListener</phase-l
> istener>
>   </lifecycle>
>
> </faces-config>
> ---------------------
>



-- 
Matthias Wessendorf

further stuff:
blog: http://matthiaswessendorf.wordpress.com/
sessions: http://www.slideshare.net/mwessendorf
mail: matzew-at-apache-dot-org