Error : Could not open ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]
对于web项目集成springmvc框架上下本的初始化
参考开涛哥的博客http://jinnianshilongnian.iteye.com/blog/1602617
项目使用spring-quartz定时任务发现任务居然定时执行2次,最大的可能性就是此xml配置被执行了2次。
最终找到是web.xml配置的spring上下文初始化环境所致。
在web监听中初始化一次,又在org.springframework.web.servlet.DispatcherServlet中初始化一次。
一,web容器初始化,springmvc继承
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/mvc-servlet.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>com.xybb.system.listener.SystemInitListener</listener-class> </listener>
二,org.springframework.web.servlet.DispatcherServlet初始化
<!--spring servlet拦截--> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
我的配置都放到上面的mvc-servlet.xml里面,因此指定了一个空文件给他,使上下文只初始化一次。
采用如上配置确实无误,但是项目启动后可正常运行,但是居然抛异常。
追随错误断点,发现。
项目中的初始化文件都正常加载后,发现错误的文件加载,看路径即解决了问题。
因为这个错误一直修改web.xml文件配置,导致上述描述的定时任务bug,最后发现其实根本不会springmvc了。
其实对于上述错误,如果看懂这个单词也就早解决了~~
有时候是找bug原因的方式不对~~
ps:有次,朋友让我看项目怎么跑不起来,直接localhost:8080/就可以访问了。
找了找发现他项目叫ROOT~~