Hitachi

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


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

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

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

package com.sample;
 
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Action;
import javax.xml.ws.FaultAction;
 
@WebService(name = "AddNumbers", targetNamespace = "http://sample.com/")
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
interface AddNumbers {
 
    @Action(input = "http://sample.com/input",
            output = "http://sample.com/output")
    public int add(int number1, int number2) throws AddNumbersFault;
 
    public int add2(int number1, int number2) throws AddNumbersFault;
 
    @Action(input = "http://sample.com/input3",
            output = "http://sample.com/output3",
            fault = {@FaultAction(className = AddNumbersFault.class, value = "http://sample.com/fault3")})
    public int add3(int number1, int number2) throws AddNumbersFault;
}

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

次に,SEIを実装したWebサービスの本体を作成します。ここでは,受け取った要求メッセージの内容を計算して応答メッセージとして返すWebサービス実装クラスcom.sample.AddNumbersImplを作成します。

Webサービスの本体の作成例を次に示します。

package com.sample;
 
import javax.jws.WebService;
import javax.xml.ws.soap.Addressing;
 
@Addressing
@WebService(endpointInterface = "com.sample.AddNumbers")
public class AddNumbersImpl implements AddNumbers {
 
    public int add(int number1, int number2) throws AddNumbersFault {
        return impl(number1, number2);
    }
 
    public int add2(int number1, int number2) throws AddNumbersFault {
        return impl(number1, number2);
    }
 
    public int add3(int number1, int number2) throws AddNumbersFault {
        return impl(number1, number2);
    }
 
    int impl(int number1, int number2) throws AddNumbersFault {
        if (number1 < 0 || number2 < 0) {
            throw new AddNumbersFault("Negative numbers can't be added!",
                                      "Numbers: " + number1 + ", " + number2);
        }
        return number1 + number2;
    }
}

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

また,com.sample.AddNumbersImplクラスでスローしている例外クラスcom.sample.AddNumbersFaultを作成します。

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

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

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