これについては、EJB を使った作業から得た意見 (それほど深くはありませんが) をお伝えしたいと思います。また、他のユーザーからの建設的なフィードバックをお待ちしています。セッションには、ejb セッションと「その他」(クライアント) セッションの 2 種類があります。クライアントは、あなたが提供するリモートインターフェースを検索して使用するエンティティを意味し、おそらくローカルインターフェースでもあります。この場合、クライアントと ejb は同じ JVM 内で実行されています。
ejb セッションは、EJB コンテナーによって管理されるセッションを意味します。呼び出されるかどうかは問題ではありません。ステートフルな ejb が検索されて作成されると、セッションが開始されます。もちろん、これはサーバー側で発生します。ejb には、セッションの継続時間に注釈を付ける特定の方法があります。このセッションが期限切れになると、EJB のそのようなインスタンスに到達できなくなるため、クライアント側ではサーバー内の何かへの参照がなくなります。
一方、クライアントには、EJB セッションから独立した独自のセッションがあります (2 つのセッションを関連付ける必要がない場合)。EJB がクライアントのログインを管理しているとします。ejb タイムアウトが発生すると、クライアントはログに記録されなくなります。ただし、これはクライアント セッションがタイムアウトしたことを意味するわけではありません。セッションが長くなっている可能性があります。
プレゼンテーション層とロジック層を備えた 2 層アーキテクチャを持つことを考えてみてください。独自のセッション コンセプトを持つ jsf 経由のプレゼンテーションと、独自のセッション管理を持つ別のサーバー上の EJB 経由のロジック。
2 つのセッションを相互に関連付けたいと考えていますが、それらは同じではありません。ejb タイムアウト時に http/Servlete セッションを期限切れにすることはできますが、それらは 2 つの異なるコンテキストにあり、2 つの異なるものに関連しています。