2015-02-19 19:25 GMT+03:00 Marco Semiao <marco.sem...@gmail.com>: > Hello, > > I use on my application a web listener ( ServletContextListener ) that > allows you to compile jsp at startup . > > It does not work on Tomcat 8 in call : > servletContext.getRequestDispatcher ( path); > > > Here is the stack : > > org.apache.catalina.core.ApplicationContext.log Error during mapping > java.lang.NullPointerException > at org.apache.catalina.mapper.Mapper.internalMapWrapper(Mapper.java:842) > at org.apache.catalina.mapper.Mapper.map(Mapper.java:712) > at > org.apache.catalina.core.ApplicationContext.getRequestDispatcher(ApplicationContext.java:503) > at > org.apache.catalina.core.ApplicationContextFacade.getRequestDispatcher(ApplicationContextFacade.java:221) > at > fr.ms.tomcat.servlet.listener.JspCompileRunnable.run(JspCompileRunnable.java:25) > This is occurs when the map contextObjectToContextVersionMap is still null. > > It is enriched at the end of the boot StandardServer so after initializing > listeners . > > Thread [main] (Suspended (breakpoint at line 265 in Mapper)) > owns: MapperListener (id=456) > owns: StandardService (id=457) > owns: Object (id=458) > owns: StandardServer (id=459) > Mapper.addContextVersion(String, Host, String, String, Context, String[], > WebResourceRoot, Collection<WrapperMappingInfo>) line: 265 > MapperListener.registerContext(Context) line: 380 > MapperListener.registerHost(Host) line: 302 > MapperListener.startInternal() line: 110 > MapperListener(LifecycleBase).start() line: 150 > StandardService.startInternal() line: 450 > StandardService(LifecycleBase).start() line: 150 > StandardServer.startInternal() line: 769 > StandardServer(LifecycleBase).start() line: 150 > Catalina.start() line: 625 > NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not > available [native method] > NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57 > DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43 > Method.invoke(Object, Object...) line: 606 > Bootstrap.start() line: 351 > Bootstrap.main(String[]) line: 485 > > > > it works fine with tomcat 5, 6 and 7. > > > Environnement : > apache- tomcat- 8.0.15 or apache -tomcat- 8.0.18 > Windows 8.1 > Java 7 update 75 >
1. Mailing list rules: http://tomcat.apache.org/lists.html#tomcat-users -> 6. Do not top-post. 2. What event is your listener listening for? If I am understanding you correctly, you are trying to perform a request dispatch on a web application that has not started yet. This is not going to work. The application that has not completed its startup cannot serve requests. The NPE is ugly, an IllegalStateException would be better. >From the API specification [1] it looks that the ServletContext.getRequestDispatcher() should return null in this situation, but I think that will be as confusing as the current NPE. If you want the NPE to be changed, it would better to prepare some source code that demonstrates the issue and open an issue in Bugzilla, but at this point I think it is a cosmetic issue and fixing it wouldn't solve your problem. [1] http://docs.oracle.com/javaee/7/api/javax/servlet/ServletContext.html#getRequestDispatcher%28java.lang.String%29 Best regards, Konstantin Kolinko --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org