RequestDispatcher пересылка между экземплярами Tomcat - PullRequest
6 голосов
/ 12 мая 2010

У меня есть сценарий, в котором у меня есть один сервлет с точкой входа и другие сервлеты, запросы на которые пересылаются для выполнения сложной обработки.

Я рассматриваю варианты распределения этой нагрузки и хотел бы узнать, возможно ли использовать 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

1 Ответ

5 голосов
/ 12 мая 2010

Вы можете распространять его по веб-приложениям в кластерной среде Tomcat и добавлять crossContext="true" к элементу <Context> рассматриваемых веб-приложений. Вот выдержка из Справочника по настройке контекста Tomcat :

crossContext

Установите на true, если вы хотите, чтобы вызовы в этом приложении были на ServletContext.getContext() для успешного возврата диспетчера запросов для других веб-приложений, работающих на этом виртуальном хосте. Установите в false (по умолчанию) в безопасных средах, чтобы getContext() всегда возвращал null.

Таким образом, вы можете получить желаемый RequestDispatcher следующим образом:

RequestDispatcher dispatcher = getServletContext().getContext(name).getRequestDispatcher(path);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...