Hitachi

Cosminexus V11 アプリケーションサーバ SOAPアプリケーション開発の手引


3.11.8 DeployScopeを「Session」にしたSOAPアプリケーションに関する注意

DeployScopeを「Session」にしたSOAPアプリケーションを開発する場合,SOAP通信基盤に対してセッション終了を要求するサービスメソッドを用意できます。このサービスメソッド内でSOAP通信基盤が提供する「C4Sessionのinvalidateメソッド」を呼び出すことで,SOAP通信基盤に対してセッション終了を要求できます。クライアント側の処理では,セッション終了を希望するタイミングでこのサービスメソッドを呼び出してください。

SOAPアプリケーションのインタフェースの例を次に示します。

package localhost;
 
public interface UserInfo extends java.rmi.Remote {
    // サービスメソッド
    localhost.UserData getUserData(java.lang.String user_no) throws java.rmi.RemoteException;
 
    // セッション終了用サービスメソッド
    public void endSession() throws java.rmi.RemoteException;
}

サービス側の処理の実装例を次に示します。

package localhost;
 
public class UserInfoSoapBindingImpl implements localhost.UserInfo {
    // サービスメソッド
    public localhost.UserData getUserData(java.lang.String user_No) throws java.rmi.RemoteException {
        // サービスメソッド実装を記述
    }
 
    // セッション終了用サービスメソッド
    public void endSession() throws java.rmi.RemoteException {
        // セッション終了時の処理を記述
 
        // セッション終了要求を通知するAPIを使用する
        try {
            C4Session session = C4Session.getInstance();
            if (session != null) {
                session.invalidate();
            }
        }
        catch (java.lang.RuntimeException e) {
            // エラー処理
        }
    }
}

クライアント側の処理の実装例を次に示します。

package localhost;
 
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import com.cosminexus.cws.management.*;
 
public class RPCSampleClient extends HttpServlet
{
 
    ...
 
    // サービスのインタフェースクラスのオブジェクトを生成
    UserInfoServiceLocator uis = new UserInfoServiceLocator();
 
    // スタブのインタフェースクラスのオブジェクトを生成
    UserInfo ui = uis.getUserInfo();
 
    // サービスメソッドを呼び出す
    UserData ud1 = ui.getUserData(strUserNo1); // セッション開始
    UserData ud2 = ui.getUserData(strUserNo2); // セッション継続
 
    // セッション終了用サービスメソッドを呼び出す
    ui.endSession(); // セッション終了要求
 
    ...
}