Wicket-1.4-rc2 / Liferay 5.2.1 / Ajax: PortletServletRequestWrapper: java.lang.StringIndexOutOfBoundsException
Hi, I was using the AjaxLink in a portlet and I noticed that in case the portal url is shorter than the wicket filter path I get this error: 2009-02-20 11:07:40,765 ERROR [[MonitoringPortlet].invoke()] - Servlet.service() for servlet MonitoringPortlet threw exception java.lang.StringIndexOutOfBoundsException: String index out of range: -3 at java.lang.String.substring(String.java:1938) at java.lang.String.substring(String.java:1905) at org.apache.wicket.protocol.http.portlet.PortletServletRequestWrapper.init(PortletServletRequestWrapper.java:144) at org.apache.wicket.protocol.http.portlet.WicketFilterPortletContext.setupFilter(WicketFilterPortletContext.java:120) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:229) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:399) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:613) at com.liferay.portlet.InvokerPortletImpl.invokeResource(InvokerPortletImpl.java:722) at com.liferay.portlet.InvokerPortletImpl.serveResource(InvokerPortletImpl.java:496) at com.liferay.portal.action.LayoutAction.processPortletRequest(LayoutAction.java:663) at com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:454) at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:195) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:159) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:505) at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:732) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:399) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.liferay.portal.servlet.FriendlyURLServlet.service(FriendlyURLServlet.java:143) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154) at com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:178) at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154) at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:149) at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154) at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:282) at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91) at
Re: Wicket-1.4-rc2 / Liferay 5.2.1 / Ajax: PortletServletRequestWrapper: java.lang.StringIndexOutOfBoundsException
This is probably an error in Liferays PortletRequestDispatcher. Use Liferay 5.2.x (head of liferay branch 5.2.x) and use the sun portlet container (put portlet.container.impl=sun in portlal-ext.properties) (See http://issues.liferay.com/browse/LPS-1911) and then apply the patches in these two lps's to fix some issues with the sun container http://issues.liferay.com/browse/LPS-2131 http://issues.liferay.com/browse/LPS-1909 Thijs On 20-2-2009 10:36, sauli_k wrote: Hi, I was using the AjaxLink in a portlet and I noticed that in case the portal url is shorter than the wicket filter path I get this error: 2009-02-20 11:07:40,765 ERROR [[MonitoringPortlet].invoke()] - Servlet.service() for servlet MonitoringPortlet threw exception java.lang.StringIndexOutOfBoundsException: String index out of range: -3 at java.lang.String.substring(String.java:1938) at java.lang.String.substring(String.java:1905) at org.apache.wicket.protocol.http.portlet.PortletServletRequestWrapper.init(PortletServletRequestWrapper.java:144) at org.apache.wicket.protocol.http.portlet.WicketFilterPortletContext.setupFilter(WicketFilterPortletContext.java:120) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:229) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:399) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:613) at com.liferay.portlet.InvokerPortletImpl.invokeResource(InvokerPortletImpl.java:722) at com.liferay.portlet.InvokerPortletImpl.serveResource(InvokerPortletImpl.java:496) at com.liferay.portal.action.LayoutAction.processPortletRequest(LayoutAction.java:663) at com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:454) at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:195) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:159) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:505) at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:732) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:399) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.liferay.portal.servlet.FriendlyURLServlet.service(FriendlyURLServlet.java:143) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154) at com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:178) at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154) at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:149) at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91) at