7.3.1 Webサービス実装クラスを作成する
Webサービスの処理を記述したWebサービス実装クラスを作成します。ここでは,受け取った要求メッセージの内容を計算して,応答メッセージを返すWebサービス実装クラスを作成します。
SOAP 1.1の場合のWebサービス実装クラスの作成例を次に示します。作成したAddNumbersImpl.javaは,UTF-8形式でc:\temp\jaxws\works\annotations\server\src\com\sample\ディレクトリに保存します。
package com.sample; @javax.jws.WebService(name = "TestJaxWs", targetNamespace = "http://example.org/sample", serviceName = "TestJaxWsService", portName = "testJaxWs") @javax.xml.ws.BindingType(javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING) @javax.jws.soap.SOAPBinding(style = javax.jws.soap.SOAPBinding.Style.DOCUMENT, use = javax.jws.soap.SOAPBinding.Use.LITERAL) public class AddNumbersImpl{ @javax.jws.WebMethod(operationName = "jaxWsTest1") @javax.jws.WebResult(name = "return") public int add( @javax.jws.WebParam(name="num1")int number1, @javax.jws.WebParam(name="num2")int number2 ) throws AddNumbersFault{ if( ( number1 < 0 ) || ( number2 < 0 ) ){ throw new AddNumbersFault( "Negative number cannot be added!", "Numbers: " + number1 + ", " + number2 ); } return number1 + number2; } }
また,com.sample.AddNumbersImplでスローしている例外クラスcom.sample.AddNumbersFaultを作成します。通常,例外クラスの作成は任意ですが,ここでは例外クラスを作成します。
例外クラスの作成例を次に示します。作成したAddNumbersFault.javaは,UTF-8形式で,c:\temp\jaxws\works\annotations\server\src\com\sample\ディレクトリに保存します。
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; } }
SOAP 1.2の場合のWebサービス実装クラスの作成例を次に示します。
package com.sample; @javax.jws.WebService(name = "TestJaxWs", targetNamespace = "http://example.org/sample", serviceName = "TestJaxWsService", portName = "testJaxWs") @javax.xml.ws.BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING) @javax.jws.soap.SOAPBinding(style = javax.jws.soap.SOAPBinding.Style.DOCUMENT, use = javax.jws.soap.SOAPBinding.Use.LITERAL) public class AddNumbersImpl{ @javax.jws.WebMethod(operationName = "jaxWsTest1") @javax.jws.WebResult(name = "return") public int add( @javax.jws.WebParam(name="num1")int number1, @javax.jws.WebParam(name="num2")int number2 ) throws AddNumbersFault{ if( ( number1 < 0 ) || ( number2 < 0 ) ){ throw new AddNumbersFault( "Negative number cannot be added!", "Numbers: " + number1 + ", " + number2 ); } return number1 + number2; } }