【发布时间】:2011-02-18 09:53:15
【问题描述】:
我有一个场景,我有一个入口点 Servlet 和更多的 Servlet,这些 Servlet 将请求转发到进行繁重的处理。
我正在寻找分配此负载的选项,我想知道是否可以使用 Tomcat 或其他平台在使用集群类型配置或类似配置的不同服务器上的 Servlet 之间转发请求。
我找到了一些关于集群 Servlet 和 Tomcat 的文档,但没有一个说明 Servlet 请求转发是否可行。
【问题讨论】:
我有一个场景,我有一个入口点 Servlet 和更多的 Servlet,这些 Servlet 将请求转发到进行繁重的处理。
我正在寻找分配此负载的选项,我想知道是否可以使用 Tomcat 或其他平台在使用集群类型配置或类似配置的不同服务器上的 Servlet 之间转发请求。
我找到了一些关于集群 Servlet 和 Tomcat 的文档,但没有一个说明 Servlet 请求转发是否可行。
【问题讨论】:
您可以在集群 Tomcat 环境中通过 webapps 分发它,并将 crossContext="true" 添加到相关 webapps 的 <Context> 元素中。这是Tomcat's Context Configuration Reference的摘录:
crossContext如果您希望在此应用程序中调用
ServletContext.getContext()以成功地为在此虚拟主机上运行的其他 Web 应用程序返回请求调度程序,请设置为true。在有安全意识的环境中设置为false(默认值),以使getContext()始终返回null。
这样就可以得到想要的RequestDispatcher,如下:
RequestDispatcher dispatcher = getServletContext().getContext(name).getRequestDispatcher(path);
【讨论】: