Передача данных между приложениями на сервере Tomcat

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

Все приложения определены как разные элементы хоста в конфигурации Tomcat (server.xml), как в следующем примере:

<Host name="loginapp.localhost" appBase="loginapp" />

<Host name="webapp1.localhost" appBase="webapp1" />
<Host name="webapp2.localhost" appBase="webapp2" />
...

Какова лучшая практика для достижения этой цели?

Как я вижу, что все будет работать и что я пробовал до сих пор:

Когда пользователь переходит на URL, который указывает на webapp1, фильтр запросов в приложении видит, что пользователь еще не прошел аутентификацию, и перенаправляет на "loginapp", где происходит аутентификация, и перенаправляет обратно на webapp1, где пользователь теперь аутентифицирован для (только для этого конкретного приложения).

Что мне нужно, это делиться данными между этими приложениями. И я обнаружил, что должна быть возможность обмениваться атрибутами сеанса между приложениями, как показано ниже (пример, который я нашел):

request.getSession().setAttribute("sharedId", shared);
request.getRequestDispatcher("/URLofOtherServlet").forward(request, response);

Но я не уверен, как мне этого добиться, так как мои приложения работают на одном сервере Tomcat, но доступ к ним осуществляется с разных доменных имен. Это вообще возможно? Или есть другие варианты для моего случая?


РЕДАКТИРОВАТЬ:

Очевидно, мое "решение" выше возможно только для использования внутри одного приложения.

Что я нашел сейчас, продолжая исследования, так это ресурсы JNDI. Могу ли я использовать это для обмена данными между моими приложениями?

0 ответов

Другие вопросы по тегам