Hi, I am using App Engine 1.2.6 and GWT 1.7.1. I have a App Engine application that uses GWT and authenticates users with Google Accounts. I have been able to make the application force a user to sign in with the Google Account and then redirect the user to the page that was requested.
I am having trouble with the sign-out part. Upon sign-out, I want the application to show an HTML page that says that the user has been signed out and provides a link to sing back it. The name of this file is loggedout.html and it resides at the top level of the WAR/ folder. I am using the Struts framework in the web application and I do the following in the Struts Action that gets executed when the user chooses to log out of the application. UserService userService = UserServiceFactory.getUserService (); return new ActionForward (userService.createLogoutURL (“/ loggedout.html”)); This works fine when the application is running in the embedded browser in the development mode. However, when I deploy the application to the App Engine, I get a NullPointerException with the following stacktrace. Any idea what’s going on? Thanks, Viji Uncaught exception from servlet java.lang.NullPointerException at org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java: 113) at org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java: 96) at org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java: 54) at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java: 51) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java: 191) at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java: 305) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java: 191) at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java: 283) at org.apache.struts.action.ActionServlet.process(ActionServlet.java: 1913) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java: 449) at javax.servlet.http.HttpServlet.service(HttpServlet.java:693) at javax.servlet.http.HttpServlet.service(HttpServlet.java:806) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: 487) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1093) at com.ace.prototype.server.filters.AuthenticationFilter.doFilter(AuthenticationFilter.java: 30) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java: 97) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java: 35) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java: 43) at org.mortbay.jetty.servlet.ServletHandler $CachedChain.doFilter(ServletHandler.java:1084) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: 360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java: 216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java: 181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: 712) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java: 405) at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java: 238) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: 139) at org.mortbay.jetty.Server.handle(Server.java:313) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: 506) at org.mortbay.jetty.HttpConnection $RequestHandler.headerComplete(HttpConnection.java:830) at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java: 76) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381) at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java: 135) at com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java: 235) at com.google.apphosting.base.RuntimePb$EvaluationRuntime $6.handleBlockingRequest(RuntimePb.java:5485) at com.google.apphosting.base.RuntimePb$EvaluationRuntime $6.handleBlockingRequest(RuntimePb.java:5483) at com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java: 24) at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java: 363) at com.google.net.rpc.impl.Server$2.run(Server.java:837) at com.google.tracing.LocalTraceSpanRunnable.run(LocalTraceSpanRunnable.java: 56) at com.google.tracing.LocalTraceSpanBuilder.internalContinueSpan(LocalTraceSpanBuilder.java: 536) at com.google.net.rpc.impl.Server.startRpc(Server.java:792) at com.google.net.rpc.impl.Server.processRequest(Server.java:367) at com.google.net.rpc.impl.ServerConnection.messageReceived(ServerConnection.java: 448) at com.google.net.rpc.impl.RpcConnection.parseMessages(RpcConnection.java: 319) at com.google.net.rpc.impl.RpcConnection.dataReceived(RpcConnection.java: 290) at com.google.net.async.Connection.handleReadEvent(Connection.java: 474) at com.google.net.async.EventDispatcher.processNetworkEvents(EventDispatcher.java: 774) at com.google.net.async.EventDispatcher.internalLoop(EventDispatcher.java: 205) at com.google.net.async.EventDispatcher.loop(EventDispatcher.java: 101) at com.google.net.rpc.RpcService.runUntilServerShutdown(RpcService.java: 251) at com.google.apphosting.runtime.JavaRuntime $RpcRunnable.run(JavaRuntime.java:394) at java.lang.Thread.run(Unknown Source) Unexpected exception from servlet: java.lang.NullPointerException -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.