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

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

ALSB コントロール

使用可能なサービス

注意 : ALSB コントロールは、WebLogic Integration の使用許諾を受けた場合にのみ、BEA WorkSpace Studio で使用できます。

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

 


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

概要 : ALSB コントロール

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

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

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

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

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

サンプル : ALSB コントロール

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

関連トピック

AquaLogic Service Bus ユーザーズ ガイド

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

 


概要 : ALSB コントロール

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

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

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

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

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

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

ALSB コントロールは、以下を用途として作成できます。

WLI ビジネス プロセス用の ALSB コントロールを作成する

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

注意 : ビジネス プロセス (Process.java) を参照する ALSB コントロールを作成する場合、そのビジネス プロセスは現在の BEA WorkSpace Studio アプリケーション内になければなりません。
注意 : デザイン ビューが表示されていない場合は、[デザイン] タブをクリックします。

新しい ALSB コントロールを作成するには、次の手順に従います。

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

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

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


    コントロールの挿入 : ALSB

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

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

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


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

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


        WSDL の選択

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


        サービス消費

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

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

        http://edocs.beasys.co.jp/e-docs/wli/docs102/adminhelp/processconfig.html

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

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


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

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

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


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

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

ALSB プロキシ サービスを使用して ALSB コントロールを作成する

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

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

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

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

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

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

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


        使用可能なサービス

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

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

 


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

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

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

RmiSoapProtocol

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

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

RmiSoap12Protocol

このアノテーションはマーカ アノテーションで、SOAP 1.2 over RMI をサポートする ALSB コントロールを指定します。このアノテーションは、クラス レベルでのみ指定できます。このアノテーションは、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 転送でコンフィグレーションされている ALSB プロキシ サービスの URL を指定する (必須)。
execute
外部サービスの呼び出しを、ビジネス プロセスと同じセキュリティ コンテキストで発生させる必要があるかどうかを指定する。false の場合、呼び出しは JNDI ルックアップのセキュリティ コンテキストで発生する。true の場合、呼び出しはビジネス プロセスと同じセキュリティ コンテキストで発生し、JNDI ルックアップはプリンシパルまたは資格が設定されているかどうかに応じて別のセキュリティ コンテキストで発生する。

注意 : デフォルト値は true

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

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

OneWay

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

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

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

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

ALSB コントロールでは、ビジネス プロセス内のメソッド レベルで、トランザクション コンテキストの伝播がサポートされています。特定のメソッドのトランザクション コンテキストを伝播するか、あるいは 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 呼び出しのタイムアウト値を指定する。

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

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

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

 


サンプル : ALSB コントロール

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

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(); }


  ページの先頭       前  次