RequestDispatcher将请求转发到在同一个tomcat实例中的不同端口上运行的另一个应用程序

时间:2016-03-05 11:32:06

标签: tomcat servlets port requestdispatcher

我可以使用以下代码将请求转发到不同的应用程序:


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

这对我没用。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

我认为以你的方式前进是不可能的。这是来自getContext()的JavaDoc的摘录:

  

此方法允许servlet访问服务器各个部分的上下文,并根据需要从上下文中获取RequestDispatcher对象。给定路径必须以/开头,相对于服务器的文档根进行解释,并与此容器上托管的其他Web应用程序的上下文根相匹配

“container”是在特定端口上运行的Tomcat的实例。

也许方法HttpServletResponse#sendRedirect()是你的朋友......