提案された 3 つのソリューションはすべて動作させることができますが、最適なソリューションはアプリケーションの詳細によって異なります。
ステートフル セッション Bean (SFSB) はまったく使用しません。SFSB はセッション状態を維持するように設計されていますが、Web サービス経由で使用すると、セッションとは正確には何なのかという疑問が生じます。展開環境が複雑な場合、またはユーザーがアプリケーションの複数のインスタンスを使用している場合、これは脆弱なソリューションになる可能性があります。
状態を返す - 質問が示すように、サーバーがクライアントを信頼できると確信していない限り、セキュリティ上の問題が発生する可能性があります。暗号化技術を使用して、状態オブジェクトが変更されていないことを確認できますが、潜在的に敵対的なクライアントに機密データを提供しない方がはるかに安全です。これが役立つ可能性がある別の状況は、クライアントが状態を変更することを許可されている場合、またはクライアントが変更しても害がない場合です。システムへのクライアント アクセスが常に Web 層を介する場合、これはセッション状態を保存するのに適した場所です。Web 層とアプリケーション層は、状態オブジェクトを安全に交換できます。
データベースから状態をリロードすることは、おそらく最も一般的に適用可能なアプローチです。エンティティ Bean またはオブジェクト リレーショナル マッピング ライブラリを使用すると、サーバーはデータベース クエリの数を減らすことができるはずです。