ヘッダーをスキップ
Oracle Application Server Web Servicesアドバンスト開発者ガイド
10g(10.1.3.1.0)
B31869-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

3 Webサービスの管理

この章では、Oracle Application Server Web ServicesのWebサービス管理の概要を説明します。

Webサービス管理の概要

Webサービス管理は、ターゲットに送信中のメッセージに対して適用される一連のポリシーです。OracleAS Web Servicesの場合、メッセージはSOAPリクエスト、SOAPレスポンスおよびSOAP障害で、ターゲットはクライアントおよびサーバーのビジネス・ロジックです。OracleAS Web Servicesは、次に示す管理機能のポリシーをサポートしています。

図3-1に、クライアントからサーバーのビジネス・ロジックまでのSOAPリクエストの経路を示します。SOAPリクエストは、ケーブルで送信される前に、アウトバウンド・メッセージに対する管理の層を通り抜けてクライアントから渡されます。サーバーに到達すると、ビジネス・ロジックが使用する前に、リクエストはインバウンド・メッセージに対する管理構成の層を通過する必要があります。リクエストがサービス実装に到達する前に拒否されないよう、サーバー・サイドの管理に指定された値をクライアントの値と調整する必要があります。

同様に、サーバーのビジネス・ロジックからのレスポンスも逆のプロセスをたどります。レスポンスは、ケーブルで送信される前に、アウトバウンド・メッセージに対する管理の層を通過する必要があります。クライアントに到達すると、クライアントが使用する前に、レスポンスはインバウンド・メッセージに対する管理の層を通過する必要があります。

図3-1 管理が有効化されているWebサービスのメッセージ・フロー

WSMGMT data flow in the server.
「図3-1 管理が有効化されているWebサービスのメッセージ・フロー」の説明

図3-1に示されているように、Webサービス管理は個別の4つの構成で成り立っています。サーバーには、インバウンド・メッセージ(リクエスト)およびアウトバウンド・メッセージ(レスポンス)に対する別々の構成を設けることができます。クライアントには、アウトバウンド・メッセージ(リクエスト)およびインバウンド・メッセージ(レスポンス)に対する別々の構成を設けることができます。

これらの管理ポリシーは、Oracle JDeveloper内の事前デプロイで構成できます。デプロイ後、Oracle Application Server Control管理環境にポリシーを構成できます。


関連資料:

  • Oracle JDeveloperのオンライン・ヘルプ

  • Application Server Controlのオンライン・ヘルプの「Webサービス管理の概要」および「Webサービス管理機能の有効化および無効化」のトピックを参照してください。


Webサービス管理環境

図3-2に、管理環境を示します。主要な3つの製品コンポーネントによりこのソリューションが実現します。設計時はOracle JDeveloperまたはWebServicesAssembler、実行時はOracleAS Web Servicesリリース10.1.3.1、管理環境はOracle Application Server Controlです。

図3-2 サーバーにおけるWebサービス管理のデータ・フロー

図3-2の説明が続きます
「図3-2 サーバーにおけるWebサービス管理のデータ・フロー」の説明

次の手順は、図の番号に対応しています。

  1. 開発者がOracle JDeveloper、またはそれに対応するコマンドラインのWebServicesAssemblerを使用してWebサービスを作成し、実行時に適用されるWebサービス管理情報を構成します。

  2. Oracle JDeveloper(またはWebServicesAssembler)は、WebサービスのアセンブルおよびEnterprise Archive(EAR)へのパッケージ化にも使用できます。その他のWebサービス・アーティファクトの中では、EARにも管理ポリシーが記述されたoracle-webservices.xmlファイルが含まれます。このファイルは、Oracleインフラストラクチャへのアプリケーション・サーバー固有のバインディングです。oracle-webservices.xmlファイルは、プラットフォームに依存しないWebサービスの動作を定義する、標準のJAX-RPC webservices.xmlファイルの拡張とみなされます。

  3. OC4Jへのデプロイ時、oracle-webservices.xmlファイルのポリシーは、実行時のWebサービス管理ポリシー・ファイルwsmgmt.xmlに自動的にコピーされます。このファイルはORACLE_HOME\j2ee\OC4J_instance_name\config\wsmgmt.xmlにあります。ここで、ORACLE_HOMEはOC4Jのインストール・ディレクトリです。

  4. Application Server Controlは、wsmgmt.xmlの管理ポリシーをさらに操作するために使用できます。

  5. Webサービス・クライアントは、OC4Jランタイムを介してアプリケーション・サーバーと通信できます。

この図に示されているように、Webサービス管理の作成と管理は、Webサービス、ビジネス・ロジックおよびクライアント実装から完全に分離しています。管理構成は実装されたビジネス・ロジックとは無関係に変更でき、再デプロイの必要はありません。


注意:

EARを再デプロイすると、wsmgmt.xmlのポリシーに対するApplication Server Controlの変更内容は上書きされます。事実上、再デプロイはアンデプロイ後にデプロイするのと同じことです。Webサービスがアンデプロイされると、すべてのWebサービス管理構成がwsmgmt.xmlから削除されます。

サーバー・サイドのポリシー構成に加え、クライアント・サイドではサーバーと対称となるポリシー構成が必要になります。OC4Jにより、WSDLに記述されたサーバー・サイドのポリシーを、機能アサーションという形で保持するためのオプションが提供されます。WSDLにこの情報を記述することにより、一般に公開されているこの規約をクライアント生成ツールで調べることができます。ツールでは機能アサーションを使用して、クライアントとサーバーの通信を可能にする構成を作成するために、どのような情報を収集すればよいかを把握できます。


関連資料:

Webサービス管理構成をWSDLに追加する方法の詳細は、「機能アサーションの使用」を参照してください。


Webサービス管理のライフ・サイクル

Webサービス管理の重要な部分は、そのライフ・サイクルの管理です。これには、サービスの管理構成を有効化または無効化する機能が含まれます。Application Server Controlには、セキュリティ、信頼性、監査、ロギングを有効化および無効化する機能があります。Application Server Controlは、Webサービス全体を有効化または無効化する場合にも使用できます。


