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

前
次

D トランスポートSDKのインタフェースおよびクラス

この付録では、Service BusトランスポートSDKで提供されるクラスおよびインタフェースを示し、それらについて簡単に説明します。

カスタム・トランスポート・プロバイダの開発に必要なインタフェースの詳細は、「カスタム・トランスポート・プロバイダの開発」を参照してください。

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

D.1 はじめに

この章で説明されているトランスポートSDKクラスおよびインタフェースは、特に記載のないかぎり、OSB_ORACLE_HOME/lib/modules/oracle.servicebus.kernel-api.jarにあります。OSB_ORACLE_HOMEは、Service Busをインストールした場所です。

クラスとメソッドの詳細は、Oracle Service Bus Java APIリファレンスを参照してください。

D.2 スキーマで生成されるインタフェース

トランスポートSDKインタフェースの多くは、XMLスキーマ・コンパイラ・ツールによってXMLスキーマから生成されます。次のインタフェースのソース(XMLスキーマ)は、ファイルTransportCommon.xsdで提供されています。このファイルは、サービス・エンドポイントの構成用の基本となるスキーマ定義ファイルです。このファイルは、OSB_ORACLE_HOME/lib/modules/oracle.servicebus.kernel-api.jarにあります。

スキーマで生成されるインタフェースは次のとおりです。

  • EndPointConfiguration: エンドポイント構成のベース・タイプ。エンドポイントは、メッセージの送信元または送信先となるService Busリソースです。EndPointConfigurationは、インバウンド・エンドポイントまたはアウトバウンド・エンドポイントのデプロイメントおよび操作に必要なパラメータ一式を示します。

  • RequestMetaDataXML: インバウンド・リクエストまたはアウトバウンド・リクエストのメタデータの基本型。メタデータは、メッセージのペイロードに含まれず、個別に送信され、メッセージを処理するためのコンテキストとして使用されます。メタデータとして送信できる情報の例には、Content-Typeヘッダー、セキュリティ情報、ロケール情報などがあります。

  • RequestHeadersXML: 一連のインバウンドまたはアウトバウンド・リクエスト・ヘッダーの基本型。

  • ResponseMetaDataXML: インバウンド・メッセージまたはアウトバウンド・メッセージのレスポンス・メタデータの基本型。

  • ResponseHeadersXML: 一連のレスポンス・ヘッダーの基本型。

  • TransportProviderConfiguration: このプロバイダが(a)エンドポイントのサービスの説明(WSDLなど)を生成するかどうか、(b)インバウンド(プロキシ)エンドポイントをサポートするかどうか、または(c)アウトバウンド(ビジネス・サービス)エンドポイントをサポートするかどうかを構成できます。

D.3 汎用クラスおよびインタフェース

この項では、独自のカスタム・トランスポートの開発時に使用する、汎用トランスポートSDKクラスおよびインタフェースの概要を説明します。ここで説明する各クラスおよびインタフェースの詳細は、Oracle Service Bus Java APIリファレンスを参照してください。

D.3.1 汎用クラスのサマリー

TransportManagerHelperクラス: クライアントがトランスポート・サブシステムに関する一部の一般的なタスクを実行できるようにするヘルパー・クラス。

ServiceInfoクラス: トランスポートの構成およびバインディング・タイプなどのサービスについての情報を示すラッパー・クラス。

TransportOptionsクラス: メッセージの送受信に関するオプションを提供します。TransportOptionsには、複数行セットアップおよび単一行使用の2つの使用スタイルがあります。

EndPointOperationsクラス: トランスポート・プロバイダへの通知を行う、様々なタイプのトランスポート・エンドポイントのライフサイクル関連のイベントについて説明します。ネストされたクラスには、CommonOperationCreateDeleteEndPointOperationTypeEnumResumeSuspendおよびUpdateがあります。

Refクラス: 構成システムで管理されるリソース、プロジェクトまたはフォルダを一意に表します。このクラスは、OSB_ORACLE_HOME/lib/modules/oracle.servicebus.configfwk.jarにあります。

TransportValidationContextクラス: エンドポイント構成の検証チェックを実装する際に使用できる情報をトランスポート・プロバイダに提供するコンテナ。

Diagnosticsクラス: 特定のリソースに関連するDiagnosticエントリの集合が含まれます。このクラスは、OSB_ORACLE_HOME/lib/modules/oracle.servicebus.configfwk.jarにあります。

