Hi, After the user successfully logs in he is redirected to the page where he came from. The location is written in the shiroSavedRequest cookie. The redirect works most of the time, but occasionally for some users the below code throws an exception. I tried bullet-proofing it by setting requestUri to "index" if the url is empty, but I'm still receiving the exception ("org.eclipse.jetty.http.HttpException: null" - see the full stacktrace below the code).
Is there something wrong with the code? The requestUri isn't empty - so what is null? This is my code (Prijava.java): String requestUri = loginContextService.getSuccessPage(); logger.debug("Redirect to savedUrl {}",redirectToSavedUrl); logger.debug("Saved request url {}",loginContextService.getSuccessPage()); if (redirectToSavedUrl) { if ((requestUri == null) || (requestUri.equals(""))) { logger.warn("Request URI = null, setting to index."); requestUri = "index"; } if (!requestUri.startsWith("/")) { requestUri = "/" + requestUri; } try { loginContextService.redirectToSavedRequest(requestUri); // line 153 return null; } catch (Exception e){ logger.warn("Error redirecting to saved request: " + requestUri + ": ", e); return null; } } else { return loginContextService.getSuccessPage(); } STACKTRACE: [00:23:29.214] WARN [s.n.w.p.Prijava]: Error redirecting to saved request: /index: org.eclipse.jetty.http.HttpException: null at org.eclipse.jetty.server.AbstractHttpConnection.completeResponse(AbstractHttpConnection.java:641) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.Response.complete(Response.java:1242) ~[jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.Response.sendRedirect(Response.java:497) ~[jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:172) ~[servlet-api-3.0.jar:na] at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:172) ~[servlet-api-3.0.jar:na] at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:172) ~[servlet-api-3.0.jar:na] at $HttpServletResponse_10b2274ebf2756.sendRedirect(Unknown Source) ~[na:na] at $HttpServletResponse_10b2274ebf1e97.sendRedirect(Unknown Source) ~[na:na] at org.apache.shiro.web.util.RedirectView.sendRedirect(RedirectView.java:300) ~[shiro-web-1.2.0.jar:1.2.0] at org.apache.shiro.web.util.RedirectView.renderMergedOutputModel(RedirectView.java:203) ~[shiro-web-1.2.0.jar:1.2.0] at org.apache.shiro.web.util.WebUtils.issueRedirect(WebUtils.java:525) ~[shiro-web-1.2.0.jar:1.2.0] at org.apache.shiro.web.util.WebUtils.issueRedirect(WebUtils.java:538) ~[shiro-web-1.2.0.jar:1.2.0] at org.tynamo.security.internal.services.impl.LoginContextServiceImpl.redirectToSavedRequest(LoginContextServiceImpl.java:107) ~[tapestry-security-0.5.1.jar:0.5.1] at $LoginContextService_10b2274ebf1e55.redirectToSavedRequest(Unknown Source) ~[na:na] at si.najdi.web.pages.Prijava.onActionFromJsecLoginForm(Prijava.java:153) [na:na] at si.najdi.web.pages.Prijava.dispatchComponentEvent(Prijava.java) [na:na] at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:932) [tapestry-core-5.3.7.jar:na] at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1117) [tapestry-core-5.3.7.jar:na] at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:61) [tapestry-core-5.3.7.jar:na] at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1062) [tapestry-core-5.3.7.jar:na] at org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1059) [tapestry-core-5.3.7.jar:na] at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) [tapestry-ioc-5.3.7.jar:na] at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87) [tapestry-ioc-5.3.7.jar:na] at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124) [tapestry-ioc-5.3.7.jar:na] at org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:146) [tapestry-core-5.3.7.jar:na] at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1058) [tapestry-core-5.3.7.jar:na] at org.apache.tapestry5.internal.services.ComponentEventRequestHandlerImpl.handle(ComponentEventRequestHandlerImpl.java:81) [tapestry-core-5.3.7.jar:na] at org.apache.tapestry5.internal.services.ImmediateActionRenderResponseFilter.handle(ImmediateActionRenderResponseFilter.java:42) [tapestry-core-5.3.7.jar:na] at $ComponentEventRequestHandler_10b2274ebf26e8.handle(Unknown Source) [na:na] at org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42) [tapestry-core-5.3.7.jar:na] at $ComponentEventRequestHandler_10b2274ebf26e8.handle(Unknown Source) [na:na] at org.apache.tapestry5.upload.internal.services.UploadExceptionFilter.handle(UploadExceptionFilter.java:75) [tapestry-upload-5.3.7.jar:na] at $ComponentEventRequestHandler_10b2274ebf26e8.handle(Unknown Source) [na:na] at org.apache.tapestry5.services.TapestryModule$41.handle(TapestryModule.java:2476) [tapestry-core-5.3.7.jar:na] at $ComponentEventRequestHandler_10b2274ebf26e8.handle(Unknown Source) [na:na] at $ComponentEventRequestHandler_10b2274ebf1eda.handle(Unknown Source) [na:na] at org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43) [tapestry-core-5.3.7.jar:na] at org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39) [tapestry-core-5.3.7.jar:na] at $ComponentRequestHandler_10b2274ebf1edc.handleComponentEvent(Unknown Source) [na:na] at org.tynamo.security.SecurityComponentRequestFilter.handleComponentEvent(SecurityComponentRequestFilter.java:41) [tapestry-security-0.5.1.jar:0.5.1] at $ComponentRequestFilter_10b2274ebf1ed9.handleComponentEvent(Unknown Source) [na:na] at $ComponentRequestHandler_10b2274ebf1edc.handleComponentEvent(Unknown Source) [na:na] at $ComponentRequestHandler_10b2274ebf1ea6.handleComponentEvent(Unknown Source) [na:na] at org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:46) [tapestry-core-5.3.7.jar:na] at $Dispatcher_10b2274ebf1ea8.dispatch(Unknown Source) [na:na] at $Dispatcher_10b2274ebf1ea2.dispatch(Unknown Source) [na:na] at org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:302) [tapestry-core-5.3.7.jar:na] at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26) [tapestry-core-5.3.7.jar:na] at $RequestHandler_10b2274ebf1ea3.service(Unknown Source) [na:na] at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902) [tapestry-core-5.3.7.jar:na] at $RequestHandler_10b2274ebf1ea3.service(Unknown Source) [na:na] at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892) [tapestry-core-5.3.7.jar:na] at $RequestHandler_10b2274ebf1ea3.service(Unknown Source) [na:na] at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90) [tapestry-core-5.3.7.jar:na] at $RequestHandler_10b2274ebf1ea3.service(Unknown Source) [na:na] at $RequestHandler_10b2274ebf1e5e.service(Unknown Source) [na:na] at org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:253) [tapestry-core-5.3.7.jar:na] at org.got5.tapestry5.jquery.services.AjaxUploadServletRequestFilter.service(AjaxUploadServletRequestFilter.java:26) [tapestry5-jquery-3.3.3.jar:na] at $HttpServletRequestHandler_10b2274ebf1e60.service(Unknown Source) [na:na] at org.tynamo.security.services.impl.SecurityConfiguration$1.call(SecurityConfiguration.java:56) [tapestry-security-0.5.1.jar:0.5.1] at org.tynamo.security.services.impl.SecurityConfiguration$1.call(SecurityConfiguration.java:54) [tapestry-security-0.5.1.jar:0.5.1] at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) [shiro-core-1.2.0.jar:1.2.0] at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) [shiro-core-1.2.0.jar:1.2.0] at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380) [shiro-core-1.2.0.jar:1.2.0] at org.tynamo.security.services.impl.SecurityConfiguration.service(SecurityConfiguration.java:54) [tapestry-security-0.5.1.jar:0.5.1] at $HttpServletRequestFilter_10b2274ebf1e5c.service(Unknown Source) [na:na] at $HttpServletRequestHandler_10b2274ebf1e60.service(Unknown Source) [na:na] at org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44) [tapestry-upload-5.3.7.jar:na] at $HttpServletRequestHandler_10b2274ebf1e60.service(Unknown Source) [na:na] at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53) [tapestry-core-5.3.7.jar:na] at $HttpServletRequestHandler_10b2274ebf1e60.service(Unknown Source) [na:na] at org.tynamo.resteasy.ResteasyRequestFilter.service(ResteasyRequestFilter.java:100) [tapestry-resteasy-0.3.1.jar:0.3.1] at $HttpServletRequestFilter_10b2274ebf1e5a.service(Unknown Source) [na:na] at $HttpServletRequestHandler_10b2274ebf1e60.service(Unknown Source) [na:na] at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62) [tapestry-core-5.3.7.jar:na] at $HttpServletRequestFilter_10b2274ebf1e58.service(Unknown Source) [na:na] at $HttpServletRequestHandler_10b2274ebf1e60.service(Unknown Source) [na:na] at org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852) [tapestry-core-5.3.7.jar:na] at $HttpServletRequestHandler_10b2274ebf1e60.service(Unknown Source) [na:na] at $HttpServletRequestHandler_10b2274ebf1e57.service(Unknown Source) [na:na] at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171) [tapestry-core-5.3.7.jar:na] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419) [jetty-servlet-8.1.9.v20130131.jar:8.1.9.v20130131] at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:206) [javamelody-core-1.43.0.jar:1.43.0] at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:179) [javamelody-core-1.43.0.jar:1.43.0] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419) [jetty-servlet-8.1.9.v20130131.jar:8.1.9.v20130131] at com.hazelcast.web.WebFilter.doFilter(WebFilter.java:598) [hazelcast-wm-2.5.jar:2.5] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419) [jetty-servlet-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455) [jetty-servlet-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557) [jetty-security-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384) [jetty-servlet-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:126) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.Server.handle(Server.java:368) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:488) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:943) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1004) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:861) [jetty-http-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) [jetty-http-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) [jetty-server-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628) [jetty-io-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) [jetty-io-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) [jetty-util-8.1.9.v20130131.jar:8.1.9.v20130131] at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) [jetty-util-8.1.9.v20130131.jar:8.1.9.v20130131] at java.lang.Thread.run(Thread.java:722) [na:1.7.0_03] Regards, Lidija