関連資料:

ライフ・サイクル管理の別の側面、特にデプロイおよびアンデプロイの詳細は、『Oracle Containers for J2EEデプロイメント・ガイド』を参照してください。


サーバーへの管理情報の追加方法

Webサービスのサーバー・サイドの管理情報の構成に使用できる技術は多数あります。たとえば、管理情報を既存のoracle-webservices.xmlファイルに手動で記述することや、Oracle JDeveloperまたはWebServicesAssemblerで処理を自動化することが可能です。Webサービスがすでにデプロイされている場合には、Application Server Controlを使用して管理オプションの多くを構成できます。次の項では、サーバー・サイドの管理情報を構成する方法をまとめます。

手動

  1. oracle-webservices.xsdスキーマを調べて、管理情報を既存のoracle-webservices.xmlファイルに手動で記述します。

  2. WebServicesAssemblerの適切な*Assembleコマンドを実行してWebサービスをアセンブルします。

    • ddFileName引数を使用して、変更されたoracle-webservices.xmlファイルを指定します。

    • Webサービスをボトムアップ方式で生成する場合は、オプションで、genQosWsdl引数を使用してWSDLに機能アサーションを挿入します。また、Webサービスをトップダウン方式で生成する場合にも、genQosWsdlを使用します。

  3. Webサービスをデプロイします。

JDeveloper

  1. Oracle JDeveloperのウィザードを使用してWebサービスを構成します。これにより、oracle-webservices.xmlファイルが作成されます。

  2. Oracle JDeveloperで適切なウィザードを実行して、Webサービスの管理情報を構成します。

  3. WSDLに機能アサーションを挿入する場合は、機能アサーションの追加オプションを選択します。

  4. Webサービスをデプロイします。

WebServicesAssembler

  1. WebServicesAssemblerのgenDDsコマンドを実行して、汎用のoracle-webservices.xmlファイルを作成します。

    この手順では、スケルトンのデプロイメント・ディスクリプタ・ファイルを作成します。このファイルには、管理構成情報は含まれません。ただし、ファイルの基本的な構造は保たれており、管理構成を配置する場所は示されています。

  2. oracle-webservices.xsdスキーマを調べて、管理情報を既存のoracle-webservices.xmlファイルに手動で記述します。

  3. 適切な*Assembleコマンドを実行してWebサービスをアセンブルします。

    • ddFileName引数を使用して、変更されたoracle-webservices.xmlファイルを指定します。

    • オプションで、genQosWsdl引数を使用してWSDLに機能アサーションを挿入します。

  4. Webサービスをデプロイします。

Application Server ControlおよびWebServicesAssembler

このシナリオでは、Oracle JDeveloperを使用せずにデフォルトのサーバー・サイド構成を確立することや、手動で構成を作成することが可能です。次の手順では、Application Server Controlを使用して、サーバー・サイドのデフォルトの管理構成を定義および移入する方法を説明します。その後、この構成をランタイム構成からデプロイ可能なEARファイルにコピーできます。

  1. WebServicesAssemblerの適切な*Assembleコマンドを実行してWebサービスを作成します。WebServicesAssemblerによって作成されたWebサービスには、明示的に記述していないかぎり、管理情報は含まれていないことに注意してください。

  2. 管理情報なしでWebサービスをデプロイします。デプロイすることにより、OC4Jにwsmgmt.xmlファイルが作成されます。

  3. Application Server ControlのWebサービス管理用の画面を使用して、サーバー・サイドのWebサービス管理オプションを構成します。これらの値はwsmgmt.xmlファイルに反映されます。

  4. wsmgmt.xmlファイルのWebサービス管理情報を、手順1で作成したoracle-webservices.xmlファイルにコピーします。

    1. wsmgmt.xmlファイルの<port>要素の下にある<runtime>要素および<operations>要素を検索します。<port>要素のport属性の値に注意してください。

    2. oracle-webservices.xmlファイルの<port-component>要素を検索します。この要素のname属性は、wsmgmt.xmlファイルの<port>要素のport属性と同じ値です。

    3. <runtime>要素、<operations>要素、およびwsmgmt.xmlファイルのそれらの子要素をすべてコピーします。

    4. それらの要素を手順4bで検索した<port-component>要素の子として、oracle-webservices.xmlファイルに貼り付けます。

    5. Webサービスとして公開する各ポートに対して、手順4aから4dを繰り返します。

  5. Webサービスに対して、適切な*Assembleコマンドを再実行します。

    • ddFileName引数を使用して、変更されたoracle-webservices.xmlファイルを指定します。

    • オプションで、genQosWsdlオプションを使用してWSDLに機能アサーションを挿入します。

  6. Webサービスを再デプロイします。

J2SEクライアントにおける管理情報の使用

この項の内容は、次のとおりです。

J2SEクライアントにおける管理情報のデータ・フローの概要

図3-3に、J2SEクライアント環境において、Webサービス管理情報が開発、送信および操作される状況の概要を示します。

図3-3 J2SEクライアントにおけるWebサービス管理のデータ・フロー

Web Services Management data flow in a J2SE client.
「図3-3 J2SEクライアントにおけるWebサービス管理のデータ・フロー」の説明

