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クライアントアプリケーションに返却しています。
目次 索引 |