プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Service Busでのサービスの開発
12c (12.1.3)
E53004-06
目次へ移動
目次

前
次

35 SBトランスポートの使用

この章では、SBトランスポートの概要と、サービスでの使用および構成方法について説明します。SBトランスポートは、RMIを使用してOracle製品をService Busと統合します。

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

35.1 SBトランスポートの概要

SBトランスポートによって、Oracle製品からRMIを使用して、Service Busプロキシ・サービスを同期的に呼び出すことができます。インバウンド・トランスポートでは、クライアントがRMIを使用してSBプロキシ・サービスにアクセスできます。アウトバウンド・トランスポートでは、RMIを使用してSBプロキシ・サービスを呼び出すことができます。デフォルトでは、T3プロトコル、IIOP、HTTP、T3、IIOPS、またはHTTPSを使用したすべてのサービスへのアクセスが、ターゲット・サーバーの構成に依存します。詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのデフォルト・ネットワーク接続の構成に関する項を参照してください。

35.1.1 SBトランスポートの機能

SBトランスポートは次をサポートしています。

  • トランザクション・コンテキストを伝播します。クライアントService Busサーバーで発生したトランザクションを必要に応じてSBプロキシ・サービスに伝播できます。

  • セキュリティ・コンテキストを伝播します。デフォルトでは、SBクライアント・スレッドに関連付けられたセキュリティ・コンテキストを使用してSBプロキシ・サービスを呼び出します。これには、ドメイン間の信頼を有効化しなければならない場合があります。『Oracle WebLogic Serverセキュリティの管理』のクロスドメイン・セキュリティのサポートに関する重要情報が記載された項を参照してください。

  • サービス・アカウントを使用したアウトバウンド・エンドポイントから、カスタムIDでSBプロキシ・サービスを呼び出します。

  • 非トランザクションの呼出しに対してタイムアウト値を指定します。Service Busが指定間隔以内にリクエストに応答しない場合、クライアント・リクエストは返されます。

  • リクエスト接続とレスポンス接続両方でのディスパッチ・ポリシーの関連付け。詳細は、『Oracle WebLogic Serverサーバー環境の管理』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項を参照してください。

  • JNDIプロバイダを指定せずにSBビジネス・サービスにルーティングする場合、RMI呼出しおよびcall-by-referenceを最適化します。

  • 次のサービス・タイプに対応します。

    • WSDLサービス

    • 任意のSOAPサービス

    • 任意のXMLサービス

  • 次のメッセージング・パターンに対応します。

    • インバウンド・トランスポートに対するリクエスト(一方向)およびリクエスト/レスポンス。

      Service Busクライアントの場合、メッセージング・パターンはデフォルトでSBアウトバウンド・トランスポートのパイプラインから継承されます。

      Service Bus以外のクライアントの場合、デフォルトのメッセージング・パターンはリクエスト/レスポンスになります。

    • アウトバウンド・トランスポートの環境値に対するリクエストおよびリクエスト/レスポンス。SBがサポートする環境値の詳細は、「SBトランスポートの環境値」を参照してください。

  • サービスの品質(QoS)のデフォルト値は次のとおりです。

    • Service Bus以外のクライアントの場合、Exactly-Onceです。

    • Service Busクライアントの場合、Best-Effortです。

    パイプラインのルーティング・オプションを使用してサービスのQoSを設定することもできます。詳細は、「サービスの品質」を参照してください。

35.2 SBトランスポートのエラー処理

ビジネス・サービスURIは、通信エラーが発生したときにオフラインにすることができます。ビジネス・サービスの操作設定を構成するときに、指定した再試行間隔の後、ビジネス・サービスのエンドポイントURIがオフラインになるように設定できます。詳細は、『Oracle Service Busの管理』のビジネス・サービス用のエンドポイントURIの監視と管理に関する項を参照してください。

