2010-11-30 12 views
5

के साथ जेटी लोड करने के लिए स्प्रिंग का उपयोग करते समय ServletContext शून्य है, हम जेटी को कॉन्फ़िगर करने और सब कुछ लोड करने के लिए वसंत का उपयोग कर रहे हैं, और मैं वेब सेवाओं के लिए जर्सी का उपयोग करने और जेटी/स्प्रिंग लाइब्रेरी का उपयोग करने की कोशिश कर रहा हूं कि मैं अपने जर्सी संसाधनों में कुछ सेवा कक्षाओं को स्वत: कर सकता हूं, लेकिन मुझे सर्वर शुरू करने में परेशानी हो रही है क्योंकि यह हमेशा कहता है कि ServletContext शून्य है।जर्सी/जैक्स-डब्ल्यूएस

 <property name="handler"> 
     <bean id="handlers" class="org.eclipse.jetty.server.handler.HandlerList"> 
      <property name="handlers"> 
       <list> 
        <bean class="org.eclipse.jetty.servlet.ServletContextHandler"> 
         <property name="eventListeners"> 
          <list> 
           <bean class="org.springframework.web.context.ContextLoaderListener" /> 
           <bean 
            class="org.springframework.web.context.request.RequestContextListener" /> 
          </list> 
         </property> 
         <property name="initParams"> 
          <map> 
           <entry> 
            <key> 
             <value>contextConfigLocation</value> 
            </key> 
            <value>classpath:applicationContext.xml</value> 
           </entry> 
          </map> 
         </property> 
        </bean> 
        <bean class="org.eclipse.jetty.servlet.ServletHandler"> 



         <property name="servlets"> 
          <list> 
           <bean class="org.eclipse.jetty.servlet.ServletHolder"> 
            <property name="name" value="Jersey" /> 
            <property name="servlet"> 
             <bean 
              class="com.sun.jersey.spi.spring.container.servlet.SpringServlet" /> 
            </property> 
            <property name="initParameters"> 
             <map> 
              <entry> 
               <key> 
                <value>com.sun.jersey.config.property.packages</value> 
               </key> 
               <value>com.mycompany.ws.resource</value> 
              </entry> 
              <entry> 
               <key> 
                <value>contextConfigLocation</value> 
               </key> 
               <value>classpath:applicationContext.xml</value> 
              </entry> 
             </map> 
            </property> 

           </bean> 
          </list> 
         </property> 

मैं यहां दिए गए निर्देशों का पालन किया:

यहाँ मेरी वसंत config एक्सएमएल है http://blogs.oracle.com/enterprisetechtips/entry/jersey_and_spring जर्सी और वसंत एकीकृत करने के लिए है, लेकिन अंतर यह है कि मैं एक एम्बेडेड घाट सर्वर वसंत के साथ कॉन्फ़िगर किया गया है।

मुझे यकीन नहीं है कि मुझे निम्न त्रुटि क्यों मिल रही है। मैंने सोचा कि जेटी सर्वलेट कॉन्टेक्स्ट हैंडलर उनके दस्तावेज़ीकरण से सर्वलेट संदर्भ था।

2010-11-30 23:19:05,177 [Thread-0] INFO [org.springframework.web.context.ContextLoader]: Root WebApplicationContext: initialization completed in 177 ms 
Nov 30, 2010 11:19:05 PM com.sun.jersey.api.core.PackagesResourceConfig init 
INFO: Scanning for root resource and provider classes in the packages: 
    com.traveladnetwork.ws.resource.ad.server 
Nov 30, 2010 11:19:05 PM com.sun.jersey.api.core.PackagesResourceConfig init 
INFO: Root resource classes found: 
    class com.mycompany.ws.resource.TargetResource 
    class com.mycompany.ws.resource.ReportResource 
    class com.mycompany.ws.resource.HelloWorldResource 
Nov 30, 2010 11:19:05 PM com.sun.jersey.api.core.PackagesResourceConfig init 
INFO: Provider classes found: 
Nov 30, 2010 11:19:05 PM com.sun.jersey.spi.spring.container.servlet.SpringServlet getContext 
INFO: Creating new child context from classpath:applicationContext.xml 
Nov 30, 2010 11:19:05 PM com.sun.jersey.spi.spring.container.servlet.SpringServlet initiate 
**SEVERE: Exception occurred when intialization 
java.lang.IllegalArgumentException: ServletContext must not be null** 
    at org.springframework.util.Assert.notNull(Assert.java:112) 
    at org.springframework.web.context.support.WebApplicationContextUtils.getWebApplicationContext(WebApplicationContextUtils.java:96) 
    at org.springframework.web.context.support.WebApplicationContextUtils.getWebApplicationContext(WebApplicationContextUtils.java:86) 
    at org.springframework.web.context.support.WebApplicationContextUtils.getRequiredWebApplicationContext(WebApplicationContextUtils.java:68) 
    at com.sun.jersey.spi.spring.container.servlet.SpringServlet.getDefaultContext(SpringServlet.java:128) 
    at com.sun.jersey.spi.spring.container.servlet.SpringServlet.getChildContext(SpringServlet.java:119) 
    at com.sun.jersey.spi.spring.container.servlet.SpringServlet.getContext(SpringServlet.java:113) 
    at com.sun.jersey.spi.spring.container.servlet.SpringServlet.initiate(SpringServlet.java:99) 
    at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:253) 
    at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:521) 
    at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:199) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:308) 
    at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:471) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:241) 
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:421) 
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:245) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:699) 
    at org.eclipse.jetty.servlet.ServletHandler.doStart(ServletHandler.java:155) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 
    at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:165) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:92) 
    at org.eclipse.jetty.server.Server.doStart(Server.java:228) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) 
    at com.mycompany.common.service.SpringServiceImpl.startService(SpringServiceImpl.java:52) 
    at com.traveladnetwork.common.service.StartImpl.run(StartImpl.java:42) 
    at java.lang.Thread.run(Thread.java:637) 
2010-11-30 23:19:05.412:INFO::Started [email protected]:9932 
2010-11-30 23:19:05,413 [Thread-0] INFO [com.mycompany.common.service.StartImpl]: Started in 1950 ms 

उत्तर

1

यह हो सकता है कि क्योंकि आप वसंत के भीतर अपने सर्वलेट कंटेनर (बल्कि तो दूसरे के चारों ओर जिस तरह से) चला रहे हैं यह ServletContext नहीं मिल रहा।

आपके पास दो विकल्प मिल गया है:

  1. एक कार्यक्रम संबंधी बूटस्ट्रैप जो इसके अंदर स्प्रिंग अप लोड करता है के साथ घाट शुरू की कोशिश करो सर्वलेट संदर्भ (Deploying a servlet programmatically with Jetty)
  2. है दो कंटेनर परिभाषाओं में अपने applicationContext.xml विभाजित करें: उन जेटी शुरू करने के लिए जरूरी है और वे जो वैध ServletContext के बिना शुरू नहीं कर सकते हैं। जिनके लिए एक वैध सर्वलेट संदर्भ की आवश्यकता है, वे शायद बीन क्लास "सर्वलेट कॉन्टेक्स्ट हैंडलर" के लिए "initParams" में हों, जबकि वर्तमान में आपको एक ही एप्लीकेशन Context.xml दो बार परिभाषित किया गया है।