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); } }