Hi, I am trying to use a GWT service with Spring. I am using DispatcherServlet from Spring, GWTHandler and my service is defined as a bean in a mywebapp-servlet.xml file. I have also beans intialized at startup with ContextLoadListener. My service works fine except if I try to call getServletContext from it. In that case I have a NullPointerException. As a consequence I can not make reference o my other beans from my service.
java.lang.NullPointerException: null at com.google.gwt.user.server.rpc.RPCServletUtils.writeResponseForUnexpectedFailure (RPCServletUtils.java:248) at com.google.gwt.user.server.rpc.RemoteServiceServlet.doUnexpectedFailure (RemoteServiceServlet.java:285) at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost (RemoteServiceServlet.java:99) at com.mycompany.admin.admintool.server.GWTController.handleRequest (GWTController.java:35) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle Details of my web.xml <servlet> <servlet-name>mywebapp</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</ servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mywebapp</servlet-name> <url-pattern>/geofamilyadmingwt/mywebapp.rpc</url-pattern> </servlet-mapping> I have some other beans that are initialized with ContextLoaderListener : <listener> <listener- class>org.springframework.web.context.ContextLoaderListener</listener- class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/main-context.xml /WEB-INF/dao-context.xml /WEB- INF/business-context.xml /WEB-INF/drivers-context.xml /WEB-INF/map- context.xml</param-value> </context-param> Code of my GWTController : public class GWTController extends RemoteServiceServlet implements Controller { // Instance fields private RemoteService remoteService; private Class remoteServiceClass; private ServletContext servletContext; // Public methods /** * Call GWT's RemoteService doPost() method and return null. * * @param request The current HTTP request * @param response The current HTTP response * @return A ModelAndView to render, or null if handled directly * @throws Exception In case of errors */ public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { super.doPost(request, response); return null; // response handled by GWT RPC over XmlHttpRequest } /** * Process the RPC request encoded into the payload string and return a * string that encodes either the method return or an exception thrown by * it. * @param payload The RPC payload */ public String processCall(String payload) throws SerializationException { try { RPCRequest rpcRequest = RPC.decodeRequest(payload, this.remoteServiceClass); // delegate work to the spring injected service return RPC.invokeAndEncodeResponse(this.remoteService, rpcRequest .getMethod(), rpcRequest.getParameters()); } catch (IncompatibleRemoteServiceException e) { getServletContext() .log( "An IncompatibleRemoteServiceException was thrown while processing this call.", e); return RPC.encodeResponseForFailure(null, e); } } @Override public ServletContext getServletContext() { return servletContext; } public void setServletContext(ServletContext servletContext) { this.servletContext = servletContext; } /** * Setter for Spring injection of the GWT RemoteService object. * * @param RemoteService * The GWT RemoteService implementation that will be delegated to * by the {...@code GWTController}. */ public void setRemoteService(RemoteService remoteService) { this.remoteService = remoteService; this.remoteServiceClass = this.remoteService.getClass(); } } Code of my service implementation: @SuppressWarnings("serial") public class GreetingServiceImpl extends RemoteServiceServlet implements GreetingService { private transient ApplicationContext ac; private ClientBusiness clientBusiness; public String greetServer(String clientLogin) { String result = "Hello"; boolean res; String serverInfo = this.getServletContext().getServerInfo(); <-- throws the NullPointerException return result; } I tried to override getServletContext method with the code below but no success. @Override public ServletContext getServletContext() { return getThreadLocalRequest().getSession().getServletContext (); } How can I solve this problem ? Thanks, C. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to Google-Web-Toolkit@googlegroups.com To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/Google-Web-Toolkit?hl=en -~----------~----~----~----~------~----~------~--~---