| Interstage Application Server SOAPサービス ユーザーズガイド |
目次
索引
![]()
|
| 第8章 サポートされるデータ型 | > 8.1 XMLとJavaのデータ型マッピング |
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> |

以下のように、各メンバを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(); //値の取得 |
この表では、Bean型として定義した任意のクラスを“Bean型”、 Bean型の値を保持するHolderクラスを“Bean型Holder”として記述しています。
|
クラス名 |
メソッド名 |
説明 |
|---|---|---|
|
Bean型Holder(Bean型として定義した任意のクラスのHolder) |
public Bean型value |
インスタンスフィールド。 |
|
public Bean型Holder (Bean型 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クライアントアプリケーションに返却しています。

目次
索引
![]()
|