次の手順に、図3-3に示されているデータ・フローをまとめます。

  1. 開発者がクライアント・サイドの構成ファイルを作成します。これは、Oracle JDeveloperのウィザード、またはoracle-webservices-client-10_0.xsdスキーマを使用して手動で行われます。クライアント・サイドの構成ファイルには、セキュリティ、信頼性、および監査などのWebサービス管理機能のクライアント・サイドの構成が含まれます。(注意: クライアントではロギングは使用できません。)

  2. Oracle JDeveloperまたはWebServicesAssemblerを使用して、J2SEクライアントのJARファイルを生成します。WebServicesAssemblerを使用する場合は、genProxyコマンドのddFileName引数で構成ファイルを指定します。

    J2SEクライアントJARには次のファイルが含まれます。

    • プロキシ・クラス・ファイル: このファイルはサーバーに起動を送信できます。通常、このファイルの拡張子は<generated_name>_Stub.javaです。ここでgenerated_nameはWSDLのターゲット名前空間およびポート名から導出されます。

    • クライアント・サイドの構成ファイル: 通常このファイルは、プロキシ・クラス・ファイルと同じディレクトリに存在します。生成される名前はプロキシ・クラス・ファイルと同じですが、拡張子は_Stub.xmlです。

    たとえば、サービス・エンドポイント・インタフェースtest\proxy\Testでは、WebServicesAssemblerを使用してプロキシ・クラス・ファイルtest\proxy\runtime\Test_Stub.classを生成できます。ddFileName引数で指定されたクライアント・サイドの構成ファイルは、同じディレクトリにコピーされ、test\proxy\runtime\Test_Stub.xmlという名前になります。

    WebServicesAssemblerを使用してJ2SE Webサービス・クライアントを生成する方法の詳細は、『Oracle Application Server Web Services開発者ガイド』の「J2SE Webサービス・クライアントのアセンブル」で説明されています。

  3. 実行時、生成されたプロキシ・クラス・ファイルはXMLファイルを読み取り、メッセージに管理構成設定を適用します。

  4. クライアントおよびサーバー間で、リクエストとレスポンスを渡すことができます。

J2SEクライアントへの管理情報の追加方法

Oracle JDeveloperまたはWebServicesAssemblerを使用して、J2SEクライアントに管理構成を追加できます。

JDeveloper

  1. Webサービスに属するWSDLの場合、Oracle JDeveloperのウィザードを使用してプロキシ・クラス・ファイルおよびクライアント・サイドの構成ファイルを作成します。

  2. Oracle JDeveloperの適切なウィザードを実行して、クライアントの管理情報を構成します。

  3. クライアントを実行します。

WebServicesAssembler

WebServicesAssemblerを使用してJ2SE Webサービス・クライアントを作成する方法の詳細は、『Oracle Application Server Web Services開発者ガイド』の「J2SE Webサービス・クライアントのアセンブル」で説明されています。

  1. クライアント・サイドの構成ファイルを作成します。oracle-webservices-client-10_0.xsdスキーマを参照し、ファイルを手動で記述できます。

  2. Webサービスに属するWSDLの場合、WebServicesAssemblerのgenProxyコマンドを実行してプロキシ・クラス・ファイルを作成します。ddFileName引数を使用して、クライアント・サイドの構成ファイルを指定します。次に例を示します。

    <oracle:genProxy
        wsdl="HelloService.wsdl"
        output="src"
        packageName="oracle.demo.hello"
        ddFileName="clientConfig.xml"/>
    

    これにより、outputパラメータで指定されたディレクトリの下に、複数のJavaソース・ファイルが生成されます。この場合、Javaソース・ファイルはsrcディレクトリに生成されます。生成されたJavaソース・ファイルoracle/demo/hello/runtime/HttpSoap11Binding_Stub.javaは、ポートを実装します。このファイルの名前は、WSDLのtargetNamespacesおよびportの名前からJavaクラス名が導出される方法に基づいています。この例では、WSDLのtargetNamespaceはhttp://oracle.demo.hello/で、ポート名はHttpSoap11Bindingです。

    このデフォルトの動作は、WebServicesAssemblerに追加の入力を使用することで変更できます。生成される_Stub.xmlファイルには、ポートを実装する生成されたJavaソース・ファイルと同じルート名が常に含まれます。

    _Stub.xmlファイルはソース・ディレクトリに生成されるため、このファイルがJavaソース・ファイルをコンパイルするディレクトリにもコピーされていることを確認する必要があります。次の例では、Antタスクでこれを実行する方法を示します。

     <copy todir="classes" >
        <fileset dir="src">
           <include name="**/*_Stub.xml"/>
        </fileset>
     </copy>
    
  3. genProxyによって作成されたクライアント・ユーティリティ・クラス・ファイルを、アプリケーション・クライアントとして使用するか、またはテンプレートとして使用して独自のクライアント・コードを記述します。クライアント・ユーティリティ・クラス・ファイルは、genProxyによって作成されるいくつかのファイルの1つです。

  4. クライアントを実行します。

J2EEクライアントにおける管理情報の使用

この項の内容は、次のとおりです。

J2EEクライアントにおける管理情報のデータ・フローの概要

図3-4に、J2EEクライアントでWebサービス管理データがどのように送信されるかを示します。

図3-4 J2EEクライアントにおけるWebサービス管理のデータ・フロー

Web Services Management data flow in a J2EE client.
「図3-4 J2EEクライアントにおけるWebサービス管理のデータ・フロー」の説明

  1. Webサービスにアクセスするために、J2EEクライアントはJNDIルックアップを実行し、サービス・エンドポイント・インタフェースを参照します。

  2. 実行時、クライアントのタイプに応じて、インタフェースを実装するオブジェクトにより、orion-ejb-jar.xmlorion-web.xmlまたはorion-application-client.xmlのいずれかで使用されている管理構成が使用されます。

    デプロイメント・アーカイブに含まれているorion-*.xmlファイルには、実行時におけるサービス・エンドポイント・インタフェースの生成に必要な情報を含む<service-ref-mapping>要素があります。Webサービス管理情報は、<service-ref-mapping>要素内に含まれています。

    <service-ref-mapping>要素の詳細は、『Oracle Application Server Web Services開発者ガイド』の「OC4J固有のプラットフォーム情報の追加」で説明されています。

J2EEクライアントへの管理情報の追加方法

Oracle JDeveloperまたはWebServicesAssemblerを使用して、J2EEクライアントに管理構成を渡せます。