SBプロキシ・サービスの呼出し中に接続エラーが発生すると、SBトランスポート・プロバイダによってBEA-380002エラー・コードが生成されます。接続エラーは、次のいずれかの理由で発生する可能性があります。

  • ターゲット・プロキシ・サービスが存在しません。

  • JNDIプロバイダ設定が正しくありません。

  • RMI呼出し中に、リモート例外またはネーミング例外が発生しています。

    ネーミング例外のタイプjavax.naming.NamingSecurityExceptionは、通常、呼出しで使用されたIDがターゲット・サーバーで認識されない場合に発生します。この例外が発生すると、リクエストは全般的な実行時エラーを返します。このエラーは、接続エラーとして処理されません。

  • 外部サービスは、SOAPペイロードをフォルト・コードとともに返します。

    フォルト・コードを処理するエラー・ハンドラが存在する場合、トランザクションはロールバック対象としてマークされません。エラー・ハンドラが存在しない場合、トランザクションはロールバック対象としてマークされます。

エラーが発生した際に、(返信アクション用のエラー・オプションを使用して)フォルトをキャッチしてフォルト・レスポンスを返信するエラー・ハンドラが存在する場合、エラーはアプリケーション・エラーとみなされ、トランザクションはロールバック対象としてマークされません。他のすべてのエラーの場合、トランザクションはロールバック対象としてマークされます。

SBプロキシ・サーバーによって返されるSOAPフォルトは、アプリケーション・エラーとして処理されます。

35.3 UDDIとSBトランスポート

UDDIレジストリに対してサービスのインポートとパブリッシュを行うことができます。詳細は、「UDDIレジストリの操作」を参照してください。

35.3.1 サービスのパブリッシュ

プロキシ・サービスをUDDIレジストリにパブリッシュする場合、パブリッシュしたサービスに関連付けられたURIの形式は、次のとおりです。

sb://host:port/service_name

ここで、host:portはパブリッシュするプロキシ・サービスをホストしているサーバーのホスト名とリスニング・ポートを示します。

パブリッシュするプロキシ・サービスで「SSLを使用」オプションが有効になっている場合、パブリッシュされたサービスに関連付けられたURIの形式は、次のとおりです。

sbs://host:port/service_name

パブリッシュするプロキシ・サービスがクラスタ上で実行されている場合、host:portconfig.xmlファイルのClusterセクションにあるCluster Address設定になります。この値は、クラスタ内の任意のWebLogic Serverへの接続に使用される1つのホスト名およびポート番号にするか、Service Busクラスタ内の管理対象サーバーのホスト名およびリスナー・ポートのカンマ区切りのリストにできます。詳細は、『Oracle WebLogic Server JNDIアプリケーションの開発』のWebLogic JNDIに関する項を参照してください。

詳細は、「UDDIレジストリへのプロキシ・サービスのパブリッシュ」を参照してください。

35.3.2 サービスのインポート

UDDIレジストリからサービスをインポートする場合、SBトランスポート・プロバイダは、サービスURIプロパティのsbschemeおよびhost:port情報を、sbschemeに基づく適切なプロトコルを使用してService Busサーバー上で登録されたJNDIプロバイダと照合します。sbschemeはSBトランスポート・ベースのサービスのURIスキームで、sbまたはsbsのいずれかになります。

sbschemeがsbである場合、トランスポート・プロバイダはT3、T3S、IIOP、IIOPS、HTTP、またはHTTPSプロトコルを(この順序で)使用してJNDIプロバイダを検索します。sbschemeがsbsである場合、トランスポート・プロバイダはT3Sプロトコル、IIOPS、次にHTTPSを(この順序で)使用してJNDIプロバイダを検索します。サービスURIプロパティに一致するJNDIプロバイダは、Service Busにインポートするビジネス・サービスのエンドポイントURIを生成するために使用されます。

