2014-10-17 70 views
0

这里是我的web.xml的片段,涉及到Spring配置无法打开ServletContext的资源的applicationContext.xml

<servlet> 
    <servlet-name>dispatcherServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/context/root-ctx.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>dispatcherServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

这里的根ctx.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 

    <import resource="mvc-ctx.xml"/> 
    <import resource="services.xml"/> 
    <import resource="hibernate-admin-cfg.xml"/> 
    <import resource="spring-security-ctx.xml"/> 
</beans> 

运行时遇到我的应用这个错误

Ĵ

ava.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml] 
     at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:141) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330) 
     at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:216) 
     at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187) 
     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:129) 
     at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:452) 
     at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 
     at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:798) 
     at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:444) 
     at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:789) 
     at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:294) 
     at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1341) 
     at org.eclipse.jetty.maven.plugin.JettyWebAppContext.startWebapp(JettyWebAppContext.java:296) 
     at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1334) 
     at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741) 
     at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:497) 
     at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:365) 
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
     at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) 
     at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) 
     at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) 
     at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:163) 
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
     at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) 
     at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) 
     at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) 
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
     at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) 
     at org.eclipse.jetty.server.Server.start(Server.java:387) 
     at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) 
     at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) 
     at org.eclipse.jetty.server.Server.doStart(Server.java:354) 
     at org.eclipse.jetty.maven.plugin.JettyServer.doStart(JettyServer.java:73) 
     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) 
     at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:534) 
     at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:357) 
     at org.eclipse.jetty.maven.plugin.JettyRunMojo.execute(JettyRunMojo.java:167) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) 
     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:116) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 
     at 

org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:158) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:483) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 

我知道的不存在,我移动了包含mvc配置,spring-security-config等的root-ctx.xml主配置,但是这个错误仍然显示出来。我错过了什么?

回答

1

ContextLoader的Javadoc的ContextLoaderListener超类,规定

如果没有明确指定,上下文实现应该 使用默认位置(与XmlWebApplicationContext"/WEB-INF/applicationContext.xml")。

这就是发生在这里。您尚未提供contextConfigLocation的上下文参数。因此它使用其默认值。它应该指的是root-ctx.xml

+0

我该如何配置它?我想将所有spring相关的bean声明为一个xml,并将它们作为资源导入 – user962206 2014-10-17 15:21:32

+0

@ user962206请参阅文档[here](http://docs.spring.io/spring/docs/current/spring-framework-reference/html /mvc.html#mvc-servlet)。只需用'root-ctx.xml'的位置值来声明''。你可能还想声明'ApplicationContext'的类型来加载它。 – 2014-10-17 15:24:35

+0

那么,我会选择退出调度程序servlet的init参数吗? – user962206 2014-10-18 01:03:55

相关问题