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