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;
   }

}