2017-03-23 21:50 GMT+01:00 Violeta Georgieva <violet...@apache.org>: > Hi, > > 2017-03-23 22:47 GMT+02:00 Thomas DELHOMENIE <thomas.delhome...@gmail.com > >: > > > > Hi, > > > > With Tomcat 8.5.12 I hit a NPE when I use RequestDispatcher to redirect > > from a servlet to another one in the case of the mapping of this second > > servlet ends with /*. An error 500 is returned because of a > > NullPointerException : > > Most probably you are facing this issue [1]. > The fix will be available in 8.5.13. > > Regards, > Violeta > > [1] https://bz.apache.org/bugzilla/show_bug.cgi?id=60882
Yes, very probably :) Thanks! > > > > java.lang.NullPointerException > > at > > > org.apache.catalina.core.ApplicationMapping.getServletMapping( > ApplicationMapping.java:62) > > at > > > org.apache.catalina.core.ApplicationContext.getRequestDispatcher( > ApplicationContext.java:486) > > at > > > org.apache.catalina.core.ApplicationContextFacade.getRequestDispatcher( > ApplicationContextFacade.java:222) > > at org.exoplatform.RedirectServlet.doGet( > RedirectServlet.java:19) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) > > at > > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( > ApplicationFilterChain.java:230) > > at > > > org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:165) > > at > > org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) > > at > > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( > ApplicationFilterChain.java:192) > > at > > > org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:165) > > at > > > org.apache.catalina.core.StandardWrapperValve.invoke( > StandardWrapperValve.java:198) > > at > > > org.apache.catalina.core.StandardContextValve.invoke( > StandardContextValve.java:96) > > at > > > org.apache.catalina.core.StandardHostValve.invoke( > StandardHostValve.java:140) > > at > > > org.apache.catalina.valves.ErrorReportValve.invoke( > ErrorReportValve.java:80) > > at > > > org.apache.catalina.valves.AbstractAccessLogValve.invoke( > AbstractAccessLogValve.java:624) > > at > > > org.apache.catalina.core.StandardEngineValve.invoke( > StandardEngineValve.java:87) > > at > > > org.apache.catalina.connector.CoyoteAdapter.service( > CoyoteAdapter.java:341) > > at > > org.apache.coyote.http11.Http11Processor.service( > Http11Processor.java:783) > > at > > > org.apache.coyote.AbstractProcessorLight.process( > AbstractProcessorLight.java:66) > > at > > > org.apache.coyote.AbstractProtocol$ConnectionHandler.process( > AbstractProtocol.java:798) > > at > > > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor. > doRun(NioEndpoint.java:1441) > > at > > > org.apache.tomcat.util.net.SocketProcessorBase.run( > SocketProcessorBase.java:49) > > at > > > java.base/java.util.concurrent.ThreadPoolExecutor. > runWorker(ThreadPoolExecutor.java:1161) > > at > > > java.base/java.util.concurrent.ThreadPoolExecutor$ > Worker.run(ThreadPoolExecutor.java:635) > > at > > > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( > TaskThread.java:61) > > at java.base/java.lang.Thread.run(Thread.java:844) > > > > To reproduce this issue I created a simple war with the following web.xml > : > > > > <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee > > http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd > " > > version="3.1" > > metadata-complete="true"> > > > > <description> > > Servlet and JSP Examples. > > </description> > > <display-name>Servlet and JSP Examples</display-name> > > > > <servlet> > > <servlet-name>HelloWorldExample</servlet-name> > > <servlet-class>org.sample.HelloWorldServlet</servlet-class> > > </servlet> > > <servlet> > > <servlet-name>RedirectServlet</servlet-name> > > <servlet-class>org.sample.RedirectServlet</servlet-class> > > </servlet> > > > > <servlet-mapping> > > <servlet-name>HelloWorldExample</servlet-name> > > <url-pattern>/HelloWorldExample/*</url-pattern> > > </servlet-mapping> > > <servlet-mapping> > > <servlet-name>RedirectServlet</servlet-name> > > <url-pattern>/RedirectServlet</url-pattern> > > </servlet-mapping> > > </web-app> > > > > The class RedirectServlet is : > > > > package org.sample; > > > > import javax.servlet.RequestDispatcher; > > import javax.servlet.ServletException; > > import javax.servlet.http.HttpServlet; > > import javax.servlet.http.HttpServletRequest; > > import javax.servlet.http.HttpServletResponse; > > import java.io.IOException; > > > > public class RedirectServlet extends HttpServlet { > > @Override > > public void doGet(HttpServletRequest request, > > HttpServletResponse response) > > throws IOException, ServletException > > { > > RequestDispatcher requestDispatcher = > > request.getServletContext().getRequestDispatcher("/HelloWorldExample"); > > requestDispatcher.forward(request, response); > > } > > } > > > > And the class HelloWorldServlet is : > > > > package org.sample; > > > > import javax.servlet.ServletException; > > import javax.servlet.http.HttpServlet; > > import javax.servlet.http.HttpServletRequest; > > import javax.servlet.http.HttpServletResponse; > > import java.io.IOException; > > import java.io.PrintWriter; > > > > public class HelloWorldServlet extends HttpServlet { > > @Override > > public void doGet(HttpServletRequest request, > > HttpServletResponse response) > > throws IOException, ServletException > > { > > PrintWriter out = response.getWriter(); > > > > out.println("<!DOCTYPE html><html>"); > > out.println("<head>"); > > out.println("<meta charset=\"UTF-8\" />"); > > out.println("<title>Hello World</title>"); > > out.println("</head>"); > > out.println("<body bgcolor=\"white\">"); > > out.println("<a href=\"../helloworld.html\">"); > > out.println("<img src=\"../images/code.gif\" height=24 " + > > "width=24 align=right border=0 alt=\"view code\"></a>"); > > out.println("<a href=\"../index.html\">"); > > out.println("<img src=\"../images/return.gif\" height=24 " + > > "width=24 align=right border=0 alt=\"return\"></a>"); > > out.println("<h1>Hello World !</h1>"); > > out.println("</body>"); > > out.println("</html>"); > > } > > } > > > > I do not have this issue with Tomcat 8.5.11. > > I also do not have this issue if I change the mapping of the servlet > > HelloWorldExample to "/HelloWorldExample" instead of > "/HelloWorldExample/*". > > > > It looks like a bug but I wanted to be sure of that before opening an > issue > > in the bugtracker. Should I open one ? > > > > Thanks >