2010-05-12 4 views
6

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

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

Я нашел документацию по кластеризации Servlets и 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

ответ

5

Вы можете распространять его по WebApps в кластерной среде Tomcat и добавить crossContext="true" к <Context> элементу WebApps в вопросе. Вот выдержка из Tomcat's Context Configuration Reference:

crossContext

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

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

RequestDispatcher dispatcher = getServletContext().getContext(name).getRequestDispatcher(path); 
Смежные вопросы