我可以发现了一个SpringMVC框架的Bug,描述如下:
2017-06-12 19:18
281 查看
摘要: web.xml里只配置了一个Servlet(DispatcherServlet),初始化了2个MVC上下文,这是不正确的
(1)
配置文件web.xml其中的片段:
(2)
使用如下代码,获取ServletContext:
(3)上面代码的执行Log:
WAC getServletContextName /
WAC getClassLoader WebAppClassLoader=105146840@64469d8
WAC getClass class org.eclipse.jetty.webapp.WebAppContext$Context
WAC getAttributeNames java.util.Collections$3@5c9d540c
WAC getContextPath
WAC getInitParameterNames java.util.Collections$3@126898e2
WAC getServerInfo jetty/9.4.1.v20170120
WAC getSessionCookieConfig org.eclipse.jetty.server.session.SessionHandler$CookieConfig@90ed286
javax.servlet.context.tempdir : E:\JavaTryCatch\spring-mvc-showcase\target\tmp
org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern : .*/javax.servlet-[^/]*\.jar$|.*/servlet-api-[^/]*\.jar$|.*javax.servlet.jsp.jstl-[^/]*\.jar|.*taglibs-standard-impl-.*\.jar
org.eclipse.jetty.util.DecoratedObjectFactory : org.eclipse.jetty.util.DecoratedObjectFactory[decorators=3]
org.springframework.web.servlet.FrameworkServlet.CONTEXT.OOXXappServlet : WebApplicationContext for namespace 'OOXXappServlet-servlet': startup date [Mon Jun 12 18:22:41 CST 2017];parent: Root WebApplicationContext
org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.SCI : WebSocketUpgradeFilter[configuration=org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration@7a191211]
org.eclipse.jetty.resource.postOverlay : file:///E:/JavaTryCatch/spring-mvc-showcase/src/main/webapp/
org.eclipse.jetty.lifecyleCallbackCollection : org.eclipse.jetty.plus.annotation.LifeCycleCallbackCollection@4c92146a
resourceCache : ResourceCache[null,org.eclipse.jetty.servlet.DefaultServlet@1aeb2a92]@1703825835
org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration : org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration@7a191211
org.apache.tomcat.InstanceManager : org.apache.tomcat.SimpleInstanceManager@57b55e91
org.eclipse.jetty.tmpdirConfigured : true
org.eclipse.jetty.server.Executor : qtp2189588{STARTED,8<=13<=200,i=7,q=0}
org.eclipse.jetty.injectionCollection : org.eclipse.jetty.plus.annotation.InjectionCollection@bd82149
org.eclipse.jetty.runAsCollection : org.eclipse.jetty.plus.annotation.RunAsCollection@4824251a
org.apache.jasper.compiler.ELInterpreter : org.apache.jasper.compiler.ELInterpreterFactory$DefaultELInterpreter@5fb026bc
org.eclipse.jetty.containerInitializerStarter : org.eclipse.jetty.annotations.ServletContainerInitializersStarter@220caa0d
org.apache.jasper.compiler.TldCache : org.apache.jasper.compiler.TldCache@6814156c
org.springframework.web.servlet.FrameworkServlet.CONTEXT.dispatcherServlet : WebApplicationContext for namespace 'dispatcherServlet-servlet': startup date [Mon Jun 12 18:22:38 CST 2017]; parent: Root WebApplicationContext
org.springframework.web.context.WebApplicationContext.ROOT : Root WebApplicationContext: startup date [Mon Jun 12 18:22:38 CST 2017]; root of context hierarchy
org.springframework.web.context.support.ServletContextScope : org.springframework.web.context.support.ServletContextScope@171f181
org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter : WebSocketUpgradeFilter[configuration=org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration@7a191211]
javax.websocket.server.ServerContainer : org.eclipse.jetty.websocket.jsr356.server.ServerContainer@5faaa2d5
org.apache.jasper.runtime.JspApplicationContextImpl : org.apache.jasper.runtime.JspApplicationContextImpl@18b127ef
(4)问题描述
可以在上面的记录中,attribute里有2个“子上下文”:
org.springframework.web.servlet.FrameworkServlet.CONTEXT.OOXXappServlet 和 org.springframework.web.servlet.FrameworkServlet.CONTEXT.dispatcherServlet
其value分别是:
WebApplicationContext for namespace 'dispatcherServlet-servlet': startup date [Mon Jun 12 18:22:38 CST 2017]; parent: Root WebApplicationContext
和 WebApplicationContext for namespace 'OOXXappServlet-servlet': startup date [Mon Jun 12 18:22:41 CST 2017]; parent: Root WebApplicationContext
也就是说,同时初始化了2个MVC上下文,这是不合理的啊;所以,应该算是一个Bug吧!
(1)
配置文件web.xml其中的片段:
<servlet> <servlet-name>OOXXappServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/OOXXappServlet/servlet-context.xml</param-value> </init-param> </servlet>
(2)
使用如下代码,获取ServletContext:
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); ServletContext sc = wac.getServletContext(); if (sc != null) { out.println( "\n\tWAC getServletContextName\t" + sc.getServletContextName() + "\n\tWAC getClassLoader\t" + sc.getClassLoader() + "\n\tWAC getClass\t" + sc.getClass() + "\n\tWAC getAttributeNames\t" + sc.getAttributeNames().toString() + "\n\tWAC getContextPath\t" + sc.getContextPath() + "\n\tWAC getInitParameterNames\t" + sc.getInitParameterNames().toString() + "\n\tWAC getServerInfo\t" + sc.getServerInfo() + "\n\tWAC getSessionCookieConfig\t" + sc.getSessionCookieConfig() ); Enumeration<String> es = sc.getAttributeNames(); while (es.hasMoreElements()){ String attr = es.nextElement().toString(); out.println( attr + "\t:\t" + sc.getAttribute(attr) ); } }
(3)上面代码的执行Log:
WAC getServletContextName /
WAC getClassLoader WebAppClassLoader=105146840@64469d8
WAC getClass class org.eclipse.jetty.webapp.WebAppContext$Context
WAC getAttributeNames java.util.Collections$3@5c9d540c
WAC getContextPath
WAC getInitParameterNames java.util.Collections$3@126898e2
WAC getServerInfo jetty/9.4.1.v20170120
WAC getSessionCookieConfig org.eclipse.jetty.server.session.SessionHandler$CookieConfig@90ed286
javax.servlet.context.tempdir : E:\JavaTryCatch\spring-mvc-showcase\target\tmp
org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern : .*/javax.servlet-[^/]*\.jar$|.*/servlet-api-[^/]*\.jar$|.*javax.servlet.jsp.jstl-[^/]*\.jar|.*taglibs-standard-impl-.*\.jar
org.eclipse.jetty.util.DecoratedObjectFactory : org.eclipse.jetty.util.DecoratedObjectFactory[decorators=3]
org.springframework.web.servlet.FrameworkServlet.CONTEXT.OOXXappServlet : WebApplicationContext for namespace 'OOXXappServlet-servlet': startup date [Mon Jun 12 18:22:41 CST 2017];parent: Root WebApplicationContext
org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.SCI : WebSocketUpgradeFilter[configuration=org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration@7a191211]
org.eclipse.jetty.resource.postOverlay : file:///E:/JavaTryCatch/spring-mvc-showcase/src/main/webapp/
org.eclipse.jetty.lifecyleCallbackCollection : org.eclipse.jetty.plus.annotation.LifeCycleCallbackCollection@4c92146a
resourceCache : ResourceCache[null,org.eclipse.jetty.servlet.DefaultServlet@1aeb2a92]@1703825835
org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration : org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration@7a191211
org.apache.tomcat.InstanceManager : org.apache.tomcat.SimpleInstanceManager@57b55e91
org.eclipse.jetty.tmpdirConfigured : true
org.eclipse.jetty.server.Executor : qtp2189588{STARTED,8<=13<=200,i=7,q=0}
org.eclipse.jetty.injectionCollection : org.eclipse.jetty.plus.annotation.InjectionCollection@bd82149
org.eclipse.jetty.runAsCollection : org.eclipse.jetty.plus.annotation.RunAsCollection@4824251a
org.apache.jasper.compiler.ELInterpreter : org.apache.jasper.compiler.ELInterpreterFactory$DefaultELInterpreter@5fb026bc
org.eclipse.jetty.containerInitializerStarter : org.eclipse.jetty.annotations.ServletContainerInitializersStarter@220caa0d
org.apache.jasper.compiler.TldCache : org.apache.jasper.compiler.TldCache@6814156c
org.springframework.web.servlet.FrameworkServlet.CONTEXT.dispatcherServlet : WebApplicationContext for namespace 'dispatcherServlet-servlet': startup date [Mon Jun 12 18:22:38 CST 2017]; parent: Root WebApplicationContext
org.springframework.web.context.WebApplicationContext.ROOT : Root WebApplicationContext: startup date [Mon Jun 12 18:22:38 CST 2017]; root of context hierarchy
org.springframework.web.context.support.ServletContextScope : org.springframework.web.context.support.ServletContextScope@171f181
org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter : WebSocketUpgradeFilter[configuration=org.eclipse.jetty.websocket.server.NativeWebSocketConfiguration@7a191211]
javax.websocket.server.ServerContainer : org.eclipse.jetty.websocket.jsr356.server.ServerContainer@5faaa2d5
org.apache.jasper.runtime.JspApplicationContextImpl : org.apache.jasper.runtime.JspApplicationContextImpl@18b127ef
(4)问题描述
可以在上面的记录中,attribute里有2个“子上下文”:
org.springframework.web.servlet.FrameworkServlet.CONTEXT.OOXXappServlet 和 org.springframework.web.servlet.FrameworkServlet.CONTEXT.dispatcherServlet
其value分别是:
WebApplicationContext for namespace 'dispatcherServlet-servlet': startup date [Mon Jun 12 18:22:38 CST 2017]; parent: Root WebApplicationContext
和 WebApplicationContext for namespace 'OOXXappServlet-servlet': startup date [Mon Jun 12 18:22:41 CST 2017]; parent: Root WebApplicationContext
也就是说,同时初始化了2个MVC上下文,这是不合理的啊;所以,应该算是一个Bug吧!
相关文章推荐
- 玩怪物猎人P3发现一个BUG可以金钱无数(非老金)
- spring,springMVC的优点和区别 spring 是是一个开源框架,是为了解决企业应用程序开发,功能如下 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并
- bbossgroups-1.0 rpc框架修复了一个bug(bug描述见正文)
- Linux下两个进程可以同时打开同一个文件,这时如下描述错误的是:
- 今天发现一个隐蔽的条件编译BUG,不容易发现,编译不会出错。是否可以用断言来解决?
- 看了二十四画生的文章才发现ASP.NET Portal Starter Kit中调整顺序的一个Bug
- 新发现了一个大型软件的下载站,里面软件不少,而且都可以下载啊
- 请求帮助:公司要做一个ASP.NET的项目管理网站,各位朋友有什么好的框架可以推荐?
- 用next_permutation()生成r-组合数,兼发现VC7的一个bug
- 发现vs.net 2003的一个小bug~
- 再发:发现一个 Delphi6 VCL 的 BUG!
- 发现word的一个bug :项目符号和编号 中 多级符号 如何更改级别?
- <%'我给大家一个函数,代替ASP中的Request函数,可以对一切的SQL注入Say NO,函数如下:
- 今天无意中又发现一个记事本的 bug
- 今天发现一个非常奇怪的VSIDE BUG,经过1个小时的研究解决
- 发现vs.net 2003的一个小bug~
- 最近发现QQ游戏的一个小BUG!
- 刚发现一个可以免费上传10G数据的网站
- 发现了VS.NET 2005的一个小BUG
- 又发现了一个VS.NET 2005的小BUG