Hello, I just use this app : http://pukkaone.github.io/2010/12/22/jsp-precompile-application-start.html
it's works with tomcat 5,6,7 but not tomcat 8. Because before, it's possibel to invoque RequestDispatcher into Listener Now, call RequestDispatcher throw NPE because the Map is empty. 2015-02-20 13:35 GMT+01:00 Konstantin Kolinko <knst.koli...@gmail.com>: > 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 > >