我正在使用tomcat 6,我有两个webapps。一个是webapp1,另一个是webapp2。从webapp2中的过滤器,我试图访问其他webapp,即webapp1。我的过滤器代码如下所示
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
System.out.println("requeted path = " + req.getRequestURI());
ServletContext othercontext = confg.getServletContext().getContext("/webapp1");
RequestDispatcher dispatcher = othercontext.getRequestDispatcher(req.getRequestURI());
dispatcher.forward(request, response);
chain.doFilter(request, response);
}
任何想法我做错了什么?我总是将null作为othercontext值。
答案 0 :(得分:9)
在server.xml中设置crossContext =“true”。有关上下文容器,请参阅documentation。
如果您想要进行通话,请设置为true 这个应用程序 ServletContext.getContext()来 成功返回请求 其他Web应用程序的调度程序 在这个虚拟主机上运行。调成 安全性中的false(默认值) 有意识的环境,使 getContext()始终返回null。
答案 1 :(得分:0)
为 Apache Tomcat 8.0.27 以不同的方式工作。我没有更改其server.xml
,而是使用context.xml
标记的crossContext
属性更新了tomcat的Context
文件。