Apdesigner プログラマーズガイド |
目次 索引 |
第2部 アプリケーション開発編 | > 第4章 Webサービスアプリケーションを開発する | > 4.3 留意事項 |
サービスエンドポイントインタフェースを作成する場合の留意事項を示します。
サービスエンドポイントインタフェースは、java.rmi.Remoteを継承する必要があります。
サービスエンドポイントインタフェースに宣言するメソッドは、必ずjava.rmi.RemoteExceptionをthrowするように宣言する必要があります。
Webサービスでは、Javaで以下のデータ型について受け渡しをすることができます。
ユーザ定義クラス型のメンバとして配列を使うこともできます。また、ユーザ定義クラス型の配列をデータ型として使用することもできます。
style属性/use属性にRPC/LITERALを指定する場合には、プリミティブ型のラッパークラス型は使用できません。
Webサービスでは、メソッドの復帰値以外でもサーバからクライアントに値を返信することができます。値をサーバから返信するのみのパラメタをoutパラメタといい、値をクライアントから送信し、サーバから返信するパラメタをinoutパラメタといいます。
サービスエンドポイントインタフェース上では、out/inoutパラメタの区別はなく、どちらもHolderクラスを使用します。
プリミティブ型やそのラッパークラス型、標準クラス型には、javax.xml.rpc.holders パッケージに以下のクラス名で標準のHolderクラスが提供されていますので、これらのHolderクラスを使用します。
StringHolder, BooleanHolder, BooleanWrapperHolder, ByteHolder, ByteWrapperHolder, DoubleHolder, DoubleWrapperHolder, FloatHolder, FloatWrapperHolder, IntHolder, IntegerWrapperHolder, LongHolder, LongWrapperHolder, CalendarHolder, QNameHolder, ShortHolder, ShortWrapperHolder, BigDecimalHolder, BigIntegerHolder, ByteArrayHolder
style属性/use属性にRPC/LITERALを指定する場合には、プリミティブ型のラッパークラス型は使用できません。
そのため、XxxxxWrapperHolderクラスも使用できません。
ユーザ定義クラス型や配列型など、標準でHolderクラスが提供されていない場合、固有のHolderクラスを用意して使用します。
【Holderクラスの定義例(内容型がcom.example.Personクラスの場合)】
package com.example.holders; final public class PersonHolder implements javax.xml.rpc.holders.Holder { public com.example.Person value; public PersonHolder() {} public PersonHolder(com.example.Person initial) { value = initial; } }
Webサービスでは、メソッドから例外を返すことができます。
ただし、構造体型・Bean型と同様に、使用可能な型でかつクラス内のメンバ(構造体の場合publicインスタンスフィールド、Bean型の場合JavaBeansのget/setメソッドで表現されるプロパティ)のみ、情報の受渡しが行われます(Throwable.getCause()で取得できる原因を表す例外などは受け渡しが行われません)。
目次 索引 |