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

SOAPサービスを利用するクライアント側の処理を実装します。クライアント側の処理では,生成されたスタブのうち,UserInfoServiceLocator.javaおよびUserInfo.javaを利用します。スタブの内容および実装方法については,「3.7.1 スタブの使用」を参照してください。

ここでは,クライアント側の処理の実装例として,社員番号を入力とし,結果を標準出力に出す場合の例を示します。

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
{
   private static final String CONTENT_TYPE = "text/html; charset=Shift_JIS";

   // クライアント識別子
   private ClientID cltID = null;
   public void init() throws ServletException
   {
       // SOAPクライアントの開始
       cltID = Management.initializeClient();
   }

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

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

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

       UserInfo ui = null;
       UserData ud = null;
       UserInfoServiceLocator uis = new UserInfoServiceLocator();
       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();
       // ブラウザに表示する内容を設定

       // クライアント識別子と実行スレッドの関連づけを解除する
       Management.disconnectClientIDtoCurrentThread(cltID);
   }

   public void destroy()
   {
       // SOAPクライアントの終了
       Management.finalizeClient(cltID);
   }
}