我可以使用以下代码将请求转发到不同的应用程序:
ServletContext web1, web2; web1 = getServletContext(); web2 = web1.getContext("/EmailSender"); RequestDispatcher dispatcher = web2.getRequestDispatcher("/sendEmail.do"); dispatcher.forward(request, response);
这是成功转发请求到不同的应用程序,EmailSender,在同一端口上运行。
我已在其他几个端口上部署了EmailSender应用程序并尝试将请求转发给他们。总而言之,有没有办法转发到在不同端口上运行的不同应用程序。
我试过了:
ServletContext web1, web2; int port = 8090; web1 = getServletContext(); web2 = web1.getContext("http://localhost:"+port+"/EmailSender"); RequestDispatcher dispatcher = web2.getRequestDispatcher("/sendEmail.do"); dispatcher.forward(request, response);
这对我没用。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
我认为以你的方式前进是不可能的。这是来自getContext()
的JavaDoc的摘录:
此方法允许servlet访问服务器各个部分的上下文,并根据需要从上下文中获取RequestDispatcher对象。给定路径必须以/开头,相对于服务器的文档根进行解释,并与此容器上托管的其他Web应用程序的上下文根相匹配。
“container”是在特定端口上运行的Tomcat的实例。
也许方法HttpServletResponse#sendRedirect()是你的朋友......