Hitachi

Cosminexus V11 アプリケーションサーバ SOAPアプリケーション開発の手引


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

SOAPサービスを利用するクライアント側の処理を実装します。

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

package localhost;
 
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import com.cosminexus.cws.management.*;
 
public class  RPCAttachmentsSampleClient 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
    {
        Management.connectClientIDtoCurrentThread(cltID);
 
       // ブラウザからパラメタの取得
        
        // 社員番号の取得
        String strUserNo = request.getParameter("UserNo");
        if (strUserNo == null) {
            strUserNo = "";
        }
        
 
        String strContextPath =
           (String)getServletConfig().getServletContext().getRealPath("/");
        String filepath = strContextPath + "attachment.txt";
        File imagefile = new File(filepath);
        FileDataSource fdSource = new FileDataSource(imagefile);
        DataHandler dhandler = new DataHandler(fdSource);
 
        
        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, dhandler);
        }
        catch (java.rmi.RemoteException e)
        {
            // エラー処理を記述
        }
 
        response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
        // ブラウザに表示する内容を設定
 
        Management.disconnectClientIDtoCurrentThread(cltID);
    }
 
    public void destroy()
    {
        Management.finalizeClient(cltID);
    }
}