ステートフル セッション Bean と HTTP セッションの間に関係はありますか? ステートフル セッション Bean が必要なユース ケースと、HTTP セッションが必要なユース ケースを教えてください。ステートフル セッション Bean を安静な Web サービスとして公開できますか?
1 に答える
HTTP はステートレス プロトコルです。これは、サーバーとクライアントの間の実際のトランスポート プロトコルであることを意味します。つまり、「呼び出し間で何も記憶しないため、ステートレス
です。まず、HTTPSession とは何か、セッション Bean とは何かをお読みください (セッション Bean は複数のリクエストにわたってデータの状態を維持するために使用されるため、ほとんどの場合、セッション Bean はセッション全体にわたってデータを保持するため、ステートフル セッション Bean です)
HTTP セッション
HttpSession オブジェクトは、同じクライアントからの複数のリクエストにわたって会話状態を保持できます。特定のクライアントとのセッション全体. セッション中にクライアントが行うすべてのリクエストでクライアントから返されるすべてを格納するために使用できます.
セッション Beanfrom wiki
Java Platform, Enterprise Edition 仕様では、Session Bean は Enterprise Bean の一種です。Session Bean は、計算やデータベース アクセスなどの操作をクライアントに対して実行します。セッション Bean はトランザクションに対応できますが、システム クラッシュが発生した場合に回復することはできません。セッション Bean オブジェクトは、ステートレスにすることも、メソッドやトランザクション全体で会話状態を維持することもできます。セッション Bean が状態を維持する場合、オブジェクトをメモリーから削除する必要がある場合、EJB コンテナーがこの状態を管理します。ただし、セッション Bean オブジェクト自体が独自の永続データを管理する必要があります。
簡単な言葉で
セッション トラッキングとは、Web サイトの訪問者がページからページへ移動する際に、その訪問者に関する情報または状態を維持するプロセスです。ビルトインのメカニズムがないため、Web 開発者側での作業が必要です。ブラウザーから Web サーバーへの接続はステートレス ハイパーテキスト転送プロトコル (HTTP) を介して行われ、
SFSB
は同じセッション Bean への複数の呼び出し (つまり、会話) でクライアント状態を管理するように設計されています。JBoss Seam を見ると、会話コンテキストに SFSB が非常に頻繁に使用されていることがわかります。
EJB3 では、「ステートレスはステートフル セッション Bean よりも優れている」ということはありません。たとえば、1 つはクレジット カード プロセッサのようなサービスを提供し (ステートレス)、もう 1 つはマルチスクリーン ウィザードのユース ケースの処理を提供します (ステートフル)。
私の意見では、HttpSession とステートレス セッション Bean を使用して状態を管理することは非常に難しく、問題があります。
編集: HTTPSession は、ユーザー セッションのようにセッションの追跡を維持するために使用されます
。たとえば、ログイン、ログアウト メカニズムを作成する場合は、HTTPSession が必要です。なぜなら、ユーザーが異なるページ間のナビゲーションを開始すると、この HTTPsession は WHO が求めていることを覚えているからです。それ以外の場合は不可能です(HTTPはステートレスプロトコルであるため)
セッションでは、ユーザー名とパスワードのセッションを設定するだけで、このセッションが存在する場合はページを表示することをすべてのページでチェックしています
このユーザーの多くの情報を複数のリクエストで送信する必要がある場合はどうでしょうか。このシナリオでは、このすべての情報をステートフル セッション Bean に設定しますが
、最近では、最新のフレームワーク セッションでは情報と同様に、すべてがセッション Bean に保存されます。これは、セッション Bean から簡単に管理できるためです。
HTTPSession は、純粋にサーブレットと何らかの形で JSP テクノロジを使用していたときに使用されました。