XML マップを使用する理由
WebLogic Workshop で構築した Web サービスは、XML メッセージを送受信することで通信します。デフォルトでは、WebLogic Server によって、「ナチュラル」マップ(Java 宣言の構成要素がメッセージの内容と一致するフォーマット)に基づいたそれらのメッセージと Java 宣言の型の間の変換が行われます。
ただし場合によっては、一致しないメッセージをサービスで送受信できるようにする必要があるかもしれません。
独自のマップを提供するのは、以下の 2 つの場合があります。
メッセージの受信側が特定のフォーマットを要求するため、送信するメッセージの形式を管理する必要がある
サービスのコードを変更することなく、特定の XML メッセージ形式の受信に対応する必要がある
たとえば、その XML メッセージ フォーマットが業界に特有のもので、サービスで処理できるものとは異なる潜在的なクライアントに対してアピールするようなサービスを構築する場合があります。その場合には、サービスに合わせてもらうのではなく、クライアントのフォーマットを処理することで、そのクライアントがサービスを利用しやすいようにする必要があります。独自の XML マップでナチュラル マッピングをオーバライドすると、実装コードを変更することなく、リクエスト メッセージのフォーマットを処理する変換レイヤを効果的に作成できます。
具体的には、XML マップを使用すると以下のことができます。
特定の XML 要素コンテンツと XML 属性値を Java メソッドのパラメータと戻り値にマッピングする
サービスのメソッド コード外部のスクリプトまたはマップに変換処理をリダイレクトして、ナチュラル マッピングと必要なフォーマットのより大きな違いを処理する
注意: Java 宣言のナチュラル マップを表示するには、デザイン ビューで Web サービスを開き、マップを表示するメソッド、コールバック、またはコールバック ハンドラをダブルクリックします。[デフォルト] オプションが選択されている [マップおよびインタフェースの編集] ダイアログでは、パラメータまたは戻り値のナチュラル マップを表示できます。サービスのこのメンバーによって送受信される XML メッセージがこのフォーマットと一致しない場合は、XML マップまたはスクリプトを使用してカスタム マップを作成する必要があります。
マッピングに使用される XML マップとスクリプトは同じ目標を達成しますが、マップはそれをより単純に行い、スクリプトはそれをより強力に行います。通常は、まずマップを使用することを考えます。[マップおよびインタフェースの編集] ダイアログでマップを作成し、XML メッセージの形式が Java 宣言の型とあまりにも異なる場合にスクリプトを組み込みます。スクリプトを使用するためには、ECMAScript 言語の知識も必要です。
マップはそれらがマッピングされるメッセージに似ているため、マップを使用することは、Java 宣言のどの部分がメッセージ フォーマットに対応するのかを表現する自然な方法に感じられます。マップを作成することは、別々につなぎ合わされたパズルの 2 つのセクションを並べ合わせることに少し似ています。
一方、マッピング用のスクリプトを作成することは、そうなるべきイメージに基づいて真新しいパズルを切り出し、そのピース 群を完全な形に組み合わせるようなものです。WebLogic Workshop で提供される ECMAScript 言語の拡張機能(XML をネイティブ データ型として処理する機能を含む)を使用すると、送信する XML メッセージをゼロから作成したり、他のデータ構造と同じように受信メッセージにアクセスしたりできます。ECMAScript は、マッピングのニーズすべてに対応できます。ECMAScript に精通している場合は、あらゆるケースでスクリプトを使用することができます。
マップの作成を開始する優れた方法の 1 つは、マップが対応するメッセージ フォーマットの XML スキーマ(または例)から始めることです。
メッセージ形式と Java 宣言がどのように互いに対応するのかを理解したら、XML マップの作成を開始することができます。実際には、ニーズがシンプルな場合は、[マップおよびインタフェースの編集] ダイアログで XML マップを追加または編集するにはで説明されているように、[マップおよびインタフェースの編集] ダイアログで XML マップの作成を開始するのが最も簡単です。ただし、特に Web サービスのニーズがより複雑になる場合には、マップの作成を始める前にいくつかの質問に答えておかなければなりません。
マップが Java ソース コードとインラインで実装されるのか、それともスタンドアロンのマップ ファイルとして実装されるのかを決める
XML マップをサービス クラスのソース コードとインラインで格納することは、編集の観点から便利です。マップを別のファイルに格納すると、他のメソッドだけでなく他の Web サービスでも再利用可能になります。インライン XML マップの実装の詳細については、[マップおよびインタフェースの編集] ダイアログで XML マップを追加または編集するにはを参照してください。スタンドアロン マップの作成の詳細については、再利用可能な XML マップを開始するにはを参照してください。
スクリプトで XML メッセージの形式を操作する必要があるかどうかを決める
特定の実装の Java タイプと XML メッセージの形式の違いがあまりにも大きい場合は、スクリプトで XML の形式を操作することなくマップを作成することはできません。XML メッセージの形式を操作する必要がある場合は、WebLogic Workshop が提供する ECMAScript 言語の拡張機能を使用すると、他のデータ構造と同じように XML ドキュメントを操作できます。詳細については、XML マップからスクリプト関数を使用するを参照してください。