J'ai vu plusieurs développeurs à la recherche d'une solution à ce problème: accéder aux informations de session à partir d'un autre WAR (même à l'intérieur du même EAR) - voici quelques exemples: Comment partager l'état de session entre différentes applications dans tomcat? , Session d'accès d'une autre application web , différents fichiers WAR, ressources partagées , Tomcat: Comment partager des données entre deux applications? , Que fait l'attribut crossContext dans Tomcat? Est-ce que cela permet le partage de session? etc...
D'après toutes mes recherches, il existe des solutions spécifiques en fonction du conteneur, mais elles sont en quelque sorte « contraires aux spécifications ». J'ai également examiné la spécification Java EE sans aucune chance de trouver une réponse.
Certains développeurs parlent de couplage entre les applications Web, mais j'ai tendance à ne pas être d'accord. Quelle est la raison pour laquelle on garderait les WAR à l'intérieur du même EAR si ce n'est pas le couplage? Les EJB, par exemple, sont accessibles localement (même si à l'intérieur d'un autre JAR EJB dans le même EAR).
Plus précisément, l'un de mes WAR gère l'authentification et l'autorisation, et je voudrais partager ces informations avec d'autres WAR (dans le même EAR). J'ai réussi à contourner des problèmes similaires auparavant en empaquetant les fichiers WAR sous forme de fichiers JAR et en les plaçant dans un projet WAR unique (WEB-INF / lib). Pourtant, je n'aime pas cette solution (elle nécessite un énorme effort sur le nommage des servlets, etc.).
Et aucune solution n'a répondu à la première (et la plus importante) question: pourquoi les WAR ne peuvent-ils pas partager les informations de session?