4.3.7 クライアント側の処理を実装する

実装用の新規クラスを作成し,クライアント側の処理を実装します。次に,クライアント側の処理の実装例を示します。

package userinfo;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import com.cosminexus.cws.management.*;

public class RPCSampleClient extends HttpServlet
{
   private static final String CONTENT_TYPE = "text/html; charset=Shift_JIS";
   private ClientID cltID = null;
   public void init() throws ServletException
   {
       cltID = Management.initializeClient();
   }

   public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
   {
       // クライアントIDとスレッドの関連づけを行なう
       Management.connectClientIDtoCurrentThread(cltID);

       // ブラウザからパラメタの取得
       String strUserNo = request.getParameter("UserNo");

       if (strUserNo == null) {
           strUserNo = "";
       }

       SLBUserInfo ui = null;
       UserData ud = null;

       SLBUserInfoServiceLocator uis = new SLBUserInfoServiceLocator();

       try
       {
           ui = uis.getUserInfo();
       }
       catch (javax.xml.rpc.ServiceException e)
       {
           // エラー処理を記述
       }

       try
       {
           ud = ui.getUserData(strUserNo);
       }
       catch (java.rmi.RemoteException e)
       {
           // エラー処理を記述
       }

       response.setContentType(CONTENT_TYPE);
       PrintWriter out = response.getWriter();
       // ブラウザに表示する内容を設定

       try
       {
           //EJBオブジェクトの削除
           ui.remove();
       }
       catch (java.rmi.RemoteException e)
       {
           // エラー処理を記述
       }
       // クライアントとスレッドの関連づけを解除する
       Management.disconnectClientIDtoCurrentThread(cltID);
   }

   public void destroy()
   {
       Management.finalizeClient(cltID);
   }
}

注※
ui.remove(EJBオブジェクトの削除)の呼び出し処理は,DeployScopeが「Session」のSOAPサービスを呼び出すクライアントの,セッションを終了したい個所に実装してください。