Sun Java System Application Server Enterprise Edition 8.2 トラブルシューティングガイド

JAX-RPC 内のセッションをどのように維持できますか ?

JAX-RPC エンドポイントを持つセッションをクライアントで維持することはできません。セッションにはクライアント/サーバーの側面があるため、これを設定する明確な方法はありません。

考えられるのは、クライアントがサービスの呼び出しを行い、サーバーが応答して接続上に Cookie を設定するという方法です。それ以降、クライアントは呼び出しのたびにその同じ Cookie を送り返し、サーバーでそれをチェックすることが可能になります。

Cookie が送り返されても、通常、JAX-RPC スタブには影響を与えません。SESSION_MAINTAIN_PROPERTYtrue に設定すると、サーバーでスタブに設定したすべての Cookie が送り返されます。

サーバー側では、使用するクラスに 1 つのフィールドを追加し、そのフィールドを設定するメソッドを追加する必要があります。エンドポイントでは javax.xml.rpc.server.ServiceLifecycle. を実装し、さらに 2 つのメソッドdestroy() (空でも可) および init(Object context) を追加する必要があります。

エンドポイントに ServletEndpointContext オブジェクト、たとえば、myServletEndpointContext を追加します。init(Object context) メソッドは次のように設定できます。

myServletEndpointContext = (ServletEndpointContext) context;

これで、ビジネスメソッドから myServletEndpointContext.getHttpSession() を使用して HttpSession にアクセスできます。getHttpSession の最初の呼び出しで、セッションが存在していない場合はセッションが作成されます。

このモデルでは、クライアントから呼び出す任意のメソッドで、セッションの取得、セッション属性の設定、セッションからの値の取得などを行うことができます。この時点以降、クライアントから同じ Cookie 情報が送り返されます。

HttpSession オブジェクトの詳細については、http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/http/HttpSession.html を参照してください。