JDeveloper

  1. Webサービスに属するWSDLの場合、Oracle JDeveloperを使用して、Javaサービス・エンドポイント・インタフェース・ファイルおよびクライアント・コンポーネント・ディスクリプタ・ファイルを作成します。クライアントのタイプにより、構成ファイルはorion-ejb-jar.xmlorion-web.xmlまたはorion-application-client.xmlのいずれかになります。

  2. 特定のクライアント用に生成されたorion-*.xml<service-ref-mapping>タグを編集します。このタグ内に、クライアント・サイドのWebサービス管理構成を入力します。

    <service-ref-mapping>タグの詳細は、『Oracle Application Server Web Services開発者ガイド』の「OC4J固有のプラットフォーム情報の追加」で説明されています。

  3. クライアント・モジュールをアセンブルおよびデプロイします。

    J2EE Webサービス・クライアントをアセンブルおよびデプロイする方法の詳細は、『Oracle Application Server Web Services開発者ガイド』の「J2EE Webサービス・クライアントのアセンブル方法」で説明されています。

WebServicesAssembler

  1. WebServicesAssemblerのgenInterfaceコマンドを実行して、Javaサービス・エンドポイント・インタフェース・ファイルを作成します。

  2. 特定のWebサービス用に生成されたorion-*.xml<service-ref-mapping>タグを編集します。このタグ内に、クライアント・サイドのWebサービス管理構成を入力します。

    <service-ref-mapping>タグの詳細は、『Oracle Application Server Web Services開発者ガイド』の「OC4J固有のプラットフォーム情報の追加」で説明されています。

  3. クライアントのデプロイ・モジュールをアセンブルします。

    1. すべてのクライアント・ファイルをコンパイルします。

    2. デプロイメント・ディスクリプタ・ファイルを適切な位置にコピーします。

    3. クライアントのデプロイ・モジュールをパッケージします。

      サーブレット、EJBまたはJSP Webサービス・クライアントでデプロイメント・ディスクリプタを配置する位置およびデプロイメント・ディスクリプタをパッケージ化する方法の詳細は、『Oracle Application Server Web Services開発者ガイド』の「Webサービス・アプリケーションのパッケージ化」で説明されています。

  4. クライアントのデプロイ・モジュールをデプロイします。

  5. クライアントを実行します。

プログラムによるクライアントへの管理構成の追加方法

これ以降の項で説明されているすべてのクライアント・サイドの動的構成シナリオでは、各起動の構成はクライアントにより提供されます。クライアントでこれを実行するには、次のプロパティの値を、コール、またはスタブかポートのいずれかで設定します。

oracle.webservices.ClientConstants.CLIENT_CONFIG

指定される値は、ルート・ノードを参照するXML DOM要素か、Webサービス管理のクライアント・サイドの構成スキーマに準拠するドキュメントのjava.io.Fileオブジェクトのいずれかです。XML DOM要素の参照が指定されている場合、クライアントは構成をロードして解析する必要があります。java.io.Fileオブジェクトが指定されている場合は、ランタイムによりロードおよび解析が実行されます。

ClientConstants.CLIENT_CONFIG属性で指定されている構成は、任意の静的構成を上書きします。次の例では、XML DOM要素の参照の構成を設定します。

...setProperty(
         oracle.webservices.ClientConstants.CLIENT_CONFIG,
         parseAndReturnElement(config));

この例では、java.io.Fileオブジェクトの構成を設定します。

...setProperty(
         oracle.webservices.ClientConstants.CLIENT_CONFIG,
         new java.io.File("config file path"));

上書きは実行されるか、されないかのいずれかです。動的構成が指定されている場合、静的構成は完全に無視されます。

次に示す項では、DII、動的プロキシ、静的プロキシおよびJ2EE Webサービス・クライアントに管理構成を渡す場合のコード例を示します。これらすべての場合において、構成は次の行で定義されています。

String config =
             "<port-info>" +
               ...
             "</port-info>";

これは、J2SEクライアントの構成ファイル、またはJ2EEクライアントのデプロイメント・ディスクリプタに入力できます。

プログラムによるDII Webサービス・クライアントへの管理構成の追加方法

例3-1に、DIIクライアントに渡される管理構成を示します。setProperty文は太字で強調してあります。例に<call-property>要素があることに注意してください。この要素を使用して、エンドポイント・アドレス、ユーザー名とパスワード、その他の標準および独自のプロパティなどの情報を渡すことができます。

例3-1 DIIクライアントに動的に渡されるプロパティおよび管理構成

...
String config =
             "<port-info>" +
                "<call-property>" +
                    "<name>...</name>" +
                    "<value>...</value>" +
                "</call-property>" +
               "<runtime>" +
                  "<security>" + ... + "<security>" +
                "</runtime>" +
                "<operations>" +
                   "<operation name='echo'>" +
                      "<runtime>" +
                         "<security>" + ... + "<security>" +
                      "</runtime>" +
                   "</operation>" +
                "</operations>" +
             "</port-info>";
       call.setOperationName(
             new QName("http://oracle.com/test/wsdl", "echo"));
       call.setProperty( 
             oracle.webservices.ClientConstants.CLIENT_CONFIG,
             parseAndReturnElement(config))
       call.invoke(params);
...

プログラムによる動的プロキシWebサービス・クライアントへの管理構成の追加方法

例3-2に、動的プロキシに渡される管理構成を示します。setProperty文は太字で強調してあります。例に<stub-property>要素があることに注意してください。この要素を使用して、エンドポイント・アドレス、ユーザー名とパスワード、その他の標準および独自のプロパティなどの情報を渡すことができます。

例3-2 動的プロキシに動的に渡される管理構成

...
String config =
      "<port-info>" +

         "<stub-property>" +
                 "<name>...</name>" +
                 "<value>...</value>" +
         "</stub-property>" +
         "<runtime>" +
            "<security>" + ... + "<security>" +
            "<reliability>" +...+"</reliability> +
         "</runtime>" +
         "<operations>" +
            "<operation name='echo'>" +
               "<runtime>" +
                  "<security>" + ... + "<security>" +
                  "<reliability>" +...+"</reliability>" +
                  "<auditing>" +...+ "</auditing>" +
               "</runtime>" +
            "</operation>" +
         "</operations>" +
      "</port-info>";