一致するJNDIプロバイダがない場合、インポートは失敗し、デフォルトのコンテキストが使用されます。ただし、インポートされたURIがローカルURIでスキームがsb以外の場合を除きます。サービスにJNDIプロバイダが指定されていないので、サーバーと同じ場所にあるものと見なされることを意味します。

たとえば、サービスURIプロパティ値が次のようになっている場合を考えます。

sbs://remote_oracle_service_bus_host:7002/myservice

Service Busにインポートされたビジネス・サービスに生成されるURIは、次のようになります。

sb://my_jndi_provider/myservice

ここで、my_jndi_providert3s://remote_oracle_service_bus_host:7002 URLのService Busサーバー上で登録されたJNDIプロバイダ・リソースです。

詳細は、「UDDIレジストリの操作」を参照してください。

35.4 SBトランスポート構成のリファレンス

この項では、SBトランスポートを使用するビジネスおよびプロキシ・サービス用に構成できる環境値とプロパティについて説明します。また、SBトランスポート用のJNDIプロバイダとエラー処理についても説明します。

35.4.1 SBトランスポートの環境値

SBトランスポートでサポートされる環境値を表35-1に示します。これらの変数に指定した値により、特定のSBベースのビジネスまたはプロキシ・サービス用に構成されたプロパティがオーバーライドされます。

表35-1 SBトランスポートの環境変数

環境値 使用目的

タイムアウト(カテゴリ:操作)

ビジネス・サービスのタイムアウト値(秒)を指定します。

サービス・アカウント(カテゴリ:セキュリティ)

JNDIコンテキスト・セキュリティの場合に、Oracle BPEL Process Manager配信サービスへのアクセスに使用されるService Busサービス・アカウント・リソース。SBベースのビジネス・サービスに関連付けられたユーザー資格証明を更新するために使用します。

SSLを使用(カテゴリ:セキュリティ)

プロキシ・サーバー用のセキュアなプロトコルを使用してサービスを公開するかどうかを指定します。詳細は、「SBトランスポートを使用するプロキシ・サービスの構成」を参照してください。

35.4.2 SBトランスポートを使用するプロキシ・サービスの構成

Service Busクライアントは、JNDIコンテキストおよびプロキシ・サービスURIを使用してService Busサーバーに接続します。クライアントのセキュリティ・コンテキストは、プロキシ・サービスを呼び出すために使用されます。デフォルトのQoSはExactly-onceです。クライアントは必要に応じて、QoSを変更し、リクエストのタイムアウト値を設定し、適切なメッセージ・パターンを指定できます。メッセージはインバウンドSBトランスポートで受信し、パイプラインで処理されます。

表35-2に、SBベースのプロキシ・サービスの構成に使用するプロパティを示します。エンドポイントのエンドポイントURLをプロキシ・サービス名として指定します。プロキシ・サービスを作成する手順については、「プロキシ・サービスの作成と構成」を参照してください。

表35-2 プロキシ・サービス用のSBトランスポート・プロパティ

プロパティ 説明

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するWebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

SSLを使用

セキュアなプロトコルを使用してサービスを公開する場合は、このオプションを選択します。これは、クライアントがSSLプロトコルを使用してSBプロキシ・サービスにアクセスする必要があることを意味しますが、クライアントが非セキュアなプロトコルを使用してサービスにアクセスすることを防止するわけではありません。また、次の場合は、サービスに関連付けられたエンドポイントURIがsbではなくsbsになります。

  • セキュア・サービスをUDDIでエクスポートし、セキュリティおよびポリシーの構成の詳細をインポート時に保持する場合。

  • 効率的なWSDLファイル内。

注意: プロキシ・サービスは特定のプロトコルにバインドされません。必要に応じてSSL、IIOPまたはHTTPトンネリングを有効にする作業は、Oracle WebLogic Server管理者が行う必要があります。

このフラグは、エクスポート時のサービスのURIスキーム、またはUDDIからインポートされるときのビジネス・サービスURIに対するJNDIプロバイダの選択にのみ影響します。クライアントが非セキュアなプロトコルを使用してサービスにアクセスすることを防止するわけではありません。

35.4.3 SBトランスポートを使用するビジネス・サービスの構成

SBビジネス・サービスは、SBプロキシ・サービスに対してのみメッセージを送信できます。ビジネス・サービスのエンドポイントURIに指定されたJNDIプロバイダは、リモートService Busサーバー上でJNDIルックアップを実行します。クライアントのユーザー資格証明またはビジネス・サービスに関連付けられたサービス・アカウントに定義済のユーザー資格証明を使用して、プロキシ・サービスを呼び出します。必要に応じて、タイムアウト値およびカスタム・ディスパッチ・ポリシーをビジネス・サービスに関連付けることもできます。また、サービスのQoSを、ルーティング・オプションを使用して設定することができます。

次の形式を使用して、サービスのエンドポイントURIを指定します。

sb://jndi_provider_name/service_name

説明:

  • jndi_provider_nameはJNDIプロバイダの名前で、対応するService Bus JNDIプロバイダ・リソースを示します。これはオプションです。省略した場合は、デフォルトのコンテキストが使用されます。これは、サービスとService Busサーバーが同じマシンに存在することを意味します。呼出しが同じ場所にある場合、シリアライズはサービス呼出し中にスキップされます。詳細は、「JNDIプロバイダ」を参照してください。

  • service nameは、ターゲット・サービスであり、リモート・プロキシ・サービスURIに対応します。

次の表に、SBベースのビジネス・サービスの構成に使用するプロパティを示します。詳細は、「ビジネス・サービスの作成と構成」を参照してください。

表35-3 ビジネス・サービス用のSBトランスポート・プロパティ

プロパティ 説明

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するWebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

タイムアウト

ビジネス・サービスがタイムアウトになり、実行時エラーを返すまでの期間を秒単位で入力します。

指定したタイムアウト値は、次の場合には適用されません

  • サービス・エンドポイントのQoSがExactly-Onceである場合。

  • 負の値が指定された場合。

  • タイムアウト値が、メッセージ・フローにおいて、アウトバウンド・リクエストのオプションのTimeoutカスタム・ヘッダーでオーバーライドされる場合。詳細は、「コンソールでのトランスポート・ヘッダー・アクションの追加」を参照してください。

サービス・アカウント

リモート・プロキシ・サービスの呼出しに使用する必要があるユーザー資格証明を指定します。サービス・アカウントが指定されない場合は、このビジネス・サービスのインバウンド・プロキシ・サービス(インバウンド・クライアント)のユーザー資格証明が、セキュリティ・コンテキストの伝播に使用されます。詳細は、「サービス・アカウントの操作」を参照してください。

35.4.3.1 JNDIプロバイダ

JNDIプロバイダは、SBプロキシ・サービスに対応するRMIスタブを取得するためにサービスがデプロイされているService Busサーバーを指します。JNDIプロバイダには、リモート接続とEJBスタブのための高性能なキャッシング・メカニズムがあります。JNDIプロバイダでは、T3、IIOP、HTTP、T3s、IIOPS、またはHTTPS転送プロトコルを使用できます。Service BusからOracle WebLogic Serverドメインへの推奨される通信プロトコルは、T3またはT3Sです。メッセージがファイアウォールを通過する必要がある場合は、コンテキスト内でHTTPプロバイダのURLを使用し、Oracle WebLogic Serverサーバー上でHTTPトンネリングを有効にすることにより、HTTPトンネリングを使用できます。

注意:

JNDIプロバイダでサポートされるプロトコルがリモートService Busサーバーにあるかどうかの確認は、管理者が行う必要があります。

ビジネス・サービスを作成するとき、ビジネス・サービスにJNDIプロバイダを関連付けることができます。詳細は、「JNDIプロバイダ・リソースの操作」を参照してください。