ステートフル セッション Bean への参照を保存し、それをデータベースに保存するか、別の VM に転送したいと考えています。私が読んだ限りでは、EJB 2.x ではgetHandle()
. Glassfish 3.1.1 を使用して SFSB インスタンスをシリアル化しようとすると、次の例外が発生します。
java.io.NotSerializableException: com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate
さらに、SFSB ハンドルを取得する方法が見つかりませんでした。Bean がコンテナーによって適切に管理されている場合でも、SFSB SessionContext 内の EFBHome、EFBObject、EFBLocalHome へのすべての参照は null です。私が仕様を正しく理解していれば、EJB 3.1 ではハンドルは必要ないはずです。なぜなら、開発者は SFSB リファレンスを直接使用できるはずだからです。
この記事でも同じ問題を扱っていますが、推奨されている JavaEEObjectInputStream クラスの使用方法では、私のテストではメソッド readObject が公開されませんでした。このアプローチがどのように機能するのだろうか。
Glassfish で SFSB をシリアル化して参照を保存する良い方法を提案できる人はいますか? 私は HTTPSession への参照を添付したくありません (人々はどこでもこれを推奨しているので、私はこれを言っているだけです)。