मैं एक एक्सएमएल आधारित स्प्रिंग एमवीसी ऐप को जावा कॉन्फ़िगरेशन आधारित ऐप में स्थानांतरित करने का प्रयास कर रहा हूं। मैवेन में उपलब्ध विभिन्न java.servlet कक्षाओं के साथ एक मेल नहीं है। उदाहरण के लिए, कुछ addServlet() विधि प्रदान करते हैं और कुछ नहीं करते हैं।SpringServletContainerInitializer को javax.servlet में नहीं डाला जा सकता है। सेर्लेटकॉन्टेनरइनेनाइज़र
public class MyWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) throws ServletException {
AnnotationConfigWebApplicationContext rootContext =
new AnnotationConfigWebApplicationContext();
rootContext.register(JpaSandboxConf.class);
ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet());
registration.setLoadOnStartup(1);
registration.addMapping("/myapp/*");
}
}
कौन सा नहीं बल्कि अविवादास्पद लगता है:
यहाँ मेरी config वर्ग है। आदेश
container.addServlet()
विधि पाने के लिए, मैं शामिल यह मेरा पोम में:
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>7.0.30</version>
</dependency>
मैं इस कोशिश की, लेकिन प्रवेश से ServletContext वर्ग नीचे काम नहीं किया (में है कि यह प्रदान didnot addServlet() विधि):
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>com.springsource.javax.servlet</artifactId>
<version>2.5.0</version>
<scope>provided</scope>
</dependency>
जब मैं का उपयोग कर इस चलाने के लिए प्रयास
mvn clean tomcat7:run
मैं दुख प्राप्त
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/]]
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1130)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:782)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1568)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1558)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
... 7 more
Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer
at org.apache.catalina.startup.ContextConfig.getServletContainerInitializer(ContextConfig.java:1543)
at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1464)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1190)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:825)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:300)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
मुझे लगता है कि एक वर्ग javax.servlet से स्प्रिंग ढांचे से आ रहा है और अन्य है, लेकिन एक बार फिर से, विधि वसंत प्रदान की कक्षा से मौजूद नहीं है (जो निराशाजनक होता है, क्योंकि यह उदाहरण वसंत 3.2 दस्तावेज के भीतर ही मौजूद है।
मैं वसंत 3.2 का उपयोग कर रहा हूं। मैं ग्रहण का उपयोग नहीं कर रहा हूं (सभी उदाहरण ग्रहण आधारित हैं, मैं इंटेलिजे में हूं)। यह एक मेवेन प्रोजेक्ट
मैं आपकी सहायता की सराहना करता हूं।
के संभावित डुप्लिकेट [ServletDispatcher मेरी वसंत परियोजना में Javax.servlet.Servlet अपवाद में ढाला नहीं जा सकता है] "प्रकाशित करने के बिना मॉड्यूल की सेवा" (http://stackoverflow.com/questions/11704069/servletdispatcher-cannot-be-cast-to-javax-servlet-servlet-exception-in-my-spring) – Rugal