У меня есть сценарий, в котором у меня есть один сервлет с точкой входа и другие сервлеты, запросы на которые пересылаются для выполнения сложной обработки.
Я рассматриваю варианты распределения этой нагрузки и хотел бы узнать, возможно ли использовать Tomcat или другую платформу для пересылки запросов между сервлетами, расположенными на разных серверах, с использованием конфигурации типа кластера или аналогичной.
Я нашел некоторую документацию по кластеризации сервлетов и Tomcat, но ни в одной из них не указано, возможна ли пересылка запросов сервлетов из того, что я вижу.
http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/web-tier/web-tier5.html
http://tomcat.apache.org/tomcat-5.5-doc/cluster-howto.html
Вы можете распространять его по веб-приложениям в кластерной среде Tomcat и добавлять crossContext="true" к элементу <Context> рассматриваемых веб-приложений. Вот выдержка из Справочника по настройке контекста Tomcat :
crossContext="true"
<Context>
crossContext Установите на true, если вы хотите, чтобы вызовы в этом приложении были на ServletContext.getContext() для успешного возврата диспетчера запросов для других веб-приложений, работающих на этом виртуальном хосте. Установите в false (по умолчанию) в безопасных средах, чтобы getContext() всегда возвращал null.
crossContext
Установите на true, если вы хотите, чтобы вызовы в этом приложении были на ServletContext.getContext() для успешного возврата диспетчера запросов для других веб-приложений, работающих на этом виртуальном хосте. Установите в false (по умолчанию) в безопасных средах, чтобы getContext() всегда возвращал null.
true
ServletContext.getContext()
false
getContext()
null
Таким образом, вы можете получить желаемый RequestDispatcher следующим образом:
RequestDispatcher
RequestDispatcher dispatcher = getServletContext().getContext(name).getRequestDispatcher(path);