java.lang.StackOverflowError when combining <rich:tabPanel>
skidvd Jul 20, 2007 4:30 PMHello,
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!