Integration コントロールを使用する

     前  次    新しいウィンドウで目次を開く     
ここから内容

OSB コントロール

使用可能なサービス

OSB コントロールを使用すると、Web サービスやビジネス プロセスから Oracle Service Bus プロキシ サービスを呼び出したり、セキュリティ コンテキストやトランザクション コンテキストの伝播をサポートしたりできます。

 


この節に含まれるトピック

概要 : OSB コントロール

OSB コントロールについて説明します。

OSB コントロールを作成する

OSB コントロールを作成およびコンフィグレーションする方法について説明します。

OSB コントロールのアノテーション

OSB コントロールのアノテーションについて説明します。

サンプル OSB コントロール

OSB コントロールのサンプルを示します。

関連トピック

Oracle Service Bus ユーザーズ ガイド

サービス ブローカ コントロール

 


概要 : OSB コントロール

OSB コントロールを使用すると、RMI による Service Bus 転送がコンフィグレーションされた Oracle Service Bus プロキシ サービスを、ビジネス プロセスから呼び出すことができます。また、Web サービス、リモート Web サービス、またはビジネス プロセスにリクエストを送信したり、それらからのコールバックを受信したりできます。

OSB コントロールはサービス ブローカ コントロールを拡張したもので、サービス コントロールでサポートされる機能は OSB コントロールでもサポートされます。サービス ブローカ コントロールの詳細については、「サービス ブローカ コントロール」を参照してください。

OSB コントロールは、以下の機能を提供します。

最初のステップは、OSB コントロール ファイルの作成です。コントロール ファイルは Oracle Workshop for WebLogic を使用して対象のサービス (WSDL ファイル) から自動的に生成できます。また、Oracle Workshop for WebLogic の [データ パレット] の [コントロール] セクションの [追加] 機能を使用して作成することもできます。コントロールのメソッドとコールバックは、対象のサービスのオペレーションとコールバックに対応しています。このコントロール ファイルのインスタンスは対象のサービスを呼び出すために親サービスで使用されます。また、対象のサービスからコールバックを取得するためにも使用されます。OSB コントロール ファイルでは、対象のサービスがステートフルな場合は、開始メソッドに対してのみセレクタのアノテーションを設定できます。一方、対象のサービスがステートレスな場合は、どのメソッドに対してもセレクタのアノテーションを設定できます。

注意 : 親プロセスと対象プロセスの両方を、同じプロトコルを使用するようにコンフィグレーションする必要があります。プロトコルの照合と有効化は自動的には処理されません。

OSB コントロールを作成する

OSB コントロールは次の方法で作成できます。

WSDL から OSB コントロールを作成する

新しい OSB コントロールを作成して Web サービスまたはビジネス プロセスに追加するには、[コントロールの挿入 : OSB コントロール] ダイアログを使用します。

注意 : デザイン ビューが表示されていない場合は、[デザイン] タブをクリックします。

