サービス コントロールをカスタマイズする : XML マップで Java から XML への変換を定義する

このトピックでは、サービス コントロールのデフォルト動作を変更するための CTRL ファイルのカスタマイズについて説明します。

コントロールの詳細については、コントロール : Web サービスからリソースを使用するを参照してください。

サービス コントロールの詳細については、サービス コントロール : 他の Web サービスを使用するを参照してください。

サービス コントロールのカスタマイズの詳細については、サービス コントロールをカスタマイズする : 概要を参照してください。

XML マップをサービス コントロールのメソッドに追加する

サービス コントロールのクライアントに公開される Java インタフェースと、対象のWeb サービスに送信される XML メッセージとの関係を変更することができます。以下の例は、QuoteClient.jws サンプルで使用する QuoteServiceControl.ctrl サンプル サービスから抜き出したものです。

最初、QuoteServiceControl.ctrl は QuoteService.jws から生成されます。生成後、getQuote の最初のパラメータが Java シグネチャから削除されました。つまり、このサービス コントロールを使用する呼び出し側 Web サービスがそのパラメータを渡すことは想定されていません。次に、<customerID> 要素の値をハードコード化して、XML マップが getQuote に追加されています。これにより、メッセージの形式は QuoteService で想定しているとおり、2 つのパラメータを持つことになります。呼び出し側サービスは 1 つのパラメータを渡し、サービス コントロールがそのパラメータとハードコード化されたパラメータを組み合わせて、対象のサービスが想定している 2 つのパラメータを持つメッセージを生成します。

QuoteService.jws から生成されたままのコードを以下に示します。getQuote が 2 つのパラメータを取ることに注意してください。

import weblogic.jws.control.ServiceControl;
/**
 * @jws:location http-url="QuoteService.jws" jms-url="QuoteService.jws"
 * @jws:wsdl file="#QuoteServiceWsdl"
 */
public interface QuoteServiceControl extends ServiceControl
{
    public interface Callback
    {
        /**
         * @jws:conversation phase="finish"
         */
        public void onQuoteReady (java.lang.String tickerSymbol, double dQuote);
    }
    /**
     * @jws:conversation phase="start"
     */
    public void getQuote (int customerID String tickerSymbol);
}

CTRL ファイルを手動で変更した後のコードを以下に示します。customerID パラメータがメソッド シグネチャから削除されており、手動で追加された XML マップにハードコード化されています。XML マップは、対象の Web サービスのコントラクトに準拠していなければなりません。

import weblogic.jws.control.ServiceControl;
/**
 * @jws:location http-url="QuoteService.jws" jms-url="QuoteService.jws"
 * @jws:wsdl file="#QuoteServiceWsdl"
 */
public interface QuoteServiceControl extends ServiceControl
{
    public interface Callback
    {
        /**
         * @jws:conversation phase="finish"
         */
        public void onQuoteReady (java.lang.String tickerSymbol, double dQuote);
    }
    /**
     * @jws:conversation phase="start"
     * @jws:parameter-xml xml-map::
     *  <getQuote xmlns="http://www.openuri.org/">
     *      <customerID>1234567890</customerID>
     *      <tickerSymbol>{tickerSymbol}</tickerSymbol>
     *  </getQuote>::
     */
    public void getQuote (String tickerSymbol);
}

メソッド シグネチャと XML マップを変更するには、[マップおよびインタフェースの編集] ダイアログを使用する方法もあります。ダイアログにアクセスするには、デザイン ビューで QuoteClient.jws を編集する際に getQuote メソッドのマップ アイコン(太い矢印)をダブルクリックします。

関連トピック

XML マップを使用して XML メッセージを処理および成形する

QuoteClient.jws サンプル