Diagnosticクラス: リソースに関連する特定の検証メッセージを表します。Diagnosticオブジェクトは、リソースに変更があった際に実行される検証の結果として生成されます。このようなシステム内の変更は、変更されたリソース、および変更されたリソースに(過渡的に)依存するその他のすべてのリソースの検証をトリガーします。このクラスは、OSB_ORACLE_HOME/lib/modules/oracle.servicebus.configfwk.jarにあります。

NonQualifiedEnvValueクラス: 構成データ内にある環境依存の値のインスタンスを表します。通常、環境依存の値は、あるドメインから別のドメインに構成が移動された場合に変わります。たとえば、サービスのURIは、テスト・ドメインと本番ドメインで異なる場合があります。このクラスは、OSB_ORACLE_HOME/lib/modules/oracle.servicebus.configfwk.jarにあります。

D.3.2 汎用インタフェースのサマリー

TransportManagerインタフェース: 様々なトランスポート・プロバイダの管理、エンドポイントの登録、制御、インバウンド・メッセージおよびアウトバウンド・メッセージの処理などを一元化するための主要ポイントを提供するシングルトン・オブジェクト。

TransportProviderインタフェース: 転送プロトコル固有の構成および実行時プロパティの中心的な管理ポイントを表します。サポートされているプロトコルごとに、TransportProviderの単一のインスタンスが存在します。たとえば、HTTPトランスポート・プロバイダやJMSトランスポート・プロバイダなどに、それぞれ単一のインスタンスが存在します。

BindingTypeInfoインタフェース: サービスのバインディングの詳細について説明します。実装は、Service Busの複数の内部構造を包むコンビニエンス・ラッパー・クラスです。トランスポート・プロバイダの必要に応じて他のメソッドを追加できます。

TransportWLSArtifactDeployerインタフェース: Service Busのデプロイメントとともに、Oracle WebLogic Server関連のアーティファクトをデプロイ、アンデプロイまたは変更する必要があるモジュール用のプラグイン・インタフェース。たとえば、場合によっては、サービスの作成に応じてOracle WebLogic Serverのキューをデプロイする必要があります。

ヒント:

詳細は、「TransportWLSArtifactDeployerの実装が適している場合」を参照してください。

SelfDescribedTransportProviderインタフェース: TransportProviderを拡張します。任意のトランスポート・エンドポイントからサービスのバインディング・タイプについての説明を生成するトランスポート・プロバイダは、このインタフェースを実装する必要があります。この例としては、EJBトランスポート・プロバイダがあります。

SelfDescribedBindingTypeInfoインタフェース: EJBサービスなどの自己記述型のサービスのBindingTypeInfoインタフェースを拡張します。

WsdlDescriptionインタフェース: 登録されているService Busサービスに関連付けられているWSDLドキュメントについて説明します。

TransportCustomBindingProviderインタフェース: WSDLベースのトランスポートのための効果的なWSDLドキュメントの生成中に使用される、SOAPバインディングの拡張可能要素またはカスタムService Busバインディングのすべての要素の生成を促進するためのクラスを表します。<soap:binding>要素のトランスポートURIや、<soap:address>のロケーション属性などの情報が含まれます。

ServiceTransportSenderインタフェース: トランスポート・エンドポイントに関連付けられている登録済のサービスにアウトバウンド・メッセージを送信します。TransportProvider.sendMessageAsync()は、プロバイダがアウトバウンド・リクエストのペイロードおよびメタデータを取得できるServiceTransportSenderのインスタンスを取得します。このインタフェースは、TransportSenderを拡張します。

CredentialCallbackインタフェース: トランスポート・プロバイダは、Service Busからこのコールバック・インタフェースのインスタンスを取得します。トランスポート・プロバイダは、そのメソッドを呼び出して、アウトバウンド認証に使用する資格証明を取得できます。

TransportEndPointインタフェース: トランスポート・エンドポイントは、サービス・メッセージの送信元または送信先となるService Busのエンティティまたはリソースです。

D.4 SourceおよびTransformerクラスとインタフェース

この項では、SourceおよびTransformerの基本インタフェース、Service Busで提供される具体的なSources、およびサポート・クラスについて説明します。詳細は、「メッセージ・コンテンツの設計」を参照してください。

D.4.1 SourceおよびTransformerインタフェースの概要

Sourceインタフェース: 任意の形式のソース・コンテンツを表します。Sourcesは、Transformerインスタンスを介して他のSourcesに変換できます。Sourceは、少なくとも、このインタフェースで定義されている2つのメソッドを使用して、バイトベースのストリームへの変換をネイティブにサポートする必要があります。Sourceでは、シリアライゼーション中に文字セット・エンコーディングなどの様々なTransformOptionsを考慮することもできます。

SingleUseSourceインタフェース: あるタイプのSourceが1回にかぎり使用できることを示すマーカー・インタフェース。Sourceがまだ使用できる(有効)かどうかを判断するために使用できる1つのヘルパー・メソッドも提供します。

Sourceインタフェースを実装するSourceクラスを作成する場合、Service Busは、最初から入力ストリームを取得するたびに複数回getInputStream()メソッドをコールできます。SourceクラスがSingleUseSourceを実装する場合、Service Busは、getInputStream()を1回のみコールします。ただし、この場合、Service Busは、メッセージ全体をメモリーにバッファします。

Transformerインタフェース: あるタイプのSourceを別のタイプに変換します。このインスタンスは、どのタイプのソース間で変換できるかを示します。サポートされる入力ソースおよび出力ソースによって示される完全な製品間トランスフォーメーションをサポートするには、トランスフォーマが必要です。つまり、トランスフォーマは、サポートされるすべての入力ソースを、サポートされるすべての出力ソースに変換できる必要があります。

D.4.2 SourceおよびTransformerクラスの概要

StreamSourceクラス: InputStreamからコンテンツを読み込むバイトストリームSource。バイト・ストリームSourceであるため、シリアライゼーション・メソッドはトランスフォーメーションのオプションを考慮しません。

注意:

このストリームはInputStreamによってバックアップされるため、1回のみ使用するSourceとなります。両方のシリアライゼーション・メソッドは、基底の同じInputStreamから取得され、そのコンテンツは1度使用すると、失われます。エラーが発生しないことを前提とした場合、プッシュ・ベースのwriteTo()メソッドによりすべてのデータが即時に使用されます。プルベースのgetInputStream()は、実際に基底のInputStreamをコール元に直接提供します。

ByteArraySourceクラス: バイト配列からコンテンツを読み込むバイトストリームSource。バイト・ストリームSourceであるため、シリアライゼーション・メソッドはトランスフォーメーションのオプションを考慮しません。

StringSourceクラス: 単一のStringによってバックアップされるSource。シリアライゼーションは、単に、文字セット・エンコーディングが設定された文字データです。

XmlObjectSourceクラス: Apache XBeanのSourceコンテンツはApache XBeanとして表されます。XBeanは、型付きであるため、SchemaTypeオブジェクトおよび関連するClassLoaderが付随する場合があります。ただし、これらはどちらも省略可能であり、XBeanを型なしのXMLにすることもできます。

DOMSourceクラス: そのコンテンツがDOMノードに由来するSource。参照されるノードは、独立したorg.w3c.dom.Documentである場合も、より大きなドキュメント内の内部ノードである場合もあります。

MFLSourceクラス: MFLコンテンツを表します。MFLデータは、基本的には、MFL定義によって論理構造が指定されたバイナリ・データです。CSVはMFLデータの簡単な例ですが、構造は任意に複雑になる場合もあります。データの論理的表現およびメモリー内表現は、XMLドキュメントですが、シリアライズされた表現は構造化されていない生のバイナリ・データです。

SAAJSourceクラス :SAAJ SOAPMessageオブジェクトによってバックアップされるSource。通常、SAAJSourceは、MessageContextSourceおよびMimeSourceとの間で変換されます。

MimeSourceクラス: ヘッダーを持つ任意のコンテンツを示すSource。基本的に、これはMIMEパートを表すSourceです。ヘッダーはRFC822に準拠する必要がありますが、Sourceは任意のタイプにできます。このSourceのシリアライゼーション形式は、完全準拠のMIMEパッケージです。このSourceは、Content-Transfer-Encodingにも対応しており、ヘッダーがある場合、基底のコンテンツ・ストリームを適切にエンコードします。これは、コンストラクタに提供されているSourceが、まだエンコードされておらず、生の形式である必要があることを意味しています。

MessageContextSourceクラス: すべてのメッセージ・コンテンツを示すSource。メッセージと添付のSourceは、後で処理できるように型なしのままになっています。ただし、最終的に、添付ソースの多くはオブジェクトに変換され、メッセージ・ソースの多くは、XmlObjectSourceStringSourceなどの特定の型付きのソースに変換されます。

注意:

MessageContextSourceのシリアライゼーション形式は、メッセージ・ソースおよび添付ソースのネイティブのシリアライゼーションにかかわらず、MIME multipart/relatedパッケージです。ただし、シリアライズされたオブジェクトが複数回必要な場合は、SourceMimeSourceに変換する方法が最適です。

TransformOptionsクラス: 一連の変換オプションを表します。このクラスのインスタンスは、Transformerクラスと併せて使用され、入力ソースの出力ソースへの変換方法に影響を及ぼします(たとえば、SHIFT_JISからEUC-JPへの文字セット・エンコーディングの変更など)。このクラスは、SourceインタフェースのInputStreamメソッドおよびOutputStreamメソッドでも使用されます。これは、事実上この使用方法が、 InputStreamおよびOutputStreamにおけるSourceとバイトレベルの表現との変換でもあるためです。

JavaObjectSourceクラス: Javaメッセージング・タイプを提供するService Busトランスポート(JMSトランスポートなど)で送信されるペイロードを表します。このペイロードに含まれるオブジェクトは、バインディング・レイヤーによってパイプラインのJavaオブジェクト・リポジトリに登録されます。そのコンテンツは、<ctx:java-content ref='jcid:xyz' xmlns:ctx="http://www.bea.com/wli/sb/context" /> XML要素を介してメッセージ・コンテキスト変数で表示できます。この例では、refは、Javaオブジェクト・リポジトリにあるオブジェクトの一意のIDを指します。

JavaXmlSourceクラス: 引数としてJavaオブジェクトをサポートするサービス(JEJBトランスポートなど)によって送信されるペイロードを表します。JavaXmlSourceは、パイプラインのメッセージ本文の形式を定義するXML表現と、一意のキーに対してJavaオブジェクトを含むマップで構成されます。このXML表現で、Javaオブジェクト引数は<ctx:java-content ref='jcid:xyz' xmlns:ctx="http://www.bea.com/wli/sb/context" />要素で代入され、このref属性は、置換されるJavaオブジェクトの索引として機能するJavaObjectsマップのキーと等しくなります。このマップには、XML表現の一意IDに対して、パイプラインJavaオブジェクト・リポジトリに登録されるオブジェクトが含まれます。

D.5 リクエストおよびレスポンス・メッセージのメタデータおよびヘッダーの表現

ここでは、リクエスト・メッセージおよびレスポンス・メッセージのメタデータ表現を処理するクラスおよびインタフェースを示します。詳細は、「メッセージの処理」および「メッセージ・コンテンツの設計」を参照してください。

D.5.1 メッセージ・コンテンツの実行時表現

CoLocatedMessageContext抽象クラス: トランスポート・レイヤーのかわりにJavaメソッド・コールを実行するために、同じ場所に配置されているアウトバウンド・コールの最適化を実装するトランスポート・プロバイダによって拡張される必要があります。実装の例は、com.bea.alsb.transports.sock.SocketCoLocatedMessageContext.javaクラスを参照してください。このクラスは、「サンプル・ソケット・トランスポート・プロバイダの作成」で説明されているサンプル・ソケット・トランスポートに組み込まれています。詳細は、「同じ場所に配置された呼出し」を参照してください。

RequestHeaders抽象クラス: 任意のインバウンド・リクエスト・メッセージまたはアウトバウンド・リクエスト・メッセージの、標準およびユーザー定義のヘッダーのユニオンを表します。一連の標準ヘッダーは、各トランスポート・プロバイダに固有です。これは、それぞれのバージョンのリクエスト・ヘッダーを実装するために、各トランスポート・プロバイダによって拡張される必要のある抽象クラスです。

RequestMetaData<T extends RequestHeaders>抽象クラス: インバウンド・リクエスト・メッセージまたはアウトバウンド・リクエスト・メッセージのメタデータ情報(ヘッダー、リクエストの文字セット・エンコーディングなど)を表します。トランスポート・プロバイダは、トランスポート・プロバイダに応じたメタデータ情報を追加する、このクラスの拡張を提供します。たとえば、HTTPトランスポート・プロバイダは、get/setQueryString()メソッド、get/setClientHost()メソッドおよびその他のメソッドを追加します。

