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\ディレクトリに保存します。