In the context /inbox
deployed on tomcat10, I have added the file META-INF/context.xml
with this content:
<?xml version="1.0" encoding="UTF-8" ?>
<Context crossContext="true" />
but when I try forward to another context, with:
getServletContext().getContext("/auth").getRequestDispatcher("/login").forward(request, response);
I got the error:
Cannot invoke "jakarta.servlet.ServletContext.getRequestDispatcher(String)" because the return value of "jakarta.servlet.ServletContext.getContext(String)" is null
What I am missing here?
the call above is used in this servlet from /inbox
:
@WebServlet(name = "Home", urlPatterns = "/home")
public class Home extends HttpServlet {
protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
}
}
I also have tried the strings /../auth
and /../../auth
for the context, but the same error occurs.
The META-INF
folder containing the context.xml
needs to be the one in the root of the WAR file, not the one in WEB-INF/classes
folder. This is simply because it is as being a server-specific configuration file not supposed to be available in the classpath of the web application. In case of a default Maven project it's expected that the source file path is src/main/webapp/META-INF/context.xml
and thus not e.g. src/main/resources/META-INF/context.xml
.