特定の形式の受信 XML メッセージを処理するには

Web サービスが特定の受信 XML メッセージ形式を処理する必要がある場合、その受信メッセージと、メソッドが期待する Java パラメータの間の変換レイヤとして XML マップを作成できます。XML マップは、開発する Web サービスがユーザ側で制御できない形式のメッセージに応答する必要がある場合に特に役立ちます。XML マップを使用すると、コードを変更せずにこれらのメッセージを処理できます。

最も単純な例では、マップする XML 要素値に対して置換ディレクティブ({} など)を使用してこのマッピングを指定します。次の例では、宣言内のパラメータが要素値と属性値にマップされます。

/**
 * @jws:operation
 * @jws:parameter-xml xml-map::
 *   <searchRequest>
 *     <partName partID="{serialNumber}">{productName}</partName>
 *     <number>{quantity}</number>
 *   </searchRequest>
 * ::
 */
public String searchRequest (String productName, String serialNumber, int quantity)

注意 : XML マップの基礎については、XML マップを使用する理由を参照してください。

受信メッセージがどのように Web サービスに到着するかによって、XML メッセージを Java メソッドのパラメータに変換するマップを作成します。次に、受信 XML メッセージが Web サービスに到着する 4 つのケースを示し、それぞれのケースでどの種類のマップを使用する必要があるのかを説明します。

注意 : このトピックで説明する受信メッセージ ソースに対しては、それぞれ関連する送信メッセージ ソースが存在します。マップによる送信メッセージ形式の処理については、送信 XML メッセージを特定の形式に適合させるにはを参照してください。

受信メッセージは、以下のソースから受け取ります。

Web サービスのメソッドの parameter-xml マップを使用します。受信 XML メッセージのデータは、メソッドのパラメータの Java 型にマップできます。

コントロールのコールバックの parameter-xml マップを使用します。Web サービスがコールバック ハンドラを実装する場合、そのコントロールからの XML 入力をコールバック ハンドラ Java 関数のパラメータにマップする必要があります。

注意 :コントロールに関連付けられているマップを編集する場合、そのコントロールを定義する CTRL ファイルを修正します。CTRL ファイルは、他の Web サービスによって使用される場合があります。他の Web サービスに影響を与えずにコントロールのマップを編集するには、共有されないコントロールを新しく作成する必要があります。

コールバックの詳細については、コールバックを使用してイベントのクライアントに通知するを参照してください。

コントロール メソッドの return-xml マップを使用します。Web サービスがコントロールのメソッドを呼び出す場合、返される XML メッセージを Java 戻り値型にマップする必要があります。

注意 :コントロールに関連付けられているマップを編集する場合、そのコントロールを定義する CTRL ファイルを修正します。CTRL ファイルは、他の Web サービスによって使用される場合があります。他の Web サービスに影響を与えずにコントロールのマップを編集するには、共有されないコントロールを新しく作成する必要があります。

Web サービスからクライアントへのコールバックの return-xml マップを使用して、呼び出しから返された XML メッセージをこのコールバックの Java 戻り値型にマップします。

実際には、メッセージのソースに関係なくほぼ同じ方法で(同じ構文とタグを使用して) XML マップを適用します。[マップおよびインタフェースの編集] ダイアログを使用すると、XML マップを簡単に作成できます。

詳細については、[マップおよびインタフェースの編集] ダイアログで XML マップを追加または編集するにはを参照してください。

Related Topics

XML マップを使用する理由

送信 XML メッセージを特定の形式に適合させるには

[マップおよびインタフェースの編集] ダイアログで XML マップを追加または編集するには

コールバックを使用してイベントのクライアントに通知する