この章では、Oracle Application Server Web ServicesのWebサービス管理の概要を説明します。
Webサービス管理は、ターゲットに送信中のメッセージに対して適用される一連のポリシーです。OracleAS Web Servicesの場合、メッセージはSOAPリクエスト、SOAPレスポンスおよびSOAP障害で、ターゲットはクライアントおよびサーバーのビジネス・ロジックです。OracleAS Web Servicesは、次に示す管理機能のポリシーをサポートしています。
セキュリティ: WS-Security標準に基づいて、認証、デジタル署名を使用した整合性および暗号化を使用した機密保護を構成します。
このトピックの詳細は、『Oracle Application Server Web Servicesセキュリティ・ガイド』を参照してください。
信頼性: WS-Reliability標準に基づいて、メッセージの保証付き配信と順序付けを構成し、メッセージの重複を排除します。
このトピックの詳細は、第5章「Webサービスの信頼性の確保」を参照してください。
監査およびロギング: 監査により、SOAPリクエストおよびSOAP障害のレコードの完全性と永続性が維持されます。ロギングにより、インバウンドおよびアウトバウンドのSOAPメッセージの問合せにXPathを使用したコンテンツベースのロギングを実行できます。
このトピックの詳細は、第6章「メッセージの監査およびトレース」を参照してください。
ライフ・サイクル管理: サービスとその管理対象機能を有効化および無効化します。
このトピックの詳細は、「Webサービス管理のライフ・サイクル」を参照してください。
デプロイ: J2EE 1.4標準に基づいてOracleAS Web Services独自のデプロイメント・ディスクリプタを構成します。
このトピックの詳細は、『Oracle Application Server Web Services開発者ガイド』の「Webサービスのパッケージ化およびデプロイ」の章を参照してください。
図3-1に、クライアントからサーバーのビジネス・ロジックまでのSOAPリクエストの経路を示します。SOAPリクエストは、ケーブルで送信される前に、アウトバウンド・メッセージに対する管理の層を通り抜けてクライアントから渡されます。サーバーに到達すると、ビジネス・ロジックが使用する前に、リクエストはインバウンド・メッセージに対する管理構成の層を通過する必要があります。リクエストがサービス実装に到達する前に拒否されないよう、サーバー・サイドの管理に指定された値をクライアントの値と調整する必要があります。
同様に、サーバーのビジネス・ロジックからのレスポンスも逆のプロセスをたどります。レスポンスは、ケーブルで送信される前に、アウトバウンド・メッセージに対する管理の層を通過する必要があります。クライアントに到達すると、クライアントが使用する前に、レスポンスはインバウンド・メッセージに対する管理の層を通過する必要があります。
図3-1に示されているように、Webサービス管理は個別の4つの構成で成り立っています。サーバーには、インバウンド・メッセージ(リクエスト)およびアウトバウンド・メッセージ(レスポンス)に対する別々の構成を設けることができます。クライアントには、アウトバウンド・メッセージ(リクエスト)およびインバウンド・メッセージ(レスポンス)に対する別々の構成を設けることができます。
これらの管理ポリシーは、Oracle JDeveloper内の事前デプロイで構成できます。デプロイ後、Oracle Application Server Control管理環境にポリシーを構成できます。
関連資料:
|
図3-2に、管理環境を示します。主要な3つの製品コンポーネントによりこのソリューションが実現します。設計時はOracle JDeveloperまたはWebServicesAssembler、実行時はOracleAS Web Servicesリリース10.1.3.1、管理環境はOracle Application Server Controlです。
次の手順は、図の番号に対応しています。
開発者がOracle JDeveloper、またはそれに対応するコマンドラインのWebServicesAssemblerを使用してWebサービスを作成し、実行時に適用されるWebサービス管理情報を構成します。
Oracle JDeveloper(またはWebServicesAssembler)は、WebサービスのアセンブルおよびEnterprise Archive(EAR)へのパッケージ化にも使用できます。その他のWebサービス・アーティファクトの中では、EARにも管理ポリシーが記述されたoracle-webservices.xml
ファイルが含まれます。このファイルは、Oracleインフラストラクチャへのアプリケーション・サーバー固有のバインディングです。oracle-webservices.xml
ファイルは、プラットフォームに依存しないWebサービスの動作を定義する、標準のJAX-RPC webservices.xml
ファイルの拡張とみなされます。
OC4Jへのデプロイ時、oracle-webservices.xml
ファイルのポリシーは、実行時のWebサービス管理ポリシー・ファイルwsmgmt.xml
に自動的にコピーされます。このファイルはORACLE_HOME
\j2ee\
OC4J_instance_name
\config\wsmgmt.xml
にあります。ここで、ORACLE_HOME
はOC4Jのインストール・ディレクトリです。
Application Server Controlは、wsmgmt.xml
の管理ポリシーをさらに操作するために使用できます。
Webサービス・クライアントは、OC4Jランタイムを介してアプリケーション・サーバーと通信できます。
この図に示されているように、Webサービス管理の作成と管理は、Webサービス、ビジネス・ロジックおよびクライアント実装から完全に分離しています。管理構成は実装されたビジネス・ロジックとは無関係に変更でき、再デプロイの必要はありません。
注意: EARを再デプロイすると、wsmgmt.xml のポリシーに対するApplication Server Controlの変更内容は上書きされます。事実上、再デプロイはアンデプロイ後にデプロイするのと同じことです。Webサービスがアンデプロイされると、すべてのWebサービス管理構成がwsmgmt.xml から削除されます。 |
サーバー・サイドのポリシー構成に加え、クライアント・サイドではサーバーと対称となるポリシー構成が必要になります。OC4Jにより、WSDLに記述されたサーバー・サイドのポリシーを、機能アサーションという形で保持するためのオプションが提供されます。WSDLにこの情報を記述することにより、一般に公開されているこの規約をクライアント生成ツールで調べることができます。ツールでは機能アサーションを使用して、クライアントとサーバーの通信を可能にする構成を作成するために、どのような情報を収集すればよいかを把握できます。
Webサービス管理の重要な部分は、そのライフ・サイクルの管理です。これには、サービスの管理構成を有効化または無効化する機能が含まれます。Application Server Controlには、セキュリティ、信頼性、監査、ロギングを有効化および無効化する機能があります。Application Server Controlは、Webサービス全体を有効化または無効化する場合にも使用できます。
関連資料: ライフ・サイクル管理の別の側面、特にデプロイおよびアンデプロイの詳細は、『Oracle Containers for J2EEデプロイメント・ガイド』を参照してください。 |
Webサービスのサーバー・サイドの管理情報の構成に使用できる技術は多数あります。たとえば、管理情報を既存のoracle-webservices.xml
ファイルに手動で記述することや、Oracle JDeveloperまたはWebServicesAssemblerで処理を自動化することが可能です。Webサービスがすでにデプロイされている場合には、Application Server Controlを使用して管理オプションの多くを構成できます。次の項では、サーバー・サイドの管理情報を構成する方法をまとめます。
手動
oracle-webservices.xsd
スキーマを調べて、管理情報を既存のoracle-webservices.xml
ファイルに手動で記述します。
WebServicesAssemblerの適切な*Assemble
コマンドを実行してWebサービスをアセンブルします。
ddFileName
引数を使用して、変更されたoracle-webservices.xml
ファイルを指定します。
Webサービスをボトムアップ方式で生成する場合は、オプションで、genQosWsdl
引数を使用してWSDLに機能アサーションを挿入します。また、Webサービスをトップダウン方式で生成する場合にも、genQosWsdl
を使用します。
Webサービスをデプロイします。
JDeveloper
Oracle JDeveloperのウィザードを使用してWebサービスを構成します。これにより、oracle-webservices.xml
ファイルが作成されます。
Oracle JDeveloperで適切なウィザードを実行して、Webサービスの管理情報を構成します。
WSDLに機能アサーションを挿入する場合は、機能アサーションの追加オプションを選択します。
Webサービスをデプロイします。
WebServicesAssembler
WebServicesAssemblerのgenDDs
コマンドを実行して、汎用のoracle-webservices.xml
ファイルを作成します。
この手順では、スケルトンのデプロイメント・ディスクリプタ・ファイルを作成します。このファイルには、管理構成情報は含まれません。ただし、ファイルの基本的な構造は保たれており、管理構成を配置する場所は示されています。
oracle-webservices.xsd
スキーマを調べて、管理情報を既存のoracle-webservices.xml
ファイルに手動で記述します。
適切な*Assemble
コマンドを実行してWebサービスをアセンブルします。
ddFileName
引数を使用して、変更されたoracle-webservices.xml
ファイルを指定します。
オプションで、genQosWsdl
引数を使用してWSDLに機能アサーションを挿入します。
Webサービスをデプロイします。
Application Server ControlおよびWebServicesAssembler
このシナリオでは、Oracle JDeveloperを使用せずにデフォルトのサーバー・サイド構成を確立することや、手動で構成を作成することが可能です。次の手順では、Application Server Controlを使用して、サーバー・サイドのデフォルトの管理構成を定義および移入する方法を説明します。その後、この構成をランタイム構成からデプロイ可能なEARファイルにコピーできます。
WebServicesAssemblerの適切な*Assemble
コマンドを実行してWebサービスを作成します。WebServicesAssemblerによって作成されたWebサービスには、明示的に記述していないかぎり、管理情報は含まれていないことに注意してください。
管理情報なしでWebサービスをデプロイします。デプロイすることにより、OC4Jにwsmgmt.xml
ファイルが作成されます。
Application Server ControlのWebサービス管理用の画面を使用して、サーバー・サイドのWebサービス管理オプションを構成します。これらの値はwsmgmt.xml
ファイルに反映されます。
wsmgmt.xml
ファイルのWebサービス管理情報を、手順1で作成したoracle-webservices.xml
ファイルにコピーします。
wsmgmt.xml
ファイルの<port>
要素の下にある<runtime>
要素および<operations>
要素を検索します。<port>
要素のport
属性の値に注意してください。
oracle-webservices.xml
ファイルの<port-component>
要素を検索します。この要素のname
属性は、wsmgmt.xml
ファイルの<port>
要素のport
属性と同じ値です。
<runtime>
要素、<operations>
要素、およびwsmgmt.xml
ファイルのそれらの子要素をすべてコピーします。
それらの要素を手順4bで検索した<port-component>
要素の子として、oracle-webservices.xml
ファイルに貼り付けます。
Webサービスとして公開する各ポートに対して、手順4aから4dを繰り返します。
Webサービスに対して、適切な*Assemble
コマンドを再実行します。
ddFileName
引数を使用して、変更されたoracle-webservices.xml
ファイルを指定します。
オプションで、genQosWsdl
オプションを使用してWSDLに機能アサーションを挿入します。
Webサービスを再デプロイします。
この項の内容は、次のとおりです。
図3-3に、J2SEクライアント環境において、Webサービス管理情報が開発、送信および操作される状況の概要を示します。
次の手順に、図3-3に示されているデータ・フローをまとめます。
開発者がクライアント・サイドの構成ファイルを作成します。これは、Oracle JDeveloperのウィザード、またはoracle-webservices-client-10_0.xsd
スキーマを使用して手動で行われます。クライアント・サイドの構成ファイルには、セキュリティ、信頼性、および監査などのWebサービス管理機能のクライアント・サイドの構成が含まれます。(注意: クライアントではロギングは使用できません。)
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サービス・クライアントのアセンブル」で説明されています。
実行時、生成されたプロキシ・クラス・ファイルはXMLファイルを読み取り、メッセージに管理構成設定を適用します。
クライアントおよびサーバー間で、リクエストとレスポンスを渡すことができます。
Oracle JDeveloperまたはWebServicesAssemblerを使用して、J2SEクライアントに管理構成を追加できます。
JDeveloper
Webサービスに属するWSDLの場合、Oracle JDeveloperのウィザードを使用してプロキシ・クラス・ファイルおよびクライアント・サイドの構成ファイルを作成します。
Oracle JDeveloperの適切なウィザードを実行して、クライアントの管理情報を構成します。
クライアントを実行します。
WebServicesAssembler
WebServicesAssemblerを使用してJ2SE Webサービス・クライアントを作成する方法の詳細は、『Oracle Application Server Web Services開発者ガイド』の「J2SE Webサービス・クライアントのアセンブル」で説明されています。
クライアント・サイドの構成ファイルを作成します。oracle-webservices-client-10_0.xsd
スキーマを参照し、ファイルを手動で記述できます。
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>
genProxy
によって作成されたクライアント・ユーティリティ・クラス・ファイルを、アプリケーション・クライアントとして使用するか、またはテンプレートとして使用して独自のクライアント・コードを記述します。クライアント・ユーティリティ・クラス・ファイルは、genProxy
によって作成されるいくつかのファイルの1つです。
クライアントを実行します。
この項の内容は、次のとおりです。
図3-4に、J2EEクライアントでWebサービス管理データがどのように送信されるかを示します。
Webサービスにアクセスするために、J2EEクライアントはJNDIルックアップを実行し、サービス・エンドポイント・インタフェースを参照します。
実行時、クライアントのタイプに応じて、インタフェースを実装するオブジェクトにより、orion-ejb-jar.xml
、orion-web.xml
またはorion-application-client.xml
のいずれかで使用されている管理構成が使用されます。
デプロイメント・アーカイブに含まれているorion-*.xml
ファイルには、実行時におけるサービス・エンドポイント・インタフェースの生成に必要な情報を含む<service-ref-mapping>
要素があります。Webサービス管理情報は、<service-ref-mapping>
要素内に含まれています。
<service-ref-mapping>
要素の詳細は、『Oracle Application Server Web Services開発者ガイド』の「OC4J固有のプラットフォーム情報の追加」で説明されています。
Oracle JDeveloperまたはWebServicesAssemblerを使用して、J2EEクライアントに管理構成を渡せます。
JDeveloper
Webサービスに属するWSDLの場合、Oracle JDeveloperを使用して、Javaサービス・エンドポイント・インタフェース・ファイルおよびクライアント・コンポーネント・ディスクリプタ・ファイルを作成します。クライアントのタイプにより、構成ファイルはorion-ejb-jar.xml
、orion-web.xml
またはorion-application-client.xml
のいずれかになります。
特定のクライアント用に生成されたorion-*.xml
の<service-ref-mapping>
タグを編集します。このタグ内に、クライアント・サイドのWebサービス管理構成を入力します。
<service-ref-mapping>
タグの詳細は、『Oracle Application Server Web Services開発者ガイド』の「OC4J固有のプラットフォーム情報の追加」で説明されています。
クライアント・モジュールをアセンブルおよびデプロイします。
J2EE Webサービス・クライアントをアセンブルおよびデプロイする方法の詳細は、『Oracle Application Server Web Services開発者ガイド』の「J2EE Webサービス・クライアントのアセンブル方法」で説明されています。
WebServicesAssembler
WebServicesAssemblerのgenInterface
コマンドを実行して、Javaサービス・エンドポイント・インタフェース・ファイルを作成します。
特定のWebサービス用に生成されたorion-*.xml
の<service-ref-mapping>
タグを編集します。このタグ内に、クライアント・サイドのWebサービス管理構成を入力します。
<service-ref-mapping>
タグの詳細は、『Oracle Application Server Web Services開発者ガイド』の「OC4J固有のプラットフォーム情報の追加」で説明されています。
クライアントのデプロイ・モジュールをアセンブルします。
すべてのクライアント・ファイルをコンパイルします。
デプロイメント・ディスクリプタ・ファイルを適切な位置にコピーします。
クライアントのデプロイ・モジュールをパッケージします。
サーブレット、EJBまたはJSP Webサービス・クライアントでデプロイメント・ディスクリプタを配置する位置およびデプロイメント・ディスクリプタをパッケージ化する方法の詳細は、『Oracle Application Server Web Services開発者ガイド』の「Webサービス・アプリケーションのパッケージ化」で説明されています。
クライアントのデプロイ・モジュールをデプロイします。
クライアントを実行します。
これ以降の項で説明されているすべてのクライアント・サイドの動的構成シナリオでは、各起動の構成はクライアントにより提供されます。クライアントでこれを実行するには、次のプロパティの値を、コール、またはスタブかポートのいずれかで設定します。
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クライアントのデプロイメント・ディスクリプタに入力できます。
例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); ...
例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"); ...
例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"); ..."
例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または動的プロキシではサポートされていません。
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>
要素の構造およびコンテンツは、どのクライアント・タイプでも同じです。
関連資料:
|
次に示す項では、J2EE Webサービス・クライアントに静的構成情報を提供するために、標準およびOracle独自のデプロイメント・ディスクリプタがどのように使用されるかを説明します。
例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>
例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>
例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クライアントの場合、クライアント・サイドの構成はデプロイ時に設定されます。
WebServicesAssemblerまたはOracle JDeveloperツールのいずれかを使用して、機能アサーションをWebサービスにアセンブルできます。たとえば、これらのツールのいずれかを使用すると、機能アサーションをWSDLにアセンブルして、サービスへのアクセスに必要なユーザー名とパスワードを通知できます。
Oracle JDeveloperを使用してクライアントをアセンブルする場合には、Oracle JDeveloperがこの情報を活用してユーザーにユーザー名とパスワードを要求します。Oracle JDeveloperは、実行時に使用されるクライアント・サイドの構成ファイルを作成し、このユーザー名とパスワードをメッセージのSOAPヘッダーに配置します。
WebServicesAssemblerを使用してクライアントをアセンブルする場合は、WSDLの機能アサーションを把握し、それに応じてクライアント・サイドの構成を作成する必要があります。その後、クライアント・プロキシとともにパッケージ化するために、ddFileName
引数を使用してWebServicesAssemblerに構成を渡すか、実行時にコールまたはプロキシに渡す必要があります。
次に示す一般化した手順で、Webサービスに機能アサーションを含めるプロセスをまとめます。
手動またはOracle JDeveloperを使用して、セキュリティ、信頼性、監査およびロギング用にサーバー・サイドのWebサービス管理構成を作成します。
手動: oracle-webservices.xml
デプロイメント・ディスクリプタに手動で管理構成を入力します。
Oracle JDeveloper: Oracle JDeveloperのウィザードを使用してWebサービス管理オプションを選択します。ウィザードにより、この情報がoracle-webservices.xml
デプロイメント・ディスクリプタに入力されます。
WebServicesAssemblerまたはOracle JDeveloperツールを使用して、機能アサーションをWebサービスにアセンブル、または単に、機能アサーションをWSDLにアセンブルします。
WebServicesAssembler: 既存のWSDLに機能アサーションをアセンブルするには、genQosWsdl
コマンドを使用して、機能アサーションを含むファイル名(通常はoracle-webservices.xml
デプロイメント・ディスクリプタ)を指定します。
機能アサーションをWebサービスにアセンブルするには、genQos
引数をサポートするトップダウンまたはボトムアップ方式のいずれかのWebサービス・アセンブリ・コマンドをコールします。この引数は、指定するファイル(通常はoracle-webservices.xml
デプロイメント・ディスクリプタ)からアサーションを導出し、それらをWSDLに挿入するようにWebServicesAssemblerツールを変更します。
詳細は、「WebServicesAssemblerを使用した機能アサーションの追加方法」を参照してください。
Oracle JDeveloper: Webサービス管理構成ウィザードで「機能アサーション」オプションを選択して、WSDLに機能アサーションをアセンブルします。
WebServicesAssemblerまたはOracle JDeveloperを使用して、クライアント・コードを生成します。
WebServicesAssembler: WSDLおよびクライアント・サイドの構成ファイルを、genProxy
コマンド(J2SEクライアントの場合)またはgenInterface
コマンド(J2EEクライアントの場合)に渡します。クライアント・サイドの構成ファイルの指定にはddFileName
引数を使用します。
Oracle JDeveloper: 適切なOracle JDeveloperのウィザードを使用して、J2SEまたはJ2EEのクライアント・コードを生成します。
クライアント・コードを実行します。
J2SEクライアントの場合は、クライアントをコンパイルおよび実行します。
J2EEクライアントの場合は、デプロイ後にクライアントを実行します。
WebServicesAssemblerにより、Webサービスに信頼性の機能アサーションをアセンブルする(トップダウンまたはボトムアップ方式)、または単に、機能アサーションをWSDLにアセンブルするいずれかのオプションでアセンブルできます。この項の内容は、次のとおりです。
WebServicesAssemblerツールにより、Webサービスに機能アサーションを追加できます。ツールには、トップダウンまたはボトムアップ方式のいずれかのWebサービス・アセンブリ・コマンドで使用するブール型genQos
引数が用意されています。genQos
をtrue
に設定すると、WebServicesAssemblerツールはoracle-webservices.xml
デプロイメント・ディスクリプタのコンテンツから機能アサーションを導出し、それらをWSDLに入力します。
機能アサーションをoracle-webservices.xml
デプロイメント・ディスクリプタに入力します。
適切なWebServicesAssemblerコマンドをコールして、Webサービスをアセンブルします。genQos
引数をtrue
に設定して、WSDLに機能アサーションをアセンブルします。ddFileName
引数を使用して、アサーションを含むoracle-webservices.xml
デプロイメント・ディスクリプタを指定します。
関連資料:
|
WebServicesAssemblerツールには、追加のファイルを生成せずに機能アサーションをWSDLにアセンブルできるコマンド、genQosWsdl
が用意されています。
WebServicesAssemblerツールのgenQosWsdl
コマンドをコールします。
ddFileName
引数を使用して、機能アサーションを含むファイル名(通常はoracle-webservices.xml
デプロイメント・ディスクリプタ)を指定し、wsdl
引数を使用してアサーションを挿入するWSDL名を指定します。
関連資料: 『Oracle Application Server Web Services開発者ガイド』の「 |
例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> ...
次の項では、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サービス操作の表示」を参照してください。 |
詳細は、次を参照してください。
Webサービスにセキュリティ機能を追加する場合は、第4章「Webサービスのセキュリティの確保」および『Oracle Application Server Web Servicesセキュリティ・ガイド』を参照してください。
Webサービスに信頼できるメッセージング機能を追加する場合は、第5章「Webサービスの信頼性の確保」を参照してください。
Webサービスにロギングおよび監査を追加する場合は、第6章「メッセージの監査およびトレース」を参照してください。
Webサービスをトップダウン方式でアセンブルする場合は、『Oracle Application Server Web Services開発者ガイド』の「WSDLからのWebサービスのアセンブル」を参照してください。
Javaクラスを使用してWebサービスをアセンブルする場合は、『Oracle Application Server Web Services開発者ガイド』の「Javaクラスを使用したWebサービスのアセンブル」を参照してください。
EJBを使用してWebサービスをアセンブルする場合は、『Oracle Application Server Web Services開発者ガイド』の「EJBを使用したWebサービスのアセンブル」を参照してください。
JMSトピックおよび宛先を使用してWebサービスをアセンブルする場合は、『Oracle Application Server Web Services開発者ガイド』の「JMS宛先を使用したWebサービスのアセンブル」を参照してください。
PL/SQLパッケージ、SQL問合せ、DML文、Oracle Streams AQまたはサーバー・サイドJavaクラスなどのデータベース・リソースを使用してWebサービスをアセンブルする場合は、『Oracle Application Server Web Services開発者ガイド』の「データベースWebサービスのアセンブル」を参照してください。
J2EE Webサービス・クライアントをアセンブルする場合は、『Oracle Application Server Web Services開発者ガイド』の「J2EE Webサービス・クライアントのアセンブル」を参照してください。
J2SE Webサービス・クライアントをアセンブルする場合は、『Oracle Application Server Web Services開発者ガイド』の「J2SE Webサービス・クライアントのアセンブル」を参照してください。
Webサービスをパッケージ化およびデプロイする場合は、『Oracle Application Server Web Services開発者ガイド』の「Webサービスのパッケージ化およびデプロイ」を参照してください。
WebServicesAssemblerコマンドを使用してWebサービス・アーティファクトをアセンブルする場合は、『Oracle Application Server Web Services開発者ガイド』の「WebServicesAssemblerの使用方法」を参照してください。
Oracle JDeveloperを使用してWebサービスに管理情報を追加する場合は、Oracle JDeveloperのオンライン・ヘルプを参照してください。
Application Server Controlを使用してWebサービスに管理情報を追加する場合は、Application Server Controlのオンライン・ヘルプを参照してください。