サービス コントロールをカスタマイズする : XML マップで Java から XML への変換を定義する
このトピックでは、サービス コントロールのデフォルト動作を変更するための CTRL ファイルのカスタマイズについて説明します。
コントロールの詳細については、コントロール : Web サービスからリソースを使用するを参照してください。
サービス コントロールの詳細については、サービス コントロール : 他の Web サービスを使用するを参照してください。
サービス コントロールのカスタマイズの詳細については、サービス コントロールをカスタマイズする : 概要を参照してください。
サービス コントロールのクライアントに公開される 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 メソッドのマップ アイコン(太い矢印)をダブルクリックします。