新しい OSB コントロールを作成するには

  1. [パッケージ・エクスプローラー] ペインで、OSB コントロールを追加するビジネス プロセスをダブルクリックします。ビジネス プロセスがデザイン ビューに表示されます。
  2. データ パレット使用可能なサービス をクリックし、ドロップダウン リストから Integration コントロールを選択して、アプリケーションの統合に使用するコントロールのリストを表示します。
  3. [データ パレット] ビューが Oracle Workshop for WebLogic に表示されない場合は、メニュー バーから [ウィンドウビューの表示データ パレット] をクリックします。

  4. [OSB] を選択します。
  5. [コントロールの挿入 : OSB コントロール] ダイアログ ボックスが表示されます (図 13-1 を参照)。

    図 13-1 コントロールの挿入 : OSB コントロール


    コントロールの挿入 : OSB コントロール

  6. [コントロールの挿入 : OSB コントロール] ダイアログ ボックスで、以下の情報を入力します。
    • [フィールド名] に、ビジネス プロセスから新しい OSB コントロール インスタンスにアクセスするときに使用する変数の名前を入力します。有効な Java 識別子を入力する必要があります。
    • [挿入位置] で、フィールド名をプロセス ファイルに挿入するポイントをドロップダウン リストから選択します。
    • これをコントロール ファクトリにするかどうかを決定し、[これを実行時に複数のインスタンスを作成できるコントロール ファクトリにする] チェック ボックスをチェックするか、チェックをはずします。
    • [次へ] をクリックします。
    • [コントロールの作成] ウィザードが表示されます。

  7. [コントロールの作成] ウィザードで、以下の情報を入力します。
    • [名前] フィールドに新しいコントロール拡張ファイルの名前を入力します。
    • 現在のプロジェクトのプロパティに設定されているようにコメントを追加するかどうかを決定し、[コメントの生成] チェック ボックスをチェックするか、チェックをはずします。
    • [次へ] をクリックします。
    • [コントロールの挿入 : OSB コントロール] ダイアログ ボックスが表示されます (図 13-2 を参照)。

      図 13-2 コントロールの挿入 : OSB コントロール


      コントロールの挿入 : OSB コントロール

  8. [コントロールの挿入 : OSB コントロール] ダイアログ ボックスで、以下の情報を入力します。
    • [WSDL] フィールドで、以下のいずれかを行います。
      • [参照] をクリックし、アクセスする WSDL をリストから選択して [OK] をクリックします (図 13-3 を参照)。
      • 図 13-3 WSDL の選択


        WSDL の選択

      • [インポート] をクリックし、[サービス消費] ダイアログ ボックスでアーティファクト フォルダサービス リソースをそれぞれのドロップダウン リストから選択して [OK] をクリックします (図 13-4 を参照)。
      • 注意 : OSB コントロールは、現在の Web プロジェクトの外にある WSDL ファイルから作成することはできません。
        図 13-4 サービス消費


        サービス消費

    • [サービス名] メニューからサービス名を選択します。指定したビジネス プロセスに含まれているサービス名だけが表示されます。
    • [開始メソッド] メニューから開始メソッドを選択します。指定したビジネス プロセスに含まれている開始メソッドだけが表示されます。
    • 動的なセレクタを指定するには、[クエリ ビルダ] ボタンをクリックして動的なセレクタ クエリ ビルダを表示して、[クエリ] フィールドにクエリを入力します。
    • 動的なセレクタ クエリ ビルダを起動した場合は、以下の手順を実行して、クエリを構築してテストします。

      • [LookupControl] または [TPM] ラジオ ボタンを選択して、クエリのルックアップ関数のタイプを選択します。TPM リポジトリ内のプロパティにルックアップ値をバインドするには、[TPM] を選択します。ドメイン全体の DynamicProperties.xml ファイルで指定した動的プロパティにルックアップ値をバインドするには、[LookupControl] を選択します。ドメインがアクティブでない場合にだけ、DynamicProperties.xml ファイルを編集してルックアップ値を動的プロパティにバインドしてください。ドメインがアクティブな場合は、Oracle WebLogic Integration Administration Console を使用してルックアップ値をバインドすることをお勧めします。
      • Oracle WebLogic Integration Administration Console を使用して動的なプロパティにルックアップ値をバインドする方法の詳細については、「プロセス コンフィグレーション」にある「動的コントロール セレクタの追加および変更」を参照してください。

      • [開始メソッドのスキーマ] 領域で、コントロールの開始メソッドに関連付ける要素を選択します。XML 要素だけが表示されます。非 XML 要素はサポートされません。生成されたクエリが [XQuery] 領域に表示されます。
      • [作成] をクリックします。
    • [次へ] をクリックします。
    • WSDL ファイルに Oracle Service Bus バインディングがコンフィグレーションされていない場合は、[コントロールの挿入 : OSB コントロール] ダイアログ ボックスが表示されます (図 13-5 を参照)。このダイアログ ボックスで以下を行います。

      図 13-5 コントロールの挿入 : OSB コントロール


      コントロールの挿入 : OSB コントロール

      • [OSB コントロールを作成するための追加バインディング情報を指定します。] チェック ボックスをチェックします。
      • [サービス URI] に必要な情報を入力します。
      • [JNDI URL] に必要な情報を入力します。
      • [次へ] をクリックします。
      • [既存のタイプが見つかりません] ダイアログ ボックスが表示されます (図 13-6 を参照)。

        図 13-6 既存のタイプが見つかりません


        既存のタイプが見つかりません

    • いずれかのオプションを選択して [完了] をクリックします。
    • OSB コントロールが作成され、[パッケージ・エクスプローラー] ペインに表示されます。コントロールのインスタンスも作成され、データ パレットに追加されます。

