Widziałem kilku programistów szukających rozwiązania tego problemu: uzyskiwanie dostępu do informacji o sesji z innej WAR (nawet gdy znajduje się w tym samym pliku EAR) - oto kilka przykładów: Jak można udostępnić stan sesji między różnymi aplikacjami w tomcat? , Sesja dostępu do innej aplikacji internetowej , różne pliki WAR, udostępnione zasoby , Tomcat: jak współdzielić dane między dwiema aplikacjami? , Co robi atrybut crossContext w Tomcat? Czy umożliwia udostępnianie sesji? i tak dalej...
Ze wszystkiego, co szukałem, istnieją pewne konkretne rozwiązania w zależności od pojemnika, ale jest to w jakiś sposób „ sprzeczne ze specyfikacją ”. Przejrzałem także specyfikację Java EE, ale bez powodzenia w znalezieniu odpowiedzi.
Niektórzy programiści mówią o sprzężeniu między aplikacjami internetowymi, ale zwykle się nie zgadzam. Jaki jest powód, dla którego WOF trzymane byłyby w tym samym EAR, gdyby nie były sprzężone? Na przykład do EJB można uzyskać dostęp lokalnie (nawet jeśli znajduje się w innym pliku JAR EJB w tym samym pliku EAR).
Mówiąc dokładniej, jedna z moich WAR obsługuje uwierzytelnianie i autoryzację, i chciałbym udostępnić te informacje innym WAR (w tym samym EAR). Wcześniej udało mi się obejść podobne problemy, pakując WARs jako JAR i umieszczając je w jednym projekcie WAR (WEB-INF / lib). Jednak nie podoba mi się to rozwiązanie (wymaga ogromnego wysiłku nazywania serwletów i tak dalej).
I żadne rozwiązanie nie odpowiedziało na pierwsze (i najważniejsze) pytanie: Dlaczego WARs nie może udostępniać informacji o sesji?