This article documents a known issue for users on Apache Tomcat 6.0.44, 7.0.69 or newer (including Tomcat 8) after Apache has issued a bug fix on those versions.
When layout.parallel.render.enable=truehas been set, users might see the following errors in the console logs on Liferay Portal 6.2:
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap
at org.apache.catalina.util.ParameterMap.put(ParameterMap.java:164)
at java.util.HashMap.putAll(HashMap.java:643)
at org.apache.catalina.util.ParameterMap.putAll(ParameterMap.java:186)
at org.apache.catalina.core.ApplicationHttpRequest.parseParameters(ApplicationHttpRequest.java:739)
at org.apache.catalina.core.ApplicationHttpRequest.getParameter(ApplicationHttpRequest.java:376)
at javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:140)
at javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:140)
at com.liferay.portlet.SecurityPortletContainerWrapper.hasAccessPermission(SecurityPortletContainerWrapper.java:337)
at com.liferay.portlet.SecurityPortletContainerWrapper.check(SecurityPortletContainerWrapper.java:209)
at com.liferay.portlet.SecurityPortletContainerWrapper.checkRender(SecurityPortletContainerWrapper.java:243)
at com.liferay.portlet.SecurityPortletContainerWrapper.render(SecurityPortletContainerWrapper.java:139)
at com.liferay.portlet.RestrictPortletContainerWrapper.render(RestrictPortletContainerWrapper.java:126)
at com.liferay.portal.kernel.portlet.PortletContainerUtil.render(PortletContainerUtil.java:156)
at com.liferay.portal.layoutconfiguration.util.PortletRenderer._render(PortletRenderer.java:125)
at com.liferay.portal.layoutconfiguration.util.PortletRenderer.access$4(PortletRenderer.java:107)
at com.liferay.portal.layoutconfiguration.util.PortletRenderer$PortletRendererCallable.doCall(PortletRenderer.java:180)
at com.liferay.portal.layoutconfiguration.util.PortletRenderer$PortletRendererCallable.doCall(PortletRenderer.java:1)
at com.liferay.portal.kernel.executor.CopyThreadLocalCallable.call(CopyThreadLocalCallable.java:69)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask._runTask(ThreadPoolExecutor.java:682)
at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask.run(ThreadPoolExecutor.java:593)
at java.lang.Thread.run(Thread.java:745)
27-Oct-2017 06:54:45.570 SEVERE [RuntimePageImpl-3] org.apache.catalina.core.ApplicationDispatcher.invoke Servlet.service() for servlet jsp threw exception java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:889) at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:229) at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:575) ... 27-Oct-2017 06:54:45.584 SEVERE [RuntimePageImpl-4] org.apache.catalina.core.ApplicationDispatcher.invoke Servlet.service() for servlet jsp threw exception java.lang.IllegalStateException: The request object has been recycled and is no longer associated with this facade at org.apache.catalina.connector.RequestFacade.getAttribute(RequestFacade.java:279) at org.apache.catalina.c
The second one might occur when the following JVM argument is set in CATALINA_OPTS:
org.apache.catalina.connector.RECYCLE_FACADES=true
Resolution
The solution is to set layout.parallel.render.enable= to false in the portal-ext.properties. This property has already been deprecated and set to false by default as of DXP 7.0.
Additional Information
See this article for more information from Apache.