((Stub)port)._setProperty(
        oracle.webservices.ClientConstants.CLIENT_CONFIG,
        parseAndReturnElement(config));
port.echo("Hello");
...

プログラムによる静的プロキシWebサービス・クライアントへの管理構成の追加方法

例3-3に、静的プロキシに渡される管理構成を示します。setProperty文は太字で強調してあります。例に<stub-property>要素があることに注意してください。この要素を使用して、エンドポイント・アドレス、ユーザー名とパスワード、その他の標準および独自のプロパティなどの情報を渡すことができます。

例3-3 静的プロキシに動的に渡されるプロパティおよび管理構成

...
String config =
      "<port-info>" +
         "<stub-property>" +
                 "<name>...</name>" +
                 "<value>...</value>" +
         "</stub-property>" +
         "<runtime>" +
              "<security>" + ... + "<security>" +
              "<reliability>" +...+"</reliability> +
         "</runtime>" +
         "<operations>" +
            "<operation name='echo'>" +
               "<runtime>" +
                  "<security>" + ... + "<security>" +
                  "<reliability>"+...+ "</reliability>" +
                  "<auditing>" +...+ "</auditing>" +
               "</runtime>" +
            "</operation>" +
         "</operations>" +
      "</port-info>";
port = service.getTestServicePort();
((Stub)port)._setProperty(
     oracle.webservices.ClientConstants.CLIENT_CONFIG,
     parseAndReturnElement(config)); 
port.echo("Hello");
..."

プログラムによるJ2EE Webサービス・クライアントへの管理構成の追加方法

例3-4に、J2EE Webサービス・クライアントに渡される管理構成を示します。setProperty文は太字で強調してあります。

例3-4 J2EE Webサービス・クライアントに動的に渡される管理構成

...
String config =
      "<port-info>" +
         "<runtime>" +
            "<security>" + ... + "</security>" +
            "<reliability>" +...+"</reliability>" +
         "</runtime>" +
         "<operations>" +
            "<operation name='echo'>" +
               "<runtime>" +
                  "<security>" + ... + "<security>" +
                  "<reliability>"+...+ "</reliability>" +
                  "<auditing>" +...+ "</auditing>" +
               "</runtime>" +
            "</operation>" +
         "</operations>" +
      "</port-info>";
Context ic = new InitialContext();
Service service = (Service)ic.lookup(
      "java:comp/env/service/MyTestServiceRef");
TestInterface port = (TestInterface)service.getPort(
      portQName, j2ee.client.TestInterface.class );
((Stub)port)._setProperty(
  oracle.webservices.ClientConstants.CLIENT_CONFIG,
      parseAndReturnElement(config));
port.echo("Hello");
...

クライアントへの静的管理構成の追加方法

クライアント・サイドの静的構成は、J2SEおよびJ2EE Webサービス・クライアントでのみサポートされています。DIIまたは動的プロキシではサポートされていません。


関連資料:

静的プロキシおよびサポート方法の詳細は、「プログラムによる静的プロキシWebサービス・クライアントへの管理構成の追加方法」を参照してください。


Enterprise Web Services 1.1仕様には、各J2EEコンポーネント・タイプのデプロイメント・ディスクリプタが定義されています。デプロイメント・ディスクリプタには、コンポーネントがWebサービス・エンドポイントにアクセスするための情報が含まれています。

標準の各J2EE Webサービスのデプロイメント・ディスクリプタには、対応するOracle独自のデプロイメント・ディスクリプタがあります。Oracle独自のデプロイメント・ディスクリプタは、デプロイ固有の構成情報の提供を目的としています。アプリケーション開発者により適切なデフォルトが指定されますが、Oracle独自のデプロイメント・ディスクリプタを使用すると、実行者はアプリケーションに影響を与えずにデプロイ設定を変更できます。Oracle独自のデプロイメント・ディスクリプタの名前は、orion-という接頭辞が付くこと以外、標準のディスクリプタと同じです。表3-1に、各J2EEコンポーネントの標準のデプロイメント・ディスクリプタ、およびOracle独自のデプロイメント・ディスクリプタをリストします。

表3-1 J2EEコンポーネントおよび対応するデプロイメント・ディスクリプタ

J2EEコンポーネント 標準のJ2EE Webサービス・デプロイメント・ディスクリプタ Oracle独自のデプロイメント・ディスクリプタ

アプリケーション・クライアント

application-client.xml

orion-application-client.xml

EJB

ejb-jar.xml

orion-ejb-jar.xml

JSPまたはサーブレット

web.xml

orion-web.xml


標準のデプロイメント・ディスクリプタには、<service-ref>要素が含まれます。この要素は、WSDLおよびマッピング・ファイルの位置、サービス・インタフェース、サービス・ポート、およびそれらに関連するサービス・エンドポイント・インタフェースなど、Webサービスのアクセス情報をすべて取得します。

<service-ref>内の要素の1つは<service-ref-name>です。標準のディスクリプタの<service-ref-name>要素の値は、独自のディスクリプタ(orion-*)の<service-ref-mapping>要素のname属性値にマッピングされます。この参照により、クライアントによって割り当てられるJNDIパスおよびサービス名が指定されます。

Oracle独自のデプロイメント・ディスクリプタには、それに対応する標準のデプロイメント・ディスクリプタにマッピングするために、<service-ref-mapping>要素の値を使用する構造が含まれます。この要素内には<port-info>要素があります。この要素は、Webサービス管理情報を含む、サービス参照内のポートに関するすべての情報を提供します。<port-info>要素の構造およびコンテンツは、どのクライアント・タイプでも同じです。


関連資料:

  • <service-ref>要素の詳細は、『Oracle Application Server Web Services開発者ガイド』の「J2EE Webサービス・クライアント情報のデプロイメント・ディスクリプタへの追加方法」を参照してください。

  • <service-ref-mapping>要素の詳細は、『Oracle Application Server Web Services開発者ガイド』の「OC4J固有のプラットフォーム情報の追加」を参照してください。


次に示す項では、J2EE Webサービス・クライアントに静的構成情報を提供するために、標準およびOracle独自のデプロイメント・ディスクリプタがどのように使用されるかを説明します。

サーブレットまたはJSP Webサービス・クライアントへの静的管理構成の追加方法

例3-5に、サーブレットまたはJSP Webサービス・クライアントのweb.xmlデプロイメント・ディスクリプタのフラグメントを示します。<service-ref-name>要素には、クライアントの静的構成への参照が含まれます。

例3-6に、対応するorion-web.xmlファイルを示します。<service-ref-mapping name="...">要素にも参照が含まれます。<service-ref-mapping>内の<port-info>要素には、Webサービス管理情報が含まれます。

<service-ref-name>および<service-ref-mapping>要素の値は一致する必要があります。これらの要素は太字で強調してあります。

例3-5 web.xml—サーブレットまたはJSP Webサービス・クライアントの静的構成

<web-app>
   ...
   <service-ref>
      <service-ref-name>service/MyTestServiceRef</service-ref-name>
      ...
   </service-ref>
   ...
</web-app>

例3-6 orion-web.xml—サーブレットまたはJSP Webサービス・クライアントの静的構成および管理情報

<orion-web-app ...>
    <service-ref-mapping name="service/MyTestServiceRef">
        <port-info>
            ...
            <runtime>
                ...
                <security/>
                <reliability/>
                ...
            </runtime>
            <operations>
                ...
                  <operation name="echo">
                    <runtime>
                        ...
                        <security/>
                        <reliability/>
                        <auditing/>
                        ...
                    </runtime>
                  </operation>
                ...
            </operations>
        </port-info>
    </service-ref-mapping>
</orion-web-app>

EJB Webサービス・クライアントへの静的管理構成の追加方法

例3-7に、EJB Webサービス・クライアントのejb-jar.xmlデプロイメント・ディスクリプタのフラグメントを示します。<service-ref-name>要素には、クライアントの静的構成への参照が含まれます。

例3-8に、対応するorion-ejb-jar.xmlファイルを示します。<service-ref-mapping name="...">要素にも参照が含まれます。<service-ref-mapping>内の<port-info>要素には、Webサービス管理情報が含まれます。

<service-ref-name>および<service-ref-mapping>要素の値は一致する必要があります。これらの要素は太字で強調してあります。

例3-7 ejb-jar.xml—EJB Webサービス・クライアントの静的構成

<ejb-jar ...>
   ...
   <enterprise-beans>
      <session>
       <ejb-name>EjbServiceConsumer</ejb-name>
          ...
          <service-ref>
             <service-ref-name>service/MyTestServiceRef</service-ref-name>
             ...
          </service-ref>
      </session>
   </enterprise-beans>
</ejb-jar>

例3-8 orion-ejb-jar.xml—EJB Webサービス・クライアントの静的構成および管理情報

<orion-ejb-jar ...>
    <enterprise-beans>
        ...
        <session-deployment name="EjbServiceConsumer">
            <service-ref-mapping name="service/MyTestServiceRef">
                <port-info>
                    ...
                    <runtime>
                        <security/>
                    </runtime>
                        <operations>
                            ...
                            <operation name="echo">
                                <runtime>
                                    ...
                                    <security/>
                                    ...
                                </runtime>
                            </operation>
                        </operations>
                </port-info>
            </service-ref-mapping>
        </session-deployment>
    </enterprise-beans>
</orion-ejb-jar>

アプリケーション・クライアントWebサービス・クライアントへの静的管理構成の追加方法

例3-9に、アプリケーション・クライアントWebサービス・クライアントのapplication-client.xmlデプロイメント・ディスクリプタのフラグメントを示します。<service-ref-name>要素には、クライアントの静的構成への参照が含まれます。

例3-10に、対応するorion-application-client.xmlファイルを示します。<service-ref-mapping name="...">要素にも参照が含まれます。<service-ref-mapping>内の<port-info>要素には、Webサービス管理情報が含まれます。

<service-ref-name>および<service-ref-mapping>要素の値は一致する必要があります。これらの要素は太字で強調してあります。

例3-9 application-client.xml—アプリケーション・クライアントWebサービス・クライアントの静的構成

<application-client>
   ...
   <service-ref>
      <service-ref-name>service/MyTestServiceRef</service-ref-name>
      ...
   </service-ref>
</application-client>

例3-10 orion-application-client.xml—アプリケーション・クライアントWebサービス・クライアントの静的構成および管理情報

<orion-application-client>
    <service-ref-mapping name="service/MyTestServiceRef">
        <port-info>
            ...
            <runtime>
                <security/>
            </runtime>
            <operations>
               <operation name="echo">
                   <runtime>
                       <security/>
                   </runtime>
               </operation>
            </operations>
        </port-info>
    </service-ref-mapping>
</orion-application-client>

機能アサーションの使用

この項の内容は、次のとおりです。

機能アサーションの概要

機能アサーションは、セキュリティや信頼性などのWebサービス管理ポリシーの説明です。これにより、WebサービスのコンシューマはWebサービスで有効化されている管理ポリシーを知ることができます。

たとえば、ユーザー名やパスワードなどのセキュリティ・トークンが必要なWebサービスを作成したとします。クライアントは、この要件を満たすまでサービスにアクセスできません。機能アサーションは、実行時にメッセージのSOAPヘッダーにユーザー名とパスワードを配置する必要があることをクライアントに伝えます。

機能アサーションは、oracle-webservices.xmlデプロイメント・ディスクリプタ内のサーバー・サイドのWebサービス管理構成から導出され、WSDLに生成されます。WSDLへの生成は、Oracle JDeveloperのウィザードまたはWebServicesAssemblerコマンドによって実行されます。

OracleAS Web Servicesクライアントの生成では、WSDLおよび構成ファイルは入力として使用されます。構成ファイルは、生成されたクライアントのいくつかの組込み動作を説明するもので、oracle-webservices-client-10_0.xsdスキーマに基づいています。構成ファイルは、手動で記述することも、Oracle JDeveloperのようなツールで作成することもできます。WSDLからの機能アサーションは、クライアント・サイドの構成の作成を支援するヒントとして使用されます。

J2SEクライアントの場合、クライアント・サイドの構成ファイルは、生成時にプロキシ・クラスとともに自動的にパッケージ化されます。J2EEクライアントの場合、クライアント・サイドの構成はデプロイ時に設定されます。

Webサービスへの機能アサーションのアセンブル方法

WebServicesAssemblerまたはOracle JDeveloperツールのいずれかを使用して、機能アサーションをWebサービスにアセンブルできます。たとえば、これらのツールのいずれかを使用すると、機能アサーションをWSDLにアセンブルして、サービスへのアクセスに必要なユーザー名とパスワードを通知できます。

Oracle JDeveloperを使用してクライアントをアセンブルする場合には、Oracle JDeveloperがこの情報を活用してユーザーにユーザー名とパスワードを要求します。Oracle JDeveloperは、実行時に使用されるクライアント・サイドの構成ファイルを作成し、このユーザー名とパスワードをメッセージのSOAPヘッダーに配置します。

WebServicesAssemblerを使用してクライアントをアセンブルする場合は、WSDLの機能アサーションを把握し、それに応じてクライアント・サイドの構成を作成する必要があります。その後、クライアント・プロキシとともにパッケージ化するために、ddFileName引数を使用してWebServicesAssemblerに構成を渡すか、実行時にコールまたはプロキシに渡す必要があります。

次に示す一般化した手順で、Webサービスに機能アサーションを含めるプロセスをまとめます。

  1. 手動またはOracle JDeveloperを使用して、セキュリティ、信頼性、監査およびロギング用にサーバー・サイドのWebサービス管理構成を作成します。

    • 手動: oracle-webservices.xmlデプロイメント・ディスクリプタに手動で管理構成を入力します。

    • Oracle JDeveloper: Oracle JDeveloperのウィザードを使用してWebサービス管理オプションを選択します。ウィザードにより、この情報がoracle-webservices.xmlデプロイメント・ディスクリプタに入力されます。

  2. WebServicesAssemblerまたはOracle JDeveloperツールを使用して、機能アサーションをWebサービスにアセンブル、または単に、機能アサーションをWSDLにアセンブルします。

    • WebServicesAssembler: 既存のWSDLに機能アサーションをアセンブルするには、genQosWsdlコマンドを使用して、機能アサーションを含むファイル名(通常はoracle-webservices.xmlデプロイメント・ディスクリプタ)を指定します。

      機能アサーションをWebサービスにアセンブルするには、genQos引数をサポートするトップダウンまたはボトムアップ方式のいずれかのWebサービス・アセンブリ・コマンドをコールします。この引数は、指定するファイル(通常はoracle-webservices.xmlデプロイメント・ディスクリプタ)からアサーションを導出し、それらをWSDLに挿入するようにWebServicesAssemblerツールを変更します。

      詳細は、「WebServicesAssemblerを使用した機能アサーションの追加方法」を参照してください。

    • Oracle JDeveloper: Webサービス管理構成ウィザードで「機能アサーション」オプションを選択して、WSDLに機能アサーションをアセンブルします。

  3. WebServicesAssemblerまたはOracle JDeveloperを使用して、クライアント・コードを生成します。

    • WebServicesAssembler: WSDLおよびクライアント・サイドの構成ファイルを、genProxyコマンド(J2SEクライアントの場合)またはgenInterfaceコマンド(J2EEクライアントの場合)に渡します。クライアント・サイドの構成ファイルの指定にはddFileName引数を使用します。

    • Oracle JDeveloper: 適切なOracle JDeveloperのウィザードを使用して、J2SEまたはJ2EEのクライアント・コードを生成します。

  4. クライアント・コードを実行します。

    • J2SEクライアントの場合は、クライアントをコンパイルおよび実行します。

    • J2EEクライアントの場合は、デプロイ後にクライアントを実行します。

WebServicesAssemblerを使用した機能アサーションの追加方法

WebServicesAssemblerにより、Webサービスに信頼性の機能アサーションをアセンブルする(トップダウンまたはボトムアップ方式)、または単に、機能アサーションをWSDLにアセンブルするいずれかのオプションでアセンブルできます。この項の内容は、次のとおりです。

Webサービスへの機能アサーションのアセンブル手順

WebServicesAssemblerツールにより、Webサービスに機能アサーションを追加できます。ツールには、トップダウンまたはボトムアップ方式のいずれかのWebサービス・アセンブリ・コマンドで使用するブール型genQos引数が用意されています。genQostrueに設定すると、WebServicesAssemblerツールはoracle-webservices.xmlデプロイメント・ディスクリプタのコンテンツから機能アサーションを導出し、それらをWSDLに入力します。

  1. 機能アサーションをoracle-webservices.xmlデプロイメント・ディスクリプタに入力します。

  2. 適切なWebServicesAssemblerコマンドをコールして、Webサービスをアセンブルします。genQos引数をtrueに設定して、WSDLに機能アサーションをアセンブルします。ddFileName引数を使用して、アサーションを含むoracle-webservices.xmlデプロイメント・ディスクリプタを指定します。


    関連資料:

    • トップダウンおよびボトムアップ方式でのWebサービス・アセンブリの詳細は、『Oracle Application Server Web Services開発者ガイド』を参照してください。

    • これらの引数の詳細は、『Oracle Application Server Web Services開発者ガイド』の「WebServicesAssembler引数」の項の「ddFileName」および「genQos」を参照してください。


WSDLへの機能アサーションのアセンブル手順

WebServicesAssemblerツールには、追加のファイルを生成せずに機能アサーションをWSDLにアセンブルできるコマンド、genQosWsdlが用意されています。

  1. WebServicesAssemblerツールのgenQosWsdlコマンドをコールします。

  2. ddFileName引数を使用して、機能アサーションを含むファイル名(通常はoracle-webservices.xmlデプロイメント・ディスクリプタ)を指定し、wsdl引数を使用してアサーションを挿入するWSDL名を指定します。


関連資料:

『Oracle Application Server Web Services開発者ガイド』の「genQosWsdl」を参照してください。


例3-11に、機能アサーション・タグで生成されたWSDLの抜粋を示します。WSDLの生成された値を編集して、内容を変更できます。WSDLを編集する場合は、エンドポイントおよびクライアントを再生成する必要があることに注意してください。

例3-11 信頼性に関する機能アサーションを含むWSDLフラグメント

...
<binding name="HttpSoap11Binding" type="tns:Bank">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
   <operation name="deposit">
<soap:operation soapAction="http://www.oracle.com/bank/deposit"/>
   <capability-assertions wsdl:required="true">
     <guaranteed-delivery required="true">
       <reply-patterns callback="true" poll="true" response="true"/>
     </guaranteed-delivery>
     <duplicate-elimination required="true"/>
   </capability-assertions>
<input>
<soap:body use="encoded" namespace="http://www.oracle.com/bank"
   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" parts="accountName amount"/>
</input>
</operation>
</binding>
...

Oracle JDeveloperを使用した機能アサーションの追加方法

Oracle JDeveloperを使用してWebサービスに機能アサーションを追加するには、Webサービス管理構成ウィザードで「機能アサーション」オプションを選択します。

Webサービス管理のApplication Server Controlのサポート

次の項では、Application Server Controlを使用することで利用できる、Webサービスを管理するための機能を簡単に説明します。

Webサービス管理機能の構成、有効化および無効化

Application Server Controlを使用して、デプロイするWebサービスを管理できます。たとえば、Webサービス・アプリケーションのデプロイ、構成タスクの実行およびWebサービス・ポートの監視が可能です。

また、監査、ロギング、信頼性およびセキュリティなど、標準のWebサービス管理機能と関連付けられた管理タスクを実行できます。Webサービス管理は、ターゲットに送信中のメッセージに対して適用される一連のポリシーです。OracleAS Web Servicesの場合、メッセージはSOAPリクエスト、SOAPレスポンスおよびSOAP障害で、ターゲットはクライアントおよびサーバーのビジネス・ロジックです。


関連資料:

Webサービス管理機能を構成、有効化および無効化する方法の詳細は、Application Server Controlのオンライン・ヘルプの「Webサービス管理の概要」および「Webサービス管理機能の有効化および無効化」のトピックを参照してください。


Webサービスの有効化および無効化

Application Server Controlを使用して、OC4Jインスタンスの無効化されたWebサービスの有効化や、有効化されたWebサービスの無効化を実行できます。


関連資料:

Webサービスを有効化および無効化する方法の詳細は、Application Server Controlのオンライン・ヘルプの「Webサービスの有効化および無効化」を参照してください。


Webサービスの監査の構成

Webサービス管理の監査機能を使用すると、SOAPリクエスト、SOAPレスポンスおよびSOAP障害のレコードの完全性と永続性を維持できます。開発中、SOAPリクエストやレスポンスの内容を参照して、問題を診断できるのは非常に便利です。監査により、リクエスト、レスポンスおよび障害メッセージが取得され、次の永続ファイルに保存されます。

ORACLE_HOME\j2ee\OC4JInstanceName\log\instanceName_groupName_n\wsmgmt\auditing\log.xml


関連資料:

監査の構成方法の詳細は、Application Server Controlのオンライン・ヘルプの「Webサービスの監査の構成」を参照してください。


Webサービスのロギングの構成

Webサービスのロギングを構成する際には、受信メッセージ、発信メッセージおよびSOAP障害メッセージからロギングする属性を特定できます。ロギング・メッセージは、次の永続ファイルに保存されます。

ORACLE_HOME\j2ee\OC4JInstanceName\log\instanceName_groupName_n\wsmgmt\logging\log.xml


関連資料:

Webサービスのロギングの構成方法の詳細は、Application Server Controlのオンライン・ヘルプの「Webサービスのロギングの構成」を参照してください。


Webサービスの信頼性の構成

Application Server Controlを使用して、信頼できるメッセージング機能を持つWebサービスを構成できます。信頼できるメッセージング機能を使用すると、Webサービス・スタックのユーザーは、メッセージが重複することなく、保証付き配信とメッセージの順序付けを使用してSOAPメッセージを交換できます。


関連資料:

Webサービスの信頼性を構成する方法の詳細は、Application Server Controlのオンライン・ヘルプの「Webサービスの信頼性の構成」を参照してください。


Webサービスのセキュリティの構成

Application Server Controlを使用して、認証、デジタル署名を使用した整合性、およびWS-Security標準に基づいた暗号化を使用した機密保護の機能を持つWebサービスを構成できます。


関連資料:

Webサービスのセキュリティを構成する方法の詳細は、Application Server Controlのオンライン・ヘルプの「Webサービスのセキュリティの構成」を参照してください。


WebサービスのWSDLの表示

Application Server Controlを使用して、WebサービスのWSDLを表示できます。WSDLファイルの内容は編集できませんが、Webサービスの属性や特性を確認するために内容を表示することができます。


関連資料:

WSDLの表示方法の詳細は、Application Server Controlのオンライン・ヘルプの「Webサービスのロギングの構成時におけるXPathの指定」を参照してください。


Webサービスのテスト

Application Server Controlを使用して、Webサービスをテストできます。Webサービスのテスト時には、そのWebサービスのホーム・ページを表示します。Webサービスのホーム・ページのURLは、Webサービスがクライアントに公開するサービス・エンドポイントでもあります。このURLから、入力する値の操作を起動し、Webサービスが適切に応答していることを検証できます。


関連資料:

Webサービスをテストする方法の詳細は、Application Server Controlのオンライン・ヘルプの「Webサービスのテスト」を参照してください。


Webサービス操作の表示

Application Server Controlを使用して、Webサービス操作および操作メトリックを表示できます。


関連資料:

Webサービス操作および操作メトリックを表示する方法の詳細は、Application Server Controlのオンライン・ヘルプの「Webサービス操作の表示」を参照してください。


追加情報

詳細は、次を参照してください。