サービス消費フレームワークを使用して OSB コントロールを作成する

プロキシ サービスを使用して OSB コントロールを作成するには、既存の Oracle Service Bus プロジェクトが必要になります。

  1. [パッケージ・エクスプローラー] ペインで、OSB コントロールを追加するビジネス プロセスをダブルクリックします。ビジネス プロセスがデザイン ビューに表示されます。
  2. データ パレット既存のタイプが見つかりません をクリックし、ドロップダウン リストから Integration コントロールを選択して、アプリケーションの統合に使用するコントロールのリストを表示します。
  3. [OSB] を選択します。
  4. [コントロールの挿入 : OSB コントロール] ダイアログが表示されます。

  5. [コントロールの挿入 : OSB コントロール] ダイアログ ボックスで、以下の情報を入力します。
    • [フィールド名] に、ビジネス プロセスから新しい OSB コントロール インスタンスにアクセスするときに使用する変数の名前を入力します。有効な Java 識別子を入力する必要があります。
    • [挿入位置] で、フィールド名をプロセス ファイルに挿入するポイントをドロップダウン リストから選択します。
    • これをコントロール ファクトリにするかどうかを決定し、[これを実行時に複数のインスタンスを作成できるコントロール ファクトリにする] チェック ボックスをチェックするか、チェックをはずします。
    • [次へ] をクリックします。
    • [コントロールの作成] ウィザードが表示されます。

  6. [コントロールの作成] ウィザードで、以下の情報を入力します。
    • [名前] フィールドに新しいコントロール拡張ファイルの名前を入力します。
    • 現在のプロジェクトのプロパティに設定されているようにコメントを追加するかどうかを決定し、[コメントの生成] チェック ボックスをチェックするか、チェックをはずします。
    • [次へ] をクリックします。
    • [コントロールの挿入 : OSB コントロール] ダイアログ ボックスが表示されます。

  7. [コントロールの挿入 : OSB コントロール] ダイアログ ボックスで以下を行います。
    • [WSDL] フィールドで [インポート] をクリックします。
    • [サービス消費] ダイアログ ボックスが表示されます。

      [サービス消費] ダイアログ ボックスで以下を行います。

      • アーティファクト フォルダを選択します。
      • [既存のファイルを上書きする] チェック ボックスで、既存のファイルを上書きするかどうかを指定します。
      • [サービス リソース] ドロップダウン リストから [ワークスペース] を選択します。
      • [製品タイプ] として [Oracle Service Bus 10.3] を選択します。
      • [使用可能なサービス] から Oracle Service Bus プロキシ サービスを選択します (図 13-7 を参照)。
      • 図 13-7 使用可能なサービス


        使用可能なサービス

      • [OK] をクリックします。
    • [サービス名] メニューからサービス名を選択します。指定したビジネス プロセスに含まれているサービス名だけが表示されます。
    • [開始メソッド] メニューから開始メソッドを選択します。指定したビジネス プロセスに含まれている開始メソッドだけが表示されます。
    • 動的なセレクタを指定するには、[クエリ ビルダ] ボタンをクリックして動的なセレクタ クエリ ビルダを表示して、[クエリ] フィールドにクエリを入力します。
    • [次へ] をクリックします。
    • [既存のタイプが見つかりません] ダイアログ ボックスが表示されます。

    • いずれかのオプションを選択して [完了] をクリックします。
    • プロキシ サービスを使用して OSB コントロールが作成され、ビジネス プロセス内 ([パッケージ・エクスプローラー] ペイン) に表示されます。コントロールのインスタンスも作成され、データ パレットに追加されます。

 


OSB コントロールのアノテーション

OSB コントロールは、サービス ブローカ コントロールの拡張です。サービス ブローカ コントロールのアノテーションに加え、要件に応じて以下のアノテーションが追加で提供されています。

