Передача данных между приложениями на сервере 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. Могу ли я использовать это для обмена данными между моими приложениями?