ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Service Bus開発者ガイド
11gリリース1 (11.1.1.6.2)
B61435-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

31 ローカル・トランスポート

この章では、ローカル・トランスポートの概要と、プロキシ・サービスでの使用および構成方法について説明します。

この章の内容は以下のとおりです。

31.1 はじめに

通常、サービス・バス・アーキテクチャには、複雑なメッセージ・フローが含まれています。そのメッセージ・フローでは、メッセージは、より大きな複数のプロキシ・サービス・フローにまとめられる複数のプロキシ・サービスにルーティングされています。これらの複数のプロキシ・サービスのシナリオにおける個々のプロキシ・サービスは、フローの次のプロキシ・サービスにルーティング、パブリッシュ、またはコールアウトされます。

複数のプロキシ・サービスを設計する理由は、エンド・ツー・エンドのメッセージ・フローの様々なコンポーネントのモジュール性と区分化をサポートするためです。

複数のプロキシ・サービス・フローでローカル・トランスポートを使用することで、次の機能が確実にサポートされます。

31.2 ローカル・トランスポート・プロキシ・サービスの機能と特性

ローカル・トランスポート・ベースのプロキシ・サービスは、その他のプロキシ・サービスからのみ呼び出すことができ、その他のクライアントからは呼び出せません。呼出しはOracle Service Busによって最適化されます。ローカル・プロキシ・サービスはURIを持ちません。ただし、ローカル・トランスポート・プロキシ・サービスによってサポートされるサービスとインタフェースのタイプには制約はありません。1つの例外は、SAMLがパス・スルー・シナリオでのみサポートされることです。

呼出しを行うプロキシ・サービスのサービス品質(QoS)がExactly Onceに定義されている場合、そのサービスのトランザクションは、ローカル・トランスポート・プロキシ・サービスに伝播されます。つまり、呼び出されたローカル・トランスポート・プロキシ・サービスは呼出しを行ったプロキシ・サービスのトランザクション動作を継承します。

プロキシ・サービスはトランスポート・レベルまたはメッセージ・レベルで認証を行うことができます。メッセージ・レベルが有効な場合は、メッセージ・レベルで認証されたクライアントが有効になります。メッセージ・レベルで認証されたクライアントが有効でない場合は、トランスポート・レベルで認証されたクライアントが有効になります(トランスポート・レベルが有効な場合)。メッセージ・レベルおよびトランスポート・レベルで認証されたクライアントのいずれも有効になっていない場合、匿名のクライアントが有効なクライアントになります。

プロキシ・サービスがローカル・トランスポート・プロキシ・サービスを呼び出す場合、呼出しを行うプロキシ・サービスの有効なクライアントが、呼び出されるローカル・プロキシ・サービスのトランスポート・レベルのクライアントになります。ローカル・トランスポート・プロキシ・サービスでは、アクセス制御ポリシーを使用して、このクライアントにアクセスを認可できます。この方法により、エンド・ツー・エンドのメッセージ・フロー全体で、最初のプロキシ・サービスのクライアントを、後続のすべてのプロキシ・サービスに伝播できます。

ローカル・トランスポート・プロキシ・サービスは、ユーザー定義のトランスポート・ヘッダーをサポートします。プロキシ・サービスでHTTPトランスポートを使用するシナリオを想定してください。HTTPトランスポートにより、ローカル・プロキシ・サービスにルーティングし、HTTPプロキシ・サービスはトランスポート・ヘッダー・アクションを使用して、ヘッダーをローカル・プロキシ・サービスに渡します。このシナリオでは、HTTPプロキシ・サービスがContent-Typeヘッダーを受け取った場合、このヘッダーをユーザー・ヘッダーとしてローカル・トランスポートで使用できるため、型付きのトランスポート・ヘッダーとしてではなく、標準のユーザー・ヘッダーを使用してアクセスできます。

Oracle Service Busのテスト・ブラウザからローカル・トランスポート・プロキシ・サービスを呼び出すことができます。その他のすべてのサービスと同様に、ローカル・トランスポート・プロキシ・サービス用にメトリックが収集されます。

31.3 ローカル・トランスポート・プロキシ・サービスのメッセージ処理

ローカル・トランスポート・プロキシ・サービスのメッセージ処理のオプションを指定できます。

具体的には、該当する場合に、ローカル・トランスポート・プロキシ・サービスがMTOM/XOP形式でインバウンド・メッセージをデコードおよび解析し、MTOM/XOP形式を使用してレスポンスを送信できます。SOAP Message Transmission Optimization Mechanism (MTOM)は、Webサービス間でバイナリ・データを送受信する方法です。MTOMは、XML-binary Optimized Packaging (XOP)を使用してバイナリ・データを転送します。

同様に、ローカル・トランスポート・プロキシ・サービスがHTTPトランスポート・プロキシ・サービスを通じてチェーンされている場合、ローカル・トランスポート・プロキシ・サービスは添付ファイルをディスクにページし、(添付ファイルのコンテンツをメモリーにバッファリングせずに)ストリーミング形式で処理するかどうかの設定を継承します。つまり、もし外部のHTTPトランスポート・プロキシ・サービスが添付ファイルをディスクにページするように構成されている場合、チェーンされたローカル・トランスポート・プロキシ・サービスもこの形式で添付ファイルを処理します。これにより、プロキシ・サービスで、大きな添付ファイルを効率的に処理できます。

プロキシ・サービスのメッセージ処理の構成の詳細は、4.3.4項「プロキシ・サービスの「メッセージ処理構成」ページ」を参照してください。

31.4 ローカル・トランスポート・プロキシ・サービスの使用方法

ローカル・トランスポート・プロキシ・サービスを使用してサポートされる一般的なシナリオは、プロキシ・サービスを異なるトランスポートを使用して呼び出す必要があるシナリオです。これは、メッセージ・フローのパスで、フロント・エンド・プロキシ・サービス(トランスポートごとに1つのサービス)のセットをローカル・トランスポート・プロキシ・サービスの前に置くことによって実現されます。

これらのフロント・エンド・プロキシ・サービスは、メッセージをローカル・トランスポート・プロキシ・サービスにルーティングするだけです。次の図は、このシナリオについて説明しています。

図31-1 ローカル・トランスポートを使用したコンバージェンスの実装

図31-1の説明が続きます
「図31-1 ローカル・トランスポートを使用したコンバージェンスの実装」の説明

もう1つの一般的なシナリオは、プロキシ・サービスのタイプが任意のSOAPまたは任意のXMLである場合に、プロキシ・サービスが、異なるエンタープライズ・システムに対するフロント・エンドとして機能するシナリオです。このフロント・エンド・プロキシ・サービスでは、様々なフォーマットでメッセージを受信し、受信したすべてのメッセージに共通の方法(WS-Addressing SOAPヘッダーなど)を使用して、メッセージを適切なローカル・トランスポート・プロキシ・サービスにルーティングできます。

このシナリオでは、フロント・エンド・プロキシ・サービスは、エンタープライズ・システムまたはメッセージ・フォーマットとセマンティクスの情報をほとんど持たない汎用ルーターとして機能します。設計時にルーティング・ルールの情報をさらに抽象化するために、フロント・エンド・プロキシ・サービスは、動的なルーティングを使用してメッセージをローカル・トランスポート・プロキシ・サービスにルーティングできます。動的なルーティングがプロキシ・サービスでどのように使用されるかを示す例は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の動的ルーティングの使用に関する項を参照してください。

フロント・エンド・サービスからメッセージをルーティングされた各ローカル・トランスポート・プロキシ・サービスは、今度は、特定のビジネス・サービスのフロント・エンド・プロキシ・サービスとして機能します。ローカル・トランスポート・プロキシ・サービスは、ルーティングするビジネス・サービスで必要なメッセージ・フォーマットを認識しています。

このシナリオでは、これらのローカル・トランスポート・プロキシ・サービスは、機能上のプロキシ・サービスとして動作します。機能上のプロキシ・サービスの役割は、特定のビジネス・サービスの呼出しにアクセス制御を適用したり、ターゲット・ビジネス・サービスを適切に呼び出すために必要なメッセージのトランスフォーメーションを実行したりすることです。次の図は、このシナリオについて説明しています。

図31-2 ローカル・トランスポートを使用した複数のビジネス・サービスへのアクセス

図31-2の説明が続きます
「図31-2 ローカル・トランスポートを使用した複数のビジネス・サービスへのアクセス」の説明

31.4.1 プロキシ・サービス間でのSOAPフォルトの伝播

ローカル・プロキシ・サービスをチェーンすると、$fault変数のSOAPフォルトは、あるプロキシ・サービス・パイプラインから別のプロキシ・サービス・パイプラインに自動的に伝播されません。次の例を参照してください。

クライアント→P1→P2→ビジネス・サービス→バックエンド・サービス(P1とP2はプロキシ・サービス)。

バックエンド・サービスでSOAPフォルトが発生すると、そのフォルトはP2の$fault変数に伝播されます。ただし、P2のSOAPフォルトの値は、P1の$fault変数に自動的に伝播されないため、クライアントに戻されません。

SOAPフォルトをあるプロキシから別のプロキシに伝播するには、次の手順を実行します。

  1. P2で、失敗時の返信アクションを含むエラー・ハンドラを追加します。『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の返信アクションの追加に関する項を参照してください。これにより、$bodyにフォルト情報を格納したSOAPメッセージが戻されます。

  2. P1で、目的のSOAPエラーの詳細をクライアントに戻す必要に応じて、$bodyを変換します。

