Hitachi

Cosminexus V11 アプリケーションサーバ Webサービス開発ガイド


33.3.1 Webサービス実装クラスを作成する

Webサービスの処理を記述したWebサービス実装クラスを作成します。ここでは,受け取った要求メッセージの内容を計算して,応答メッセージを返すWebサービス実装クラスを作成します。

Webサービス実装クラスの作成例を次に示します。

package com.sample;
 
 
import javax.activation.DataHandler;
import javax.jws.WebService;
import javax.xml.ws.soap.MTOM;
import javax.xml.bind.annotation.XmlMimeType;
import com.sun.xml.ws.developer.StreamingAttachment;
import com.sun.xml.ws.developer.StreamingDataHandler;
 
@MTOM
@StreamingAttachment(dir="C:/TMP", parseEagerly=true, memoryThreshold=50000L)
@WebService(serviceName="UserInfoService",targetNamespace="http://sample.com")
public class UserInfoImpl {
 
    public UserData getUserData(String in0, @XmlMimeType("application/octet-stream")DataHandler in1)
        throws UserInfoException {
 
        if (in1 != null) {
            if (in1 instanceof StreamingDataHandler) {
                StreamingDataHandler sdh = null;
                try {
                    //社員情報への顔写真の登録処理
                    sdh = (StreamingDataHandler)in1;
                    ・・・・
                } catch(Exception e) {
                    throw new UserInfoException("Exception occurred.", e.getMessage());
                } finally {
                    try {
                        if (sdh != null) {
                            //データのクローズ
                            sdh.close();
                        }
                    } catch(Exception ex) {
                        ・・・・
                    }
                }
            }
        }
 
        UserData userdata = new UserData();
        //登録した社員の名前と所属を設定
        if (in0.equals("1")) {
            userdata.setName("Sato Taro");
            userdata.setSection("The personnel section");
        } if ( ・・・・) {
            ・・・・・
        } ・・・・
 
        //登録確認メッセージを設定
        if (in1 == null) {
            userdata.setMessage("Failure(no image).");
        } else {
            userdata.setMessage("Success.");
        }
        return userdata;
    }
}

作成したUserInfoImpl.javaは,UTF-8形式でc:\temp\jaxws\works\streaming\server\src\com\sample\ディレクトリに保存します。

また,com.sample.UserInfoImplで使用しているユーザ定義型クラスcom.sample.UserDataを作成します。通常,ユーザ定義型クラスの作成は任意ですが,ここではユーザ定義型クラスを作成します。

ユーザ定義型クラスの作成例を次に示します。

package com.sample;
 
import java.lang.String;
 
public class UserData {
 
    private String message;
    private String name;
    private String section;
 
    public UserData() {
    }
 
    public String getMessage() {
        return this.message;
    }
 
    public void setMessage(String message) {
        this.message = message;
    }
    public String getName() {
        return this.name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getSection() {
        return this.section;
    }
 
    public void setSection(String section) {
        this.section = section;
    }
}

作成したUserData.javaは,UTF-8形式で,c:\temp\jaxws\works\streaming\server\src\com\sample\ディレクトリに保存します。

またcom.sample.UserInfoImplでスローしている例外クラスcom.sample.UserInfoExceptionを作成します。通常,例外クラスの作成は任意ですが,ここでは例外クラスを作成します。

例外クラスの作成例を次に示します。

package com.sample;
 
import java.lang.Exception;
import java.lang.String;
 
public class UserInfoException extends Exception {
 
    String detail;
 
    public UserInfoException(String message, String detail) {
        super(message);
        this.detail = detail;
    }
 
    public String getDetail() {
        return detail;
    }
}

作成したUserInfoException.javaは,UTF-8形式でc:\temp\jaxws\works\streaming\server\src\com\sample\ディレクトリに保存します。