ResponseHeaders抽象クラス: 任意のインバウンド・レスポンス・メッセージまたはアウトバウンド・レスポンス・メッセージの、標準およびユーザー定義のヘッダーのユニオンを表します。一連の標準ヘッダーは、各トランスポート・プロバイダに固有です。これは、それぞれのバージョンのレスポンス・ヘッダーを実装するために、各トランスポート・プロバイダによって拡張される必要のある抽象クラスです。

ResponseMetaData<T extends ResponseHeaders>抽象クラス: インバウンド・レスポンス・メッセージまたはアウトバウンド・レスポンス・メッセージのメタデータ情報(ヘッダー、リクエストの文字セット・エンコーディングなど)を表します。トランスポート・プロバイダは、トランスポート・プロバイダに応じたメタデータ情報を追加する、このクラスの拡張を提供します。たとえば、HTTPトランスポート・プロバイダは、get/setHttpResponseCode()メソッドおよびその他のメソッドを追加します。

D.5.2 インタフェース

TransportMessageContextインタフェース: ほとんどのメッセージ指向ミドルウェア(MOM)製品は、メッセージをヘッダーとペイロードで構成される軽量エンティティとして処理します。ヘッダーにはメッセージのルーティングおよび識別情報に使用されるフィールドが含まれ、ペイロードには送信中のアプリケーション・データが含まれます。通常、トランスポート・レベルのメッセージ・コンテキストは、メッセージID、RequestMetadata、リクエスト・ペイロード、ResponseMetaData、レスポンス・ペイロードおよび関連プロパティで構成されます。

InboundTransportMessageContextインタフェース: 着信メッセージのメッセージ・コンテキストの抽象化を実装します。

OutboundTransportMessageContextインタフェース: 送信メッセージのメッセージ・コンテキストの抽象化を実装します。

ServiceTransportSenderインタフェース: 登録済のサービスにアウトバウンド・メッセージを送信します。サービスは、トランスポート・エンドポイントに関連付けられています。

TransportSendListenerインタフェース: これは、アウトバウンド・トランスポートに提供されるコールバック・オブジェクトで、システムにレスポンス処理を進めることができることを通知できるようにします。このコールバック・オブジェクトは、リクエスト・メッセージとは別のスレッドで呼び出す必要があります。

D.6 ユーザー・インタフェースの構成

各トランスポート・プロバイダは、永続化するサービス・エンドポイント固有の構成プロパティのリストを決定できるため、ユーザーが新しいサービス・エンドポイントごとのトランスポート固有の構成プロパティを入力できる、柔軟なユーザー・インタフェースが必要です。この項で説明する一連のクラスおよびインタフェースにより、各トランスポート・プロバイダは、Oracle Service Busコンソールのサービス定義エディタの一環としてユーザーが入力するための独自のプロパティを公開できます。新しいトランスポートのユーザー・インタフェースを開発するには、これらのインタフェースおよびクラスを使用します。

D.6.1 UIインタフェースの概要

TransportProviderFactoryインタフェース: このインタフェースは、新しいトランスポート・プロバイダを転送マネージャに登録します。

TransportUIBindingインタフェース: サービスの定義、サマリーの提供およびトランスポート・プロバイダ固有のエンドポイントの構成の検証で使用される、プロバイダ固有のUIページを表示するオブジェクトを表します。

CustomHelpProviderインタフェース:Oracle Service Busコンソールに追加する、カスタム・トランスポートなどの機能の状況依存ヘルプを提供できます。実装の詳細は、「カスタム・トランスポートのヘルプの作成」を参照してください。

D.6.2 UIクラスの概要

TransportUIContextクラス: トランスポート・プロバイダ固有のユーザー・インタフェース部分のオプションを提供します。Oracle Service Busコンソールによって各トランスポート・プロバイダに渡されます。

TransportUIGenericInfoクラス: サービス定義エディタでの、共通のトランスポート・ページのトランスポート固有のUI情報を保持します。

TransportUIFactoryクラス: トランスポートの変更フィールドおよびフィールドに関連付けられている様々なTransport UIオブジェクトを作成するファクトリ・メソッドを提供します。これらのオブジェクト内の値にアクセスするためのヘルパー・メソッドも提供します。

TransportEditFieldクラス: Oracle Service Busコンソールのサービス登録エディタのプロバイダ固有の部分で、編集可能な単一のUI要素を表します。

TransportViewFieldクラス: 「サービス・サマリー」ページのプロバイダ固有の部分で、読取り専用の単一のUI要素を表します。

TransportUIErrorクラス: Oracle Service Busコンソールに検証エラーを返します。