Что делает атрибут crossContext в Tomcat? Включает ли это совместное использование сеанса? - PullRequest
11 голосов
/ 19 марта 2009

Все, что я могу найти в документах Tomcat 5.5 :

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

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

Существует ли связь между Servlet.getContext () и возможностью делиться состоянием сеанса между различными веб-приложениями?

Что атрибут crossContext действительно делает в Tomcat?

Ответы [ 3 ]

19 голосов
/ 20 марта 2009

Вы можете обмениваться сеансами между веб-приложениями, используя Клапан единого входа .

Вы бы установили crossContext=true, если хотите поделиться некоторой информацией между различными веб-приложениями на одном виртуальном хосте.

Например, app1 будет вызывать:

setAttribute("name", object);

и другое приложение может позвонить

getContext("/app1").getAttribute("name");

для чтения информации. Если crossContext не был установлен в true, getContext ("/ app1") вернул бы ноль.

Однако использование crossContext встречается редко и потенциально небезопасно.

11 голосов
/ 19 марта 2009

Из Javadoc ServletContext.getContext():

Этот метод позволяет сервлетам получать доступ к контексту для различных частей сервера и по мере необходимости получать объекты RequestDispatcher из контекста. Указанный путь должен начинаться с «/», интерпретируется относительно корня документа сервера и сопоставляется с корнями контекста других веб-приложений, размещенных в этом контейнере.

Так, например, если вы хотите добавить страницу из другого веб-приложения, вам нужно установить для crossContext значение true.

0 голосов
/ 20 марта 2009

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

Я отправил другой вопрос , чтобы узнать, есть ли способ поделиться состоянием сеанса.

...