La mia applicazione non può aprire la risorsa ServletContext

Ho un progetto web Eclipse Maven in cui utilizzo Spring mvc e Spring security . Quando li truy per lanciarlo, non riesce a intializzare il contesto:

Could not open ServletContext resource [/WEB-INF/spring-dispatcher-servlet.xml]

Maggiori dettagli di seguito:


Questo è il mio web.xml

   Web Manager  index.jsp   org.springframework.web.context.ContextLoaderListener   contextConfigLocation  /WEB-INF/spring/app-config.xml, /WEB-INF/spring/security-config.xml     spring-dispatcher org.springframework.web.servlet.DispatcherServlet 1   spring-dispatcher /    springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy   springSecurityFilterChain /*   

Questa è la mia app-config.xml

                    

questo è il mio security-config.xml

               

il mio problema è quando lancio l’applicazione che ho errore come

 Infos: Loading XML bean definitions from ServletContext resource [/WEB-INF/spring-dispatcher-servlet.xml] févr. 19, 2013 10:50:09 AM org.springframework.web.servlet.FrameworkServlet initServletBean Grave: Context initialization failed org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/spring-dispatcher-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/spring-dispatcher-servlet.xml] at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436) at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133) at javax.servlet.GenericServlet.init(GenericServlet.java:212) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4350) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4659) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) at org.apache.catalina.startup.Embedded.start(Embedded.java:825) at org.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558) at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/spring-dispatcher-servlet.xml] at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:140) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328) ... 48 more 

Dice che non trova /WEB-INF/spring-dispatcher-servlet.xml ma non l’ho messo in web.xml , il mio file di configurazione è app-config.xml

Citazione dal documento di riferimento di spring :

All’inizializzazione di un DispatcherServlet, Spring MVC cerca un file denominato [nome-servlet] -servlet.xml nella directory WEB-INF della tua applicazione Web e crea i bean definiti lì …

Il tuo servlet è chiamato spring-dispatcher , quindi cerca /WEB-INF/spring-dispatcher-servlet.xml . È necessario avere questa configurazione servlet e definire i bean relativi al Web (come controller, resolver di visualizzazione, ecc.). Vedi la documentazione collegata per chiarimenti sulla relazione dei contesti servlet al contesto dell’applicazione globale (che è l’ app-config.xml nel tuo caso).

Un’altra cosa, se non ti piace la convenzione di denominazione del servlet config xml, puoi specificare esplicitamente la tua configurazione:

  spring-dispatcher org.springframework.web.servlet.DispatcherServlet  contextConfigLocation /WEB-INF/spring/appServlet/servlet-context.xml  1  

Se si verifica questo errore con una configurazione Java, di solito è perché si dimentica di passare il contesto dell’applicazione al costruttore DispatcherServlet :

 AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(WebConfig.class); ServletRegistration.Dynamic dispatcher = sc.addServlet("dispatcher", new DispatcherServlet()); // <-- no constructor args! dispatcher.setLoadOnStartup(1); dispatcher.addMapping("/*"); 

Risolvilo aggiungendo il contesto come argomento del costruttore:

 AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(WebConfig.class); ServletRegistration.Dynamic dispatcher = sc.addServlet("dispatcher", new DispatcherServlet(ctx)); // <-- hooray! Spring doesn't look for XML files! dispatcher.setLoadOnStartup(1); dispatcher.addMapping("/*"); 

Assicurati che il blocco del tuo plug-in di guerra in pom.xml includa tutti i file (specialmente i file xml) mentre costruisci la guerra. Ma non è necessario includere i file .java.

   org.apache.maven.plugins maven-war-plugin 2.5    WebContent  **/*.*   *.java    WebContent/WEB-INF/web.xml   

Ho riscontrato questa eccezione in WebLogic, si scopre che si tratta di un bug in WebLogic. Vedi qui per maggiori dettagli: Eccezione Spring Boot: imansible aprire la risorsa ServletContext [/WEB-INF/dispatcherServlet-servlet.xml]