1 Reply Latest reply on Jul 23, 2007 4:11 PM by Sergey Halipov

    java.lang.StackOverflowError when combining <rich:tabPanel>

    Todd Gould Novice

      Hello,

      I attempting to combine <rich:tabPanel> with <a4j:include> and keep running into a ServletException resulting from an underlying java.lang.StackOverflowError.

      Here is the relevant jsp snippet:

      
       <a4j:form id="tabForm">
       <rich:tabPanel id="mainTabs" switchType="client">
       <rich:tab label="Home">
       <a4j:include id="HomePaneDiv" layout="inline" viewId="/foo.jsf"
       keepTransient="true"/>
       </rich:tab>
      
       <rich:tab label="Utils">
       <h:panelGrid columns="1">
       <rich:tabPanel id="utilTabs" switchType="client">
       <rich:tab label="Unit Converter">
       <a4j:outputPanel id="UnitConverterPane" ajaxRendered="true">
       <a4j:include id="UnitConverterPaneDiv" layout="inline" viewId="/pages/unitConverter/unitConverter.jsf"
       keepTransient="true"/>
       </a4j:outputPanel>
       </rich:tab>
       <rich:tab label="Data Downloads">
       <h:outputText value="B"/>
       <a4j:include id="DataDownloadsPaneDiv" layout="inline" viewId="/pages/downloads.jsf"
       keepTransient="true"/>
       </rich:tab>
       <rich:tab label="Links">
       <h:outputText value="C"/>
       <a4j:include id="LinksPaneDiv" layout="inline" viewId="/pages/links.jsf"
       keepTransient="true"/>
       </rich:tab>
       </rich:tabPanel>
       </h:panelGrid>
       </rich:tab>
      
       </rich:tabPanel>
       </a4j:form>
      


      This snippet works fine as long as I remove the <a4j:include> tags. Regardless of the contents of the <a4j:include>d pages (I've tried with just a simple <h:outputText value="Hello world"/>) for all included pages with the same results as shown in the following stack trace:


      
      javax.faces.FacesException: javax.servlet.ServletException
       at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:425)
       at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)
       at org.ajax4jsf.framework.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
       at org.ajax4jsf.framework.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:233)
       at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
       at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
       at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
       at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
       at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
       at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
       at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
       at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:127)
       at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:277)
       at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
       at nuwss.sisp.web.filter.LoginFilter.doFilter(LoginFilter.java:292)
       at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
       at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
       at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
       at org.ajaxanywhere.AAFilter.doFilter(AAFilter.java:46)
       at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
       at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3212)
       at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
       at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
       at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1983)
       at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1890)
       at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1344)
       at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
       at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
      Caused by: javax.servlet.ServletException: javax.servlet.ServletException
       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:154)
       at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
       at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
       at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
       at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
       at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
       at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:293)
       at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
       at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:497)
       at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:427)
       at org.ajax4jsf.taglib.html.jsp.IncludeTag.doStartTag(IncludeTag.java:216)
       at jsp_servlet.__tabbedpanetest._jsp__tag9(__tabbedpanetest.java:526)
       at jsp_servlet.__tabbedpanetest._jsp__tag8(__tabbedpanetest.java:497)
       at jsp_servlet.__tabbedpanetest._jsp__tag7(__tabbedpanetest.java:431)
       at jsp_servlet.__tabbedpanetest._jsp__tag3(__tabbedpanetest.java:307)
       at jsp_servlet.__tabbedpanetest._jsp__tag2(__tabbedpanetest.java:258)
       at jsp_servlet.__tabbedpanetest._jspService(__tabbedpanetest.java:183)
       at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
       at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
       at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
       at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
       at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
       at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:496)
       at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:245)
       at org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:419)
       ... 28 more
      
      


      Having debugged into the org.apache.myfaces.context.servlet.ServletExternalContextImpl class to ascertain the cause, the rootCause reported in the ServletException thrown at line 425 is a java.lang.StackOverflowError .... unfortunately, the java.lang.StackOverflowError does not contain any details or stackTrace.

      I'm using MyFaces 1.1.5, Tomahawk 1.1.6, RichFaces 3.0.1 and Ajax4JSF 1.1.1 on a Weblogic 9.2.

      Any and all help will be greatly appreciated.

      TIA!