Struts 2
  1. Struts 2
  2. WW-2749

portlet plugin doesn't work with tiles

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.0.7, 2.0.8, 2.0.9, 2.0.10, 2.0.11, 2.0.11.1, 2.0.11.2, 2.1.0, 2.1.1, 2.1.2
    • Fix Version/s: 2.3.7
    • Labels:
      None
    • Environment:

      WebSphere 6.1.0.9, Struts 2.1.2, xwork-2.1.1, tiles-2.0.6

    • Flags:
      Patch

      Description

      An exception "java.lang.IllegalStateException: Not allowed in a portlet" has occurred while struts is trying to forward request as ServletRequest:

                            • Start Display Current Environment ************
                              WebSphere Platform 6.1 [BASE 6.1.0.9 cf90722.41] [WEBSERVICES 6.1.0.9 x0723.22] running with process name localhostNode01Cell\localhostNode01\server1 and process id 22733
                              Host Operating System is Linux, version 2.6.26-thinkpad
                              Java version = J2RE 1.5.0 IBM J9 2.3 Linux x86-32 j9vmxi3223-20070426 (JIT enabled)
                              J9VM - 20070420_12448_lHdSMR
                              JIT - 20070419_1806_r8
                              GC - 200704_19, Java Compiler = j9jit23, Java VM name = IBM J9 VM
                              was.install.root = /opt/IBM/SDP70/runtimes/base_v61
                              user.install.root = /opt/IBM/SDP70/runtimes/base_v61/profiles/AppSrv01
                              Java Home = /opt/IBM/SDP70/runtimes/base_v61/java/jre
                              ws.ext.dirs = /opt/IBM/SDP70/runtimes/base_v61/java/lib:/opt/IBM/SDP70/runtimes/base_v61/profiles/AppSrv01/classes:/opt/IBM/SDP70/runtimes/base_v61/classes:/opt/IBM/SDP70/runtimes/base_v61/lib:/opt/IBM/SDP70/runtimes/base_v61/installedChannels:/opt/IBM/SDP70/runtimes/base_v61/lib/ext:/opt/IBM/SDP70/runtimes/base_v61/web/help:/opt/IBM/SDP70/runtimes/base_v61/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime
                              Classpath = /opt/IBM/SDP70/runtimes/base_v61/profiles/AppSrv01/properties:/opt/IBM/SDP70/runtimes/base_v61/properties:/opt/IBM/SDP70/runtimes/base_v61/lib/startup.jar:/opt/IBM/SDP70/runtimes/base_v61/lib/bootstrap.jar:/opt/IBM/SDP70/runtimes/base_v61/lib/j2ee.jar:/opt/IBM/SDP70/runtimes/base_v61/lib/lmproxy.jar:/opt/IBM/SDP70/runtimes/base_v61/lib/urlprotocols.jar:/opt/IBM/SDP70/runtimes/base_v61/deploytool/itp/batchboot.jar:/opt/IBM/SDP70/runtimes/base_v61/deploytool/itp/batch2.jar:/opt/IBM/SDP70/runtimes/base_v61/java/lib/tools.jar
                              Java Library path = /opt/IBM/SDP70/runtimes/base_v61/java/jre/bin:/opt/IBM/SDP70/runtimes/base_v61/java/jre/bin:/opt/IBM/SDP70/runtimes/base_v61/java/jre/bin/classic:/opt/IBM/SDP70/runtimes/base_v61/java/jre/bin:/opt/IBM/SDP70/runtimes/base_v61/bin:/usr/lib/mozilla-thunderbird:/usr/lib:/opt/IBM/SDP70/runtimes/base_v61/lib/WMQ/java/lib
                              • End Display Current Environment *************
                                efaultActionInvocation.java:230)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
                                at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
                                at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
                                at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
                                at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
                                at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
                                at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:137)
                                at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
                                at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
                                at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
                                at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
                                at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
                                at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
                                at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:130)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
                                at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
                                at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
                                at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
                                at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
                                at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
                                at org.apache.struts2.portlet.interceptor.PortletAwareInterceptor.intercept(PortletAwareInterceptor.java:83)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
                                at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
                                at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
                                at org.apache.struts2.portlet.interceptor.PortletStateInterceptor.intercept(PortletStateInterceptor.java:51)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
                                at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
                                at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
                                at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
                                at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
                                at org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.serviceAction(Jsr168Dispatcher.java:446)
                                ... 86 more
                                Caused by: java.lang.IllegalStateException: Not allowed in a portlet
                                at org.apache.struts2.portlet.servlet.PortletServletRequestDispatcher.forward(PortletServletRequestDispatcher.java:46)
                                at org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:202)
                                at org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:179)
                                at org.apache.tiles.context.TilesRequestContextWrapper.dispatch(TilesRequestContextWrapper.java:72)
                                at org.apache.struts2.tiles.StrutsTilesRequestContext.dispatch(StrutsTilesRequestContext.java:88)
                                at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:606)
                                ... 199 more

      Nested Exception is org.apache.tiles.TilesException: Not allowed in a portlet
      at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:614)
      at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:246)
      at org.apache.struts2.views.tiles.TilesResult.doExecute(TilesResult.java:105)
      at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
      at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:355)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:259)
      at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:141)
      at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:248)
      at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:49)
      at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:124)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:170)
      at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:170)
      at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:104)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:84)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:208)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:88)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:130)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:137)
      at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:130)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at org.apache.struts2.portlet.interceptor.PortletAwareInterceptor.intercept(PortletAwareInterceptor.java:83)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at org.apache.struts2.portlet.interceptor.PortletStateInterceptor.intercept(PortletStateInterceptor.java:51)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:230)
      at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:1)
      at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:456)
      at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:227)
      at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
      at org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.serviceAction(Jsr168Dispatcher.java:446)
      at org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.render(Jsr168Dispatcher.java:321)
      at com.ibm.ws.portletcontainer.core.PortletServlet.doDispatch(PortletServlet.java:344)
      at com.ibm.ws.portletcontainer.core.PortletServletCollaboratorChainImpl.doCollaborator(PortletServletCollaboratorChainImpl.java:114)
      at com.ibm.isclite.container.collaborator.PortletServletCollaborator.doRender(PortletServletCollaborator.java:68)
      at com.ibm.ws.portletcontainer.core.PortletServletCollaboratorChainImpl.doCollaborator(PortletServletCollaboratorChainImpl.java:105)
      at com.ibm.ws.portletcontainer.rrd.RRDServerPortletServletCollaborator.doRender(RRDServerPortletServletCollaborator.java:123)
      at com.ibm.ws.portletcontainer.core.PortletServletCollaboratorChainImpl.doCollaborator(PortletServletCollaboratorChainImpl.java:105)
      at com.ibm.ws.portletcontainer.cache.CacheCollaborator.doRender(CacheCollaborator.java:84)
      at com.ibm.ws.portletcontainer.core.PortletServletCollaboratorChainImpl.doCollaborator(PortletServletCollaboratorChainImpl.java:105)
      at com.ibm.ws.portletcontainer.core.PortletServlet.doDispatch(PortletServlet.java:240)
      at com.ibm.ws.portletcontainer.core.PortletServletCollaboratorChainImpl.doCollaborator(PortletServletCollaboratorChainImpl.java:82)
      at com.ibm.isclite.container.collaborator.PortletServletCollaborator.doDispatch(PortletServletCollaborator.java:122)
      at com.ibm.ws.portletcontainer.core.PortletServletCollaboratorChainImpl.doCollaborator(PortletServletCollaboratorChainImpl.java:74)
      at com.ibm.ws.portletcontainer.rrd.RRDServerPortletServletCollaborator.doDispatch(RRDServerPortletServletCollaborator.java:60)
      at com.ibm.ws.portletcontainer.core.PortletServletCollaboratorChainImpl.doCollaborator(PortletServletCollaboratorChainImpl.java:74)
      at com.ibm.ws.portletcontainer.cache.CacheCollaborator.doDispatch(CacheCollaborator.java:66)
      at com.ibm.ws.portletcontainer.core.PortletServletCollaboratorChainImpl.doCollaborator(PortletServletCollaboratorChainImpl.java:74)
      at com.ibm.ws.portletcontainer.core.PortletServlet.dispatch(PortletServlet.java:183)
      at com.ibm.ws.portletcontainer.core.PortletServlet.doGet(PortletServlet.java:118)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:989)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:930)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:118)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
      at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:761)
      at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:673)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:498)
      at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:464)
      at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122)
      at com.ibm.ws.portletcontainer.webextension.PortletExtensionProcessor.handleRequest(PortletExtensionProcessor.java:95)
      at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.include(WebAppRequestDispatcher.java:639)
      at com.ibm.ws.portletcontainer.invoker.impl.PortletInvokerImpl.invoke(PortletInvokerImpl.java:146)
      at com.ibm.ws.portletcontainer.invoker.impl.PortletInvokerCollaboratorChainImpl.doCollaborator(PortletInvokerCollaboratorChainImpl.java:70)
      at com.ibm.ws.portletcontainer.ext.PortletInvokerPerformanceCollaborator.invoke(PortletInvokerPerformanceCollaborator.java:247)
      at com.ibm.ws.portletcontainer.ext.PortletInvokerPerformanceCollaborator.doInvoke(PortletInvokerPerformanceCollaborator.java:93)
      at com.ibm.ws.portletcontainer.ext.PortletInvokerPerformanceCollaborator.invokePMI(PortletInvokerPerformanceCollaborator.java:137)
      at com.ibm.ws.portletcontainer.ext.PortletInvokerPerformanceCollaborator.doInvoke(PortletInvokerPerformanceCollaborator.java:83)
      at com.ibm.ws.portletcontainer.ext.PortletInvokerPerformanceCollaborator.doRender(PortletInvokerPerformanceCollaborator.java:68)
      at com.ibm.ws.portletcontainer.invoker.impl.PortletInvokerCollaboratorChainImpl.doCollaborator(PortletInvokerCollaboratorChainImpl.java:57)
      at com.ibm.ws.portletcontainer.invoker.impl.PortletInvokerImpl.render(PortletInvokerImpl.java:83)
      at com.ibm.ws.portletcontainer.PortletContainerImpl.doRender(PortletContainerImpl.java:115)
      at com.ibm.ws.portletcontainer.PortletContainerInvokerCollaboratorChainImpl.doCollaborator(PortletContainerInvokerCollaboratorChainImpl.java:79)
      at com.ibm.ws.portletcontainer.ext.ExtCollaborator.doRender(ExtCollaborator.java:70)
      at com.ibm.ws.portletcontainer.PortletContainerInvokerCollaboratorChainImpl.doCollaborator(PortletContainerInvokerCollaboratorChainImpl.java:67)
      at com.ibm.ws.portletcontainer.PortletContainerImpl.renderPortlet(PortletContainerImpl.java:87)
      at com.ibm.ws.portletcontainer.pcinvoker.PortletInvokerImpl$2.run(PortletInvokerImpl.java:81)
      at java.security.AccessController.doPrivileged(AccessController.java:242)
      at com.ibm.ws.portletcontainer.pcinvoker.PortletInvokerImpl.invokeRender(PortletInvokerImpl.java:79)
      at com.ibm.ws.portletcontainer.portletserving.PortletServingServlet.invokePortletRender(PortletServingServlet.java:254)
      at com.ibm.ws.portletcontainer.portletserving.PortletServingServlet.service(PortletServingServlet.java:131)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:989)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:930)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)
      at com.ibm.ws.portletcontainer.portletserving.filter.PortletDocumentFilterContainer.doFilterEnd(PortletDocumentFilterContainer.java:60)
      at com.ibm.ws.portletcontainer.portletserving.filter.PortletDocumentFilterChain.doFilter(PortletDocumentFilterChain.java:55)
      at com.ibm.ws.portletcontainer.portletserving.filter.DefaultFilter.doFilter(DefaultFilter.java:104)
      at com.ibm.ws.portletcontainer.portletserving.filter.PortletDocumentFilterChain.doFilter(PortletDocumentFilterChain.java:49)
      at com.ibm.ws.portletcontainer.portletserving.filter.PortletDocumentFilterContainer.doFilter(PortletDocumentFilterContainer.java:51)
      at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
      at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
      at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:761)
      at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:673)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:498)
      at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:464)
      at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122)
      at com.ibm.ws.portletcontainer.portletserving.PortletServingExtensionProcessor.handleRequest(PortletServingExtensionProcessor.java:94)
      at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3252)
      at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:264)
      at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811)
      at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1439)
      at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:112)
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:454)
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:383)
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:263)
      at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
      at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
      at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
      at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
      at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
      at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
      at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
      at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
      at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
      at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469)
      Caused by: java.lang.IllegalStateException: Not allowed in a portlet
      at org.apache.struts2.portlet.servlet.PortletServletRequestDispatcher.forward(PortletServletRequestDispatcher.java:46)
      at org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:202)
      at org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:179)
      at org.apache.tiles.context.TilesRequestContextWrapper.dispatch(TilesRequestContextWrapper.java:72)
      at org.apache.struts2.tiles.StrutsTilesRequestContext.dispatch(StrutsTilesRequestContext.java:88)
      at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:606)
      ... 199 more

      1. StrutsPortletTilesPlugin.patch
        9 kB
        Maxime Gréau
      2. struts2-portlet-tiles-sample-1.0.0-SNAPSHOT.war
        4.43 MB
        Maxime Gréau
      3. PortletTilesResult.java
        2 kB
        Nikita Koval
      4. portletTiles.patch
        4 kB
        Nikita Koval

        Issue Links

          Activity

          Hide
          Nikita Koval added a comment -

          PortletTilesResult class for struts2-portlet-plugin

          Redefine result-type "tiles" in your struts.xml to use "org.apache.struts2.views.tiles.PortletTilesResult" class:

          <result-types>
          <result-type name="tiles" class="org.apache.struts2.views.tiles.PortletTilesResult" />
          </result-types>

          Show
          Nikita Koval added a comment - PortletTilesResult class for struts2-portlet-plugin Redefine result-type "tiles" in your struts.xml to use "org.apache.struts2.views.tiles.PortletTilesResult" class: <result-types> <result-type name="tiles" class="org.apache.struts2.views.tiles.PortletTilesResult" /> </result-types>
          Hide
          Nikita Koval added a comment -

          Attached patch for struts-2.1.2 to implement result-type "portletiles"

          Show
          Nikita Koval added a comment - Attached patch for struts-2.1.2 to implement result-type "portletiles"
          Hide
          Nikita Koval added a comment -

          This patch (portletTiles.patch) is fixes the main problem, replacing request and response objects available to tiles classes with a proper ones - RenderRequest/Response
          but StrutsTilesListener from tiles-plugin is still uses StrutsTilesContainerFactory to initialize BasicTilesContainer with a ServletTilesRequestContext context class instead of org.apache.tiles.portlet.context.PortletTilesRequestContext.
          But as long as PortletContext is not available in Listener it seems to me the interface that tiles exposes for Struts - the TilesContainer - should be initialized somewhere else (perhaps in Jsr168Dispatcher ? )
          any suggestions?

          Show
          Nikita Koval added a comment - This patch (portletTiles.patch) is fixes the main problem, replacing request and response objects available to tiles classes with a proper ones - RenderRequest/Response but StrutsTilesListener from tiles-plugin is still uses StrutsTilesContainerFactory to initialize BasicTilesContainer with a ServletTilesRequestContext context class instead of org.apache.tiles.portlet.context.PortletTilesRequestContext. But as long as PortletContext is not available in Listener it seems to me the interface that tiles exposes for Struts - the TilesContainer - should be initialized somewhere else (perhaps in Jsr168Dispatcher ? ) any suggestions?
          Hide
          Cédric added a comment -

          Are you sure that your patch work?
          I test this patch and doesn't work for me.
          I have this error :
          java.lang.ClassCastException: org.jboss.portal.portlet.impl.jsr168.api.RenderRequestImpl cannot be cast to javax.servlet.http.HttpServletRequest
          at org.apache.tiles.servlet.context.ServletTilesContextFactory.createRequestContext(ServletTilesContextFactory.java:59)
          at org.apache.tiles.context.ChainedTilesContextFactory.createRequestContext(ChainedTilesContextFactory.java:136)
          at org.apache.struts2.tiles.ausy.StrutsTilesContainerFactoryAusy$StrutsTilesContextFactoryAusy.createRequestContext(StrutsTilesContainerFactoryAusy.java:74)
          at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:242)

          Show
          Cédric added a comment - Are you sure that your patch work? I test this patch and doesn't work for me. I have this error : java.lang.ClassCastException: org.jboss.portal.portlet.impl.jsr168.api.RenderRequestImpl cannot be cast to javax.servlet.http.HttpServletRequest at org.apache.tiles.servlet.context.ServletTilesContextFactory.createRequestContext(ServletTilesContextFactory.java:59) at org.apache.tiles.context.ChainedTilesContextFactory.createRequestContext(ChainedTilesContextFactory.java:136) at org.apache.struts2.tiles.ausy.StrutsTilesContainerFactoryAusy$StrutsTilesContextFactoryAusy.createRequestContext(StrutsTilesContainerFactoryAusy.java:74) at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:242)
          Hide
          Dean Pullen added a comment -

          I can confirm the pactch doesn't work, and the exception stated is thrown.

          Show
          Dean Pullen added a comment - I can confirm the pactch doesn't work, and the exception stated is thrown.
          Hide
          Fabrice Mercier added a comment -

          Hi

          Do you have some correction date ?
          It is a painfull bug, I use the tiles plugin 2.1.8 and because it is a blocking issue for my company he may migrate to SiteMesh if no more information are provided.

          Show
          Fabrice Mercier added a comment - Hi Do you have some correction date ? It is a painfull bug, I use the tiles plugin 2.1.8 and because it is a blocking issue for my company he may migrate to SiteMesh if no more information are provided.
          Hide
          Maxime Gréau added a comment -

          Following the conversation on the issue WW-2801, I attach a patch with a new portlet-tiles-plugin and a sample application.

          Show
          Maxime Gréau added a comment - Following the conversation on the issue WW-2801 , I attach a patch with a new portlet-tiles-plugin and a sample application.
          Hide
          Lukasz Lenart added a comment -

          Nice work, give me some time to introduce these changes as my Mac went away :/

          Show
          Lukasz Lenart added a comment - Nice work, give me some time to introduce these changes as my Mac went away :/
          Hide
          Maxime Gréau added a comment -

          Ok, then I will provide a patch to update struts-portlet apps with an example.
          Should I create an issue for this patch (like WW-3853) ?

          Show
          Maxime Gréau added a comment - Ok, then I will provide a patch to update struts-portlet apps with an example. Should I create an issue for this patch (like WW-3853 ) ?
          Hide
          Lukasz Lenart added a comment -

          Yeah, as this will no block with release if there be no room to introduce changes to the apps.

          Show
          Lukasz Lenart added a comment - Yeah, as this will no block with release if there be no room to introduce changes to the apps.
          Hide
          Hudson added a comment -

          Integrated in Struts2 #527 (See https://builds.apache.org/job/Struts2/527/)
          WW-2749 adds support for Tiles in Porlets as a dedicated plugin with new PortletTilesResult (Revision 1381887)

          Result = FAILURE
          lukaszlenart :
          Files :

          • /struts/struts2/trunk/plugins/pom.xml
          • /struts/struts2/trunk/plugins/portlet-tiles
          • /struts/struts2/trunk/plugins/portlet-tiles/pom.xml
          • /struts/struts2/trunk/plugins/portlet-tiles/src
          • /struts/struts2/trunk/plugins/portlet-tiles/src/main
          • /struts/struts2/trunk/plugins/portlet-tiles/src/main/java
          • /struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org
          • /struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache
          • /struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2
          • /struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/views
          • /struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles
          • /struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles/PortletTilesResult.java
          • /struts/struts2/trunk/plugins/portlet-tiles/src/main/resources
          • /struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/LICENSE.txt
          • /struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/NOTICE.txt
          • /struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/struts-plugin.xml
          • /struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java
          Show
          Hudson added a comment - Integrated in Struts2 #527 (See https://builds.apache.org/job/Struts2/527/ ) WW-2749 adds support for Tiles in Porlets as a dedicated plugin with new PortletTilesResult (Revision 1381887) Result = FAILURE lukaszlenart : Files : /struts/struts2/trunk/plugins/pom.xml /struts/struts2/trunk/plugins/portlet-tiles /struts/struts2/trunk/plugins/portlet-tiles/pom.xml /struts/struts2/trunk/plugins/portlet-tiles/src /struts/struts2/trunk/plugins/portlet-tiles/src/main /struts/struts2/trunk/plugins/portlet-tiles/src/main/java /struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org /struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache /struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2 /struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/views /struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles /struts/struts2/trunk/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles/PortletTilesResult.java /struts/struts2/trunk/plugins/portlet-tiles/src/main/resources /struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/LICENSE.txt /struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/NOTICE.txt /struts/struts2/trunk/plugins/portlet-tiles/src/main/resources/struts-plugin.xml /struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java
          Hide
          Lukasz Lenart added a comment -

          Done, patch applied, new page about the plugin added [1]! Thanks a lot!

          [1] https://cwiki.apache.org/confluence/display/WW/Portlet+Tiles+Plugin

          Show
          Lukasz Lenart added a comment - Done, patch applied, new page about the plugin added [1] ! Thanks a lot! [1] https://cwiki.apache.org/confluence/display/WW/Portlet+Tiles+Plugin
          Hide
          Hudson added a comment -

          Integrated in Struts2 #528 (See https://builds.apache.org/job/Struts2/528/)
          WW-2749 adds missing <version/> tag (Revision 1381889)

          Result = SUCCESS
          lukaszlenart :
          Files :

          • /struts/struts2/trunk/plugins/portlet-tiles/pom.xml
          Show
          Hudson added a comment - Integrated in Struts2 #528 (See https://builds.apache.org/job/Struts2/528/ ) WW-2749 adds missing <version/> tag (Revision 1381889) Result = SUCCESS lukaszlenart : Files : /struts/struts2/trunk/plugins/portlet-tiles/pom.xml
          Hide
          Lukasz Lenart added a comment -

          I will have to rollback changes to StrutsTilesRequestContext as this causes problems in WW-3928

          Show
          Lukasz Lenart added a comment - I will have to rollback changes to StrutsTilesRequestContext as this causes problems in WW-3928
          Hide
          Hudson added a comment -

          Integrated in Struts2-JDK5 #10 (See https://builds.apache.org/job/Struts2-JDK5/10/)
          WW-3928 Rollbacks changes introduced with WW-2749 to allow work with mod_jk and so on (Revision 1415770)

          Result = SUCCESS
          lukaszlenart :
          Files :

          • /struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java
          Show
          Hudson added a comment - Integrated in Struts2-JDK5 #10 (See https://builds.apache.org/job/Struts2-JDK5/10/ ) WW-3928 Rollbacks changes introduced with WW-2749 to allow work with mod_jk and so on (Revision 1415770) Result = SUCCESS lukaszlenart : Files : /struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java
          Hide
          Hudson added a comment -

          Integrated in Struts2-JDK6 #573 (See https://builds.apache.org/job/Struts2-JDK6/573/)
          WW-3928 Rollbacks changes introduced with WW-2749 to allow work with mod_jk and so on (Revision 1415770)

          Result = SUCCESS
          lukaszlenart :
          Files :

          • /struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java
          Show
          Hudson added a comment - Integrated in Struts2-JDK6 #573 (See https://builds.apache.org/job/Struts2-JDK6/573/ ) WW-3928 Rollbacks changes introduced with WW-2749 to allow work with mod_jk and so on (Revision 1415770) Result = SUCCESS lukaszlenart : Files : /struts/struts2/trunk/plugins/tiles/src/main/java/org/apache/struts2/tiles/StrutsTilesRequestContext.java

            People

            • Assignee:
              Lukasz Lenart
              Reporter:
              Nikita Koval
            • Votes:
              3 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development