サービス ブローカ コントロールのアノテーションの詳細については、「サービス ブローカ コントロールのアノテーションに関する注意」を参照してください。

RmiSoapProtocol

このアノテーションはマーカ アノテーションで、SOAP 1.1 over RMI をサポートする OSB コントロールを指定します。このアノテーションは、クラス レベルでのみ指定できます。このアノテーションは、SOAP over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface RmiSoapProtocol
{
}
注意 : このアノテーションは、WSDL に基づいて自動生成されます。このアノテーションは変更しないようにしてください。このアノテーションを指定した場合、サービス コントロールでサポートされるアノテーション (HttpSoapProtocolHttpSoap12ProtocolJmsSoapProtocolJmsSoapProtocol など) は指定できません。サービス コントロール アノテーション Location は省略可能です。サービス コントロール アノテーション WSDL は必須です。

RmiSoap12Protocol

このアノテーションはマーカ アノテーションで、SOAP 1.2 over RMI をサポートする OSB コントロールを指定します。このアノテーションは、クラス レベルでのみ指定できます。このアノテーションは、SOAP over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface RmiSoap12Protocol
{
}
注意 : このアノテーションは、WSDL に基づいて自動生成されます。このアノテーションは変更しないようにしてください。このアノテーションを指定した場合、サービス コントロールでサポートされるアノテーション (HttpSoapProtocolHttpSoap12ProtocolJmsSoapProtocolJmsSoapProtocol など) は指定できません。サービス コントロール アノテーション Location は省略可能です。サービス コントロール アノテーション WSDL は必須です。

SBTransport

