2016-09-12 2 views
1

У меня есть два приложения, расположенные на том же сервере tomcat7:Использование одной сессии с двумя TOMCAT приложений

  1. https://my.application.com/writeApplication
  2. https://my.application.com/readApplication

Теперь то, что я хочу для того чтобы достигнуть, что writeApplication записывает что-то в сессию, после чего начинается readApplication и считывает эту информацию из сеанса.

В обоих web.xml файлов я вставил:

<session-config> 
    <session-timeout>720</session-timeout> 
    <cookie-config> 
     <name>JSESSIONID</name> 
     <path>/</path> 
     <http-only>true</http-only> 
    </cookie-config> 
</session-config> 

В writeApplication (простой сервлет) Я пишу в сессию как:

HttpSession session = req.getSession(); 
session.setAttribute("test", "myString"); 

Как пожелал JSESSIONID -Cookie записывается в "/", поэтому https://my.application.com/.

В моем readApplication (приложение для GWT) Я хочу, чтобы прочитать эту информацию из сессии с помощью:

HttpSession httpSession = getThreadLocalRequest().getSession(); 
String myString = (String) httpSession.getAttribute("test"); 

В этом случае я всегда получаю null.

Если я пишу что-то со стороны readApplication путь такой же, как и в writeApplication, но если я хочу читать, я не могу получить информацию, которую я добавлял с сервлета.

Не должно ли это работать так?

ответ

2

Это, как правило, не может быть сделано, как this SO question discusses.

Однако одна общая альтернатива использованию сеанса, которая даже считается предпочтительной для использования сеанса, записывает в базу данных. Это -, как правило, возможно, что два разных веб-приложения Java могут совместно использовать одну и ту же базу данных, даже в той же таблице. Вы могли бы, чтобы ваши два webapps записывали и читали общее состояние из общей базы данных.

+0

Моя надежда состояла в том, чтобы избежать этого. В этом случае мне пришлось бы указать параметр с идентификатором записи db в URL-адресе. Как я мог быть уверен, что только тот, кто вызвал * writeApplication *, может прочитать эту информацию из db. – mxlse

+0

@mxlse Играя адвоката дьявола, как Tomcat (или JBoss и т. Д.) Управляют тем же самым, если сеанс должен делиться через два веб-приложения? –

+1

Хорошо, спасибо. Я думаю, что я разрешу его с собственным файлом cookie в моей реализации. – mxlse

 Смежные вопросы

  • Нет связанных вопросов^_^