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

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

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

package com.sample;

import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.bind.annotation.XmlAttachmentRef;
import javax.activation.DataHandler;

@javax.jws.WebService(serviceName="UserInfoService",targetNamespace="http://sample.com")
public class UserInfoImpl{

   public UserData getUserData( String in0,
       @XmlAttachmentRef javax.activation.DataHandler in1 )
   throws UserInfoException{
       //社員情報への顔写真の登録処理
       ・・・・

       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¥attachments¥server¥src¥com¥sample¥ディレクトリに保存します。

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

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

package com.sample;

public class UserData{

   private java.lang.String message;
   private java.lang.String name;
   private java.lang.String section;

   public UserData(){
   }

   public java.lang.String getMessage() {
       return this.message;
   }

   public void setMessage(java.lang.String message) {
       this.message = message;
   }

   public java.lang.String getName() {
       return this.name;
   }

   public void setName(java.lang.String name) {
       this.name = name;
   }

   public java.lang.String getSection() {
       return this.section;
   }

   public void setSection(java.lang.String section) {
       this.section = section;
   }
}

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

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

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

package com.sample;

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¥attachments¥server¥src¥com¥sample¥ディレクトリに保存します。