複数の開発者がこの問題の解決策を探しているのを見てきました:異なるWARからのセッション情報へのアクセス(同じEAR内であっても)-ここにいくつかのサンプルがあります:Tomcatの異なるアプリケーション間でセッション状態を共有する方法はありますか?、別のWebアプリケーションのアクセスセッション、異なるWARファイル、共有リソース、Tomcat:2つのアプリケーション間でデータを共有する方法 、TomcatでcrossContext属性は何をしますか?セッション共有を有効にしますか?等々...
私が検索したすべてから、コンテナに応じていくつかの特定の解決策がありますが、それはどういうわけか「仕様に反しています」。また、答えを見つけることができずにJava EE仕様を調べました。
一部の開発者はWebアプリケーション間のカップリングについて話しますが、私は反対する傾向があります。カップリングしない場合、同じEAR内にWARを保持する理由は何ですか?たとえば、EJBはローカルにアクセスできます(同じEAR内の別のEJB JAR内にある場合でも)。
より具体的には、私のWARの1つが認証と許可を処理し、この情報を(同じEAR内の)他のWARと共有したいと思います。以前、WARをJARとしてパッケージ化し、それらを単一のWARプロジェクト(WEB-INF / lib)に入れることで、同様の問題を回避することができました。しかし、私はこのソリューションが好きではありません(サーブレットの命名などに多大な労力が必要です)。
そして、最初の(そして最も重要な)質問に答えるソリューションはありません:なぜWARはセッション情報を共有できないのですか?