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

前
 
次
 

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

この章では、トランスポートSDKで提供されるOracle Service Busクラスおよびインタフェースを示し、それらについて簡単に説明します。カスタム・トランスポート・プロバイダの開発に必要なインタフェースの詳細は、第39章「トランスポート・プロバイダの開発」を参照してください。

この章には次の項があります。

41.1 はじめに

この章で説明されているクラスおよびインタフェースは、特に記載のないかぎり、OSB_ORACLE_HOME/lib/sb-kernel-api.jarにあります。

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

41.2 スキーマで生成されるインタフェース

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

ここで、OSB_ORACLE_HOMEはOracle Service Busをインストールしたディレクトリです。

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

41.3 汎用クラスおよびインタフェース

この項では、トランスポートSDKの汎用クラスおよびインタフェースについて簡単に説明します。

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

41.3.1 汎用クラスのサマリー

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

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

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

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

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

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

Diagnosticsクラス - 特定のリソースに関連するDiagnosticエントリの集合が含まれます。このクラスは、OSB_ORACLE_HOME/modules/com.bea.common.configfwk_<version>.jarにあります。

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

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

41.3.2 汎用インタフェースのサマリー

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

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

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

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


ヒント:

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


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

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

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

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

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

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

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

41.4 SourceおよびTransformerクラスとインタフェース

次に、SourceおよびTransformerの基本インタフェース、Oracle Service Busで提供される具体的なSource、およびサポート・クラスについて説明します。

詳細は、38.8項「メッセージ・コンテンツの設計」を参照してください。

41.4.1 SourceおよびTransformerインタフェースのサマリー

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

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

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

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

41.4.2 SourceおよびTransformerクラスのサマリー

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


注意:

このストリームはInputStreamによってバックアップされるため、このソースは1回のみ使用するソースとなります。両方のシリアライゼーション・メソッドは、基底の同じ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パッケージです。このソースは、Content-Transfer-Encodingにも対応しており、ヘッダーがある場合、基底のコンテンツ・ストリームを適切にエンコードします。これは、コンストラクタに提供されているSourceが、まだエンコードされておらず、生の形式である必要があることを意味しています。

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


注意:

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


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

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

JavaXmlSourceクラス - 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オブジェクト・リポジトリに登録されるオブジェクトが含まれます。

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

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

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

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

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

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

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

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

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

41.5.2 インタフェース

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

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

OutboundTransportMessageContextインタフェース - アウトバウンド・メッセージのメッセージ・コンテキストの抽象化を実装します。

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

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

41.6 ユーザー・インタフェースの構成

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

41.6.1 概要

各トランスポート・プロバイダは、永続化するサービス・エンドポイント固有の構成プロパティのリストを決定できるため、ユーザーが新しいサービス・エンドポイントごとのトランスポート固有の構成プロパティを入力できる、柔軟なユーザー・インタフェースが必要です。次に、Oracle Service Bus管理コンソールのOracle Service Busサービス定義ウィザードの一環としてユーザーが入力できるように、各トランスポート・プロバイダが独自のプロパティを公開できるクラスおよびインタフェースのセットを示します。

この項では、新しいトランスポートのユーザー・インタフェースを開発するために必要なインタフェースおよびクラスを示します。

41.6.2 UIインタフェースのサマリー

TransportProviderFactoryインタフェース - このインタフェースはカスタムOracle Service BusトランスポートをEclipseにプラグインするための拡張ポイントです。

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

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

41.6.3 UIクラスのサマリー

TransportUIContextクラス - トランスポート・プロバイダ固有のユーザー・インタフェースのオプションを提供します。これは、各トランスポート・プロバイダにOracle Service Bus管理コンソールから渡されます。

TransportUIGenericInfoクラス - Oracle Service Busのサービス定義ウィザードでの、共通のトランスポート・ページのトランスポート固有のUI情報を保持します。

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

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

TransportViewFieldクラス - Oracle Service Bus管理コンソールのサービス登録ウィザードの「サービス・サマリー」ページのプロバイダ固有の部分で、読取り専用の単一のUI要素を表します。

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