Oracle Service BusによるSOAPフォルトの処理方法の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のエラー・メッセージの生成とレポートおよび返信に関する項を参照してください。

31.5 ローカル・プロキシでのOWSMセキュリティの使用

Oracle Web Services Manager (OWSM)のサービス・ポリシーをローカル・プロキシ・サービスに添付して、各ローカル・プロキシに着信するメッセージに特定のセキュリティ制御を適用できます。

この項では、プロキシ・サービスがセキュリティ・ヘッダーを含むメッセージをローカル・プロキシなどの他のプロキシ・サービスに転送する場合に、OSBが実行時にWS-Securityを処理する方法について説明します。メッセージ転送は、ルーティング、サービス・コールアウト、パブリッシュなどのアクションを通じて発生します。

プロキシ・サービスは、メッセージを他のプロキシ・サービスに転送する場合に、アウトバウンドWS-Security処理を実行しません。次の図は、この動作を説明しており、プロキシ間接続の異なるシナリオにおけるWS-Security構成を示しています。他のプロキシ・サービスからメッセージを受信するローカル・プロキシ・サービスで適切にOWSMサービス・ポリシーを使用できるように、これらのシナリオを使用してその動作を理解してください。


注意:

次のシナリオでは、ローカル・プロキシにメッセージを転送するフロント・エンド・プロキシ・サービスについて説明します。ただし、この項で説明している動作は、トランスポート・タイプにかかわらず、プロキシ間接続の呼出しにも適用されます。


図31-3は、次のいずれかの特徴を持つフロント・エンド・プロキシにメッセージを送信するクライアント・ポリシーが適用されたクライアントを示しています。

どの場合でも、フロント・エンド・プロキシは、メッセージ内に少なくとも1つのセキュリティ・ヘッダーを検出します。プロキシ・サービスは、アウトバウンドWS-Security処理を実行せずにこのメッセージをローカル・プロキシに渡します。ローカル・プロキシは、OWSMポリシーを含む場合と含まない場合があります。

図31-3では、予期されるセキュリティ・ヘッダーがメッセージに含まれるため、ローカル・プロキシ2は例外をスローせずにメッセージを受信します。セキュリティ処理を部分的に実行するポリシーをフロント・エンド・プロキシが含む場合でも(認証処理は行うがメッセージ保護処理は行わないなど)、転送されたメッセージにはセキュリティ・ヘッダーが含まれます。

図31-3 ローカル・プロキシにセキュリティ・パススルーを行うフロント・エンド・プロキシ

図31-3の説明が続きます
「図31-3 ローカル・プロキシにセキュリティ・パススルーを行うフロント・エンド・プロキシ」の説明

図31-4は、フロント・エンド・プロキシにメッセージを送信するクライアント・ポリシーが適用されたクライアントを示しています。フロント・エンド・プロキシは、アクティブであり、メッセージのすべてのWS-Securityヘッダーを処理するOWSMサービス・ポリシーを含みます。インバウンド・サービス・ポリシーが処理され、そのセキュリティ・ヘッダーのメッセージが削除されます。フロント・エンド・プロキシは、他のプロキシにメッセージを転送するため、アウトバウンドWS-Security処理は実行されず、セキュリティ・ヘッダーのないメッセージがローカル・プロキシに転送されます。一方のローカル・プロキシには、セキュリティ・ヘッダーを予期しているOWSMサービス・ポリシーが含まれており、セキュリティ・ヘッダーのないメッセージが到着すると例外がスローされます。他方のローカル・プロキシには、セキュリティ・ポリシーではなく施行の発生しないOWSMポリシーが含まれているため、セキュリティ・ヘッダーのないメッセージは正常にパススルーされます。

図31-4 ローカル・プロキシへの転送前にすべてのセキュリティ・ヘッダーを処理するフロント・エンド・プロキシ

図31-4の説明が続きます
「図31-4 ローカル・プロキシへの転送前にすべてのセキュリティ・ヘッダーを処理するフロント・エンド・プロキシ」の説明


注意:

この項で説明している動作は、WLS 9ポリシーを含むプロキシ・サービスには適用されません。プロキシ・サービスがWLS 9ポリシーを含む別のプロキシ・サービスにメッセージを転送する場合、転送側のプロキシは、アウトバウンド・セキュリティ処理を実行します。WLS 9ポリシーの詳細は、第51章「Oracle Service Busプロキシ・サービスとビジネス・サービスでのWS-Policyの使用」を参照してください。


31.6 制限事項

ローカル・トランスポートの制限は以下のとおりです。