Java GWT RemoteServiceServlet的GWTP NullPointerException

Java GWT RemoteServiceServlet的GWTP NullPointerException,java,spring,gwt,nullpointerexception,gwtp,Java,Spring,Gwt,Nullpointerexception,Gwtp,当我部署到Tomcat时,我会得到一个NPE(这不是每次都会发生,只是在我重新部署时才会发生)。当RemoteServiceServlet尝试加载SerializationPolicy(..)时,错误为NullPointerException。我注意到问题在于servlet.log方法调用,当loadSerializationPolicy找不到序列化策略文件时(这似乎是另一个问题?可能不是,序列化将跳过它,idk),因此它尝试记录它,但遇到了NPE 正如这里所解释的:问题是RemoteServi

当我部署到Tomcat时,我会得到一个NPE(这不是每次都会发生,只是在我重新部署时才会发生)。当RemoteServiceServlet尝试加载SerializationPolicy(..)时,错误为NullPointerException。我注意到问题在于servlet.log方法调用,当loadSerializationPolicy找不到序列化策略文件时(这似乎是另一个问题?可能不是,序列化将跳过它,idk),因此它尝试记录它,但遇到了NPE

正如这里所解释的:问题是RemoteServiceServlet找不到记录器?我尝试了建议的解决方案,该解决方案是在我的项目中创建一个新的DispatchServiceImpl,用ServletConfig对象替换标准GWTP服务实现并实现ServletConfigAware,并覆盖getServletConfig()和setServletConfig(…)。然而,这并没有解决我的问题。当我只使用Chrome浏览器Firefox和IE(我已经测试过)时,这种情况不会发生。我想Chrome没有找不到策略文件吧?或者不是在执行不必要的检查

java.lang.NullPointerException
位于javax.servlet.GenericServlet.getServletName(GenericServlet.java:238)
位于javax.servlet.GenericServlet.log(GenericServlet.java:190)
位于com.google.gwt.user.server.rpc.RemoteServiceServlet.loadSerializationPolicy(RemoteServiceServlet.java:103)
位于com.google.gwt.user.server.rpc.RemoteServiceServlet.doGetSerializationPolicy(RemoteServiceServlet.java:293)
位于com.google.gwt.user.server.rpc.RemoteServiceServlet.getSerializationPolicy(RemoteServiceServlet.java:157)
位于com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.prepareToRead(ServerSerializationStreamReader.java:491)
位于com.google.gwt.user.server.rpc.rpc.decodeRequest(rpc.java:240)
位于com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:206)
位于com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
位于com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
在com.gwtplatform.dispatch.server.spring.DispatchServiceImpl.handleRequest(DispatchServiceImpl.java:68)上
位于org.springframework.web.context.support.HttpRequestHandlerServlet.service(HttpRequestHandlerServlet.java:68)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
位于java.lang.Thread.run(未知源)
现在这个问题不会在开发模式下发生。只有在随机的情况下,我才重新部署到Tomcat。如果任何人有任何有用的建议,或者以前遇到过这个问题,我将非常感谢您的帮助

以下是一些可能有助于识别问题的类:

DispatchServiceImpl.java(取代标准GWTP DispatchServiceImpl)

@组件(“分派”)
公共类DispatchServiceImpl扩展AbstractDispatchServiceImpl实现HttpRequestHandler,
ServletContextAware,ServletConfigAware{
私有静态最终长serialVersionUID=136176741488585959L;
私有ServletContext ServletContext;
私有ServletConfig ServletConfig;
@自动连线(必需=错误)
受保护的字符串securityCookieName;
@自动连线
公共调度ServiceImpl(最终记录器、最终调度、,
请求提供者(请求提供者){
超级(记录器、调度、请求提供者);
}
@凌驾
公共字符串getSecurityCookieName(){
返回securityCookieName;
}
public void setSecurityCookieName(字符串securityCookieName){
this.securitycookeName=securitycookeName;
}
@凌驾
public void handleRequest(HttpServletRequest请求,HttpServletResponse响应)
抛出ServletException、IOException{
doPost(请求、响应);
}
@凌驾
公共void setServletContext(ServletContext arg0){
this.servletContext=arg0;
}
@凌驾
公共ServletContext getServletContext(){
返回servletContext;
}
@凌驾
公共无效设置ServletConfig(ServletConfig ServletConfig){
this.servletConfig=servletConfig;
}
@凌驾
公共ServletConfig getServletConfig(){
返回servletConfig;
}
}
ServerModule.java

/**
*绑定处理程序和配置的模块。
*/
@配置
@进口({
DefaultModule.class,
PropertyModule.class,
ConfigLoader.class
})
@组件扫描({
“nz.co.doltech.ims”,
“nz.co.doltech.ims.framework.extensions.platform.dispatch.server.spring”
})
@ImportResource(“类路径:META-INF/properties.x