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
>
>

Reply via email to