セション同期機能によって、クライアントからセションBeanを呼び出す時に、クライアントのセションクラスが持つ情報と、セションBeanのセションクラスが持つ情報を互いに自動的に転送させることができます。
セションBeanを呼び出した時に、クライアントのセションクラスが持つ情報は、セションBeanに転送されてセションクラスにセットされます。セションBeanの呼び出しが終了するときに、セションBeanのセションクラスが持つ情報は、クライアントに転送されセションクラスにセットされます。
セション同期機能を使用するには、クライアントのセションクラスとセションBeanのセションクラスを次のように作成してください。
クライアントのセションクラス
ユーザ定義のセションクラスを作成し、セションクラスにcom.fujitsu.uji.ejb.SynchronizedDataHolderインタフェースを実装して、getSynchronizedDataメソッドとsetSynchronizedDataメソッドを作成します。getSynchronizedDataメソッドでは、クライアントからセションBeanへ転送させたいオブジェクトを返却するように作成してください。setSynchronizedDataメソッドは、セションBeanから受け取ったオブジェクトをセションクラスにセットするときに呼び出されます。引数のオブジェクトをセションクラスに保持するように作成してください。以下は記述例です。
import com.fujitsu.uji.ejb.SynchronizedDataHolder; public class MyHttpSession extends HttpSessionProfile implements SynchronizedDataHolder { protected MySyncObject syncData; public Object getSynchronizedData() { return syncData; } public void setSynchronizedData(Object data) { syncData = data; } }
セションBeanのセションクラス
ユーザ定義のセションクラスを作成し、クライアントのセションクラスと同様にgetSynchronizedDataメソッドとsetSynchronizedDataメソッドをオーバーライドして作成します。getSynchronizedDataメソッドでは、セションBeanからクライアントへ転送させたいオブジェクトを返却するように作成してください。setSynchronizedDataメソッドは、クライアントから受け取ったオブジェクトをセションクラスにセットするときに呼び出されます。引数のオブジェクトをセションクラスに保持するように作成してください。セションBean用のセションクラスであるEJBSessionProfileクラスのimplements節には com.fujitsu.uji.ejb.SynchronizedDataHolderインタフェースを宣言してあるため、ユーザ定義クラスでSynchronizedDataHolderをimplements節に加える必要はありません。
クライアントとセションBeanの間で転送されるデータはRMI over IIOPの規約に従っている必要があります。この規約については“24.3.6 EJBの引数や返却値として使用可能なオブジェクト”を参照してください。