このアノテーションは、SB シン クライアント API で必要になる RMI 関連パラメータを指定するために使用します。このアノテーションは、クラス レベルでのみ指定できます。このアノテーションは、SOAP over RMI、抽象 SOAP over RMI、抽象 XML over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
public @interface SBTransport
{
String serviceURI();
boolean execute() default true;
       String jndiURL() default “”;

表 13-1 SBTransport アノテーションのフィールド
フィールド
説明
serviceURI
SB 転送でコンフィグレーションされている Oracle Service Bus プロキシ サービスの URL を指定する (必須)。
execute
外部サービスの呼び出しを、ビジネス プロセスと同じセキュリティ コンテキストで発生させる必要があるかどうかを指定する。false の場合、呼び出しは JNDI ルックアップのセキュリティ コンテキストで発生する。true の場合、呼び出しはビジネス プロセスと同じセキュリティ コンテキストで発生し、JNDI ルックアップはプリンシパルまたは資格が設定されているかどうかに応じて別のセキュリティ コンテキストで発生する。

注意 : デフォルト値は true

jndiURL
Oracle Service Bus サーバの JNDI プロバイダの URL を指定する。URL が指定されていない場合は、ローカルの JNDI プロバイダと見なされる。

表 13-1 は、SBTransport アノテーションのフィールドを示しています。

注意 : このアノテーションは、必ず RmiSoapProtocol または RmiSoap12Protocol と一緒に指定します。サービス コントロール アノテーション Location は省略可能です。サービス コントロール アノテーション WSDL は必須です。

CustomHeader

このアノテーションは、SB 転送にカスタム ヘッダを指定するために使用します。このアノテーションは、クラス レベルで指定できます。このアノテーションは、SOAP over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface CustomHeader
{
String name;
String value;
}

表 13-2 CustomHeader アノテーションのフィールド
フィールド
説明
Name
ヘッダ名を指定する。
Value
name 属性で指定したヘッダの値を指定する。

表 13-2 は、CustomHeader アノテーションのフィールドを示しています。

注意 : このアノテーションは、必ず RmiSoapProtocol または RmiSoap12Protocol と一緒に指定します。

CustomHeaders

このアノテーションは、SB 転送に複数のカスタム ヘッダを指定するために使用します。このアノテーションは、クラス レベルで指定できます。このアノテーションは、SOAP over RMI、抽象 SOAP over RMI、抽象 XML over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface CustomHeaders
{
CustomHeader[] headers;
}

このアノテーションのフィールドは headers で、名前/値ペアの配列を表します。

注意 : このアノテーションは、必ず RmiSoapProtocol または RmiSoap12Protocol と一緒に指定します。

RmiXmlProtocol

このアノテーションはマーカ アノテーションで、RMI による抽象 XML メッセージの転送をサポートする OSB コントロールを指定するために使用します。このアノテーションは、クラス レベルでのみ指定できます。このアノテーションは、抽象 SOAP over RMI および抽象 XML over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface RmiXmlProtocol
{
}
注意 : このアノテーションを指定した場合は、RmiSoapProtocolRmiSoap12Protocol、およびサービス コントロールでサポートされるどのアノテーションも指定できません。SBTransport アノテーションを指定する必要があります。この場合、OSB コントロール内にいかなるコールバック インタフェース (@EventSet アノテーション) も含めることはできません。

OneWay

このアノテーションはマーカ アノテーションで、一方向のオペレーションを指定するために使用します。このアノテーションは、メソッド レベルでのみ指定できます。このアノテーションは、抽象 SOAP over RMI および抽象 XML over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface OneWay
{
}
注意 : このアノテーションは、RmiXmlProtocol が指定されている場合にのみ指定できます。

このアノテーションを指定した場合、それぞれのメソッド シグネチャは以下のようになります。

トランザクション コンテキストの伝播

OSB コントロールでは、ビジネス プロセス内のメソッド レベルで、トランザクション コンテキストの伝播がサポートされています。特定のメソッドのトランザクション コンテキストを伝播するか、あるいは Transactional アノテーションを使用しないかを指定できます。このアノテーションでは、トランザクション コンテキストが伝播されない場合に備え、RMI 呼び出しのタイムアウトも指定します。

transaction アノテーションは、コントロール レベルで指定した場合はコントロール内のすべてのメソッドに適用され、メソッド レベルで指定した場合はメソッド レベルで適用されます。

次に、このアノテーションの使用例を示します。

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface Transactional
{
boolean value() default true;
       int timeout() default 60;
}

表 13-3 に、Transactional アノテーションのフィールドを示します。

表 13-3 Transactional アノテーションのフィールド
フィールド
説明
Value
トランザクション コンテキストを伝播するかどうかを指定する。
Time
トランザクション コンテキストが伝播されない場合の RMI 呼び出しのタイムアウト値を指定する。

注意 : このアノテーションは、必ず OSB コントロールに定義されているアノテーションと一緒に指定します。このアノテーションを指定しない場合のデフォルトでは、トランザクション コンテキストが Oracle Service Bus に伝播されます。

セキュリティ コンテキストの伝播

SBTransport アノテーションの一部としてプリンシパルおよび資格を指定した場合は、それらの資格がリモート JNDI プロバイダでの認証に使用されます。セキュリティ コンテキストの伝播は、SBTransport アノテーションの execute 属性に応じ、Oracle Service Bus へのメッセージの転送中に以下の説明に従って発生します。

 


サンプル OSB コントロール

この節では、OSB コントロールのサンプルを示します。

package requestquote;

import com.bea.control.SbTransportControl;

import org.apache.beehive.controls.api.events.EventSet;

import org.apache.beehive.controls.api.bean.ControlExtension;

@SbTransportControl.SBTransport(serviceURI = "/MyAddProxy", jndiURL = "t3://localhost:7001")

@SbTransportControl.RmiSoapProtocol

@SbTransportControl.SOAPBinding(style = SbTransportControl.SOAPBinding.Style.DOCUMENT, use = SbTransportControl.SOAPBinding.Use.LITERAL, parameterStyle = SbTransportControl.SOAPBinding.ParameterStyle.WRAPPED)

@SbTransportControl.WSDL(path = "../requestquote/AddPro_proxy.wsdl", service = "AddPro")

@ControlExtension

public interface ALSBControl extends SbTransportControl

{

static final long serialVersionUID = 1L;

public int addNumbers(int num1_arg,int num2_arg);

/** このイベントは、onAsyncFailure イベントのサポートを提供するインタフェースを設定する。

*/

@EventSet(unicast=true)

public interface Callback extends SbTransportControl.Callback {};

public ALSBControl create(); }


  ページの先頭       前  次