2009-03-19 3 views
8

Все, что я могу найти в Tomcat 5.5 docs является:Что делает атрибут crossContext в Tomcat? Включает ли это совместное использование сеанса?

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

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

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

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

ответ

8

От Javadoc ServletContext.getContext():

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

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

+0

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

+1

Не об этом я знаю. –

17

Вы можете обмениваться сеансами между веб-приложениями, используя Single Sign-On Valve.

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

Например app1 бы назвать:

setAttribute("name", object); 

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

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

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

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

+0

Спасибо, но я не ищу ни одного знака, мне нужно разделить атрибуты HttpSession. Взгляните на мой новый вопрос http: // stackoverflow.com/questions/665941/any-way-to-share-session-state-between-different-applications-in-tomcat – Serxipc

+0

thaaank вы все и специализируетесь на вас, сэр, thaaaaaaaaaaaans вы спасите мою жизнь – Dilllllo

+0

+1 для указания на один знак - в документах. –

0

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

Я опубликовал another question, чтобы узнать, есть ли способ поделиться состоянием сеанса.