Interstage Application Server SOAPサービス ユーザーズガイド
目次 索引 前ページ次ページ

第8章 サポートされるデータ型> 8.1 XMLとJavaのデータ型マッピング

8.1.4 Bean型

 Bean型は、任意の数のデータ(メンバといいます)をプロパティとして持つ、構造体に類似したデータ型です。持つことのできるデータの数や型は、アプリケーション開発者が自由に定義できます。
 Bean型では、set/getメソッドを提供することでメンバを定義します。
 また、set/getメソッドで定義するメンバのほかに、構造体と同様にpublicインスタンスフィールドを提供することでもメンバを定義することもできます。

XMLのデータ型

RPCアプリケーションのパラメタ(Javaのデータ型クラス)

inまたはreturn

outまたはinout

構造体

Bean型として定義した任意のクラス

Bean型として定義した任意のクラス

 メンバとしてstring型のname、およびint型のageを持つXMLの構造体のWSDL定義は以下のようになります。

 <complexType name="Human">
   <sequence>
     <element name="name" type="xsd:string "/>
     <element name="age" type="xsd:int"/>
   </sequence>
 </complexType>

【in/return】

 以下のように、各メンバをpublicフィールドまたは、set/getメソッドとして持つpublicクラスを定義し、それをBean型として使用します。

 package パッケージ名
 public classs Bean型名{
   //public デフォルトコンストラクタ
   public Bean型名(){};

   //プロパティ(インスタンスフィールドとして表すもの)
   public プロパティのデータ型 プロパティ名;
        :

   //プロパティ(set/getメソッドとして表すもの)
   public void setプロパティ名(プロパティのデータ型 値){  }
   public プロパティのデータ型 getプロパティ名(){  }
        :
 }

 
 Bean型の定義例

 package fujitsu.sample;   // パッケージ名
 public class HumanBean {
   // public デフォルト(パラメタなし)コンストラクタ
   public HumanBean() { name="nobody"; _age = 0; }
   public HumanBean(String name, int age){   // コンストラクタ(省略可)
     this.name=name;
     _age=age;
   }

   // String型 nameプロパティ(インスタンスフィールドとして表す)
   public String name;

   // int型 ageプロパティ(set/getメソッドとして表す)
   public void setAge(int age) { _age = age; }
   public int getAge() { return _age; }
   private int _age;   //privateのため、メンバとして直接参照されない

 }

 Bean型のメンバの値を参照・代入する場合、構造体として使用するクラスのインスタンスのフィールドを参照・代入してください。

 
 Bean型の使用例

 HumanBean person = new HumanBean();  //宣言・new
     :
 person.name = "John";  //値のセット
 person.setAge(25);     //値のセット
     :
 String nameOfCustomer = person.name;  //値の取得
 int ageOfCustomer = person.getAge();    //値の取得

【out/inout】

 この表では、Bean型として定義した任意のクラスを“Bean型”、 Bean型の値を保持するHolderクラスを“Bean型Holder”として記述しています。

クラス名

メソッド名

説明

Bean型Holder(Bean型として定義した任意のクラスのHolder)

public Bean型value

インスタンスフィールド。
インスタンスが現在保持している構造体の値です。

public Bean型Holder (Bean型 initial)

コンストラクタ。
valueフィールドとしてinitialを持つインスタンスを作成します。

 Bean型をRPCサーバアプリケーションのメソッドのinout/outパラメタとして使用する場合、パラメタのデータ型としてBean型Holder を使用します。RPCサーバアプリケーションのメソッドでは、パラメタとして受け取るBean型Holderのインスタンスのvalueフィールドを更新します。これにより、更新されたBean型データがRPCクライアントアプリケーションへ送信されます。

 
 RPCサーバアプリケーションでBean型をinoutパラメタとして使用する例

 //RPCサーバアプリケーションのメソッド
 public void server_method(HumanBeanHolder person){// Bean型はパラメタ情報としてWebサービス・マネージャに登録する。
   person.value.setAge() = person.value.getAge()+1; //受け取ったBean型のメンバを直接更新する場合
   person.value = new HumanBean(person.value.name, (person.value.getAge()+1)); // 新たにBean型を作成する場合
 }

 上記の例のサーバメソッドは、inoutパラメタであるpersonに、RPCクライアントアプリケーションから送信されたHumanBean型のデータが保持されて呼び出されます。メソッドの処理のあと、personに保持されているHumanBean型のデータがRPCクライアントアプリケーションに送信されます。この例では、2通りの方法で、サーバメソッドが受け取ったデータのメンバageに1を加算した(つまり2が加算されます)HumanBean型のデータをRPCクライアントアプリケーションに返却しています。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005