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(); // セッション終了要求
...
}