2009-09-28 6 views
5

मैं वर्तमान में जीडब्ल्यूटी और स्प्रिंग के साथ प्रयोग कर रहा हूं। अधिक विशेष रूप से मैं सर्वर पक्ष पर वसंत के साथ काम करने के लिए ग्रीटिंग सेवा नमूना बनाना चाहता था।जीडब्ल्यूटी + स्प्रिंग: getServletContext() पर कॉल करें NullPointerException

अब मैं उल्लेख निर्देशों का पालन किया और: वहाँ (मैं उन्हें यहाँ जोड़ने कर रहा हूँ के बाद से आप में से कुछ दिलचस्पी हो सकती है) इस साकार के लिए उपलब्ध लेख के एक जोड़े हैं जीडब्ल्यूटी होस्टेड मोड में सबकुछ लॉन्च करते समय, सर्वर-साइड पर सेवा को सफलतापूर्वक भी कहा जाता है। लेकिन इससे पहले कि ग्राहक को प्रतिक्रिया वापस भेज दी जा रही है, मुझे एक नलपॉन्टर अपवाद प्राप्त होता है जब getServletContext() को कुछ स्प्रिंग फ्रेमवर्क क्लास द्वारा आंतरिक रूप से बुलाया जा रहा है। स्टैकट्रेस पीछा कर रहा है:,
पर मैक OSX के विकास जावा संस्करण 1.6:

antlr-3.0.1.jar 
appengine-api-1.0-sdk-1.2.5.jar 
appengine-api-labs-1.2.5.jar 
commons-logging.jar 
datanucleus-appengine-1.0.3.jar 
datanucleus-core-1.1.5.jar 
datanucleus-jpa-1.1.5.jar 
geronimo-jpa_3.0_spec-1.1.1.jar 
geronimo-jta_1.1_spec-1.1.1.jar 
geronimo-servlet_2.5_spec-1.2.jar 
gwt-servlet.jar 
jdo2-api-2.3-eb.jar 
org.springframework.asm-3.0.0.RC1.jar 
org.springframework.beans-3.0.0.RC1.jar 
org.springframework.context-3.0.0.RC1.jar 
org.springframework.context.support-3.0.0.RC1.jar 
org.springframework.core-3.0.0.RC1.jar 
org.springframework.expression-3.0.0.RC1.jar 
org.springframework.orm-3.0.0.RC1.jar 
org.springframework.web-3.0.0.RC1.jar 
org.springframework.web.servlet-3.0.0.RC1.jar 
spring-dao.jar 

इससे भी अधिक जानकारी:

WARNING: Nested in org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException: 
java.lang.NullPointerException 
    at javax.servlet.GenericServlet.getServletContext(GenericServlet.java:163) 
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.doUnexpectedFailure(RemoteServiceServlet.java:284) 
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:99) 
    at com.jsdev.devbook.server.GWTController.handleRequest(GWTController.java:51) 
    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:781) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:726) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:636) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:556) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:713) 
    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.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:121) 
    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.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) 
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:313) 
    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.content(HttpConnection.java:844) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396) 
    at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442) 

यहाँ libs मैं अपने सर्वर पर तैनात की सूची दी गई है/GWT मोड निर्देशिका की मेजबानी की .0_15।

क्या किसी के पास कोई सुराग है कि समस्या क्या हो सकती है?

Thx बहुत कुछ।

उत्तर

4

बस इस मुद्दे को मिला। GWTController कार्यान्वयन को सर्वलेट संदर्भ को अवगत कराया जाना है। यह ServletContextAware इंटरफ़ेस को कार्यान्वित करके और संदर्भ को इंजेक्शन देने के लिए getServletContext() और setServletContext(..) विधियों को ओवरराइड करके किया जा सकता है।

मैं बस published a blog post जो इस मुद्दे का वर्णन करता है और समाधान को और विस्तार से प्रदान करता है। संकेत के लिए

0

हमें एक ही समस्या थी और पाया कि javax.servlet.GenericServlet पर फ़ील्ड शून्य था। जीडब्ल्यूटी का RemoteServiceServletlog(...) पर कॉल कर रहा था, जिसे बदले में getServletName() कहा गया था जो एनपीई config शून्य के कारण था।

हमारा समाधान getServletName() overide करने के लिए किया गया था:

public String getServletName() { 
    // Override as GenericServlet does config.getServletName() which NPEs 
    // as config is null. This causes NPEs when the log(...) methods are 
    // invoked. 
    return service.getClass().getSimpleName(); 
} 

आप यह पता लगाने सकता है क्यों ServletConfig सेट नहीं किया जा रहा है या जैसे हमने किया कुछ तरीकों को ओवरराइड।

+0

thx, लेकिन ऐसा लगता है कि मेरी समस्या भी बदतर है। मेरे पास ServletName पर सिर्फ एनपीई नहीं है, लेकिन पूरी तरह से ServletContext पर पूरी तरह से है। ऐसा लगता है कि समस्या सर्वलेट कंटेनर पर है ... शायद जीडब्ल्यूटी के साथ एक ओएसएक्स समस्या है? – Juri

संबंधित मुद्दे