ヘッダーをスキップ
Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド
11g リリース1(11.1.1.7)
B55916-08
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

11 Facade APIを使用したSOAコンポジット・アプリケーションのプログラムによる管理

この章では、コンポジット、コンポーネント、サービス、参照などの操作と属性を公開し、実行時にSOAコンポジット・アプリケーションをプログラムで管理するFacade APIについて説明します。Facade APIは、Oracle SOA SuiteのInfrastructure Management Java APIの一部です。

この章では、次の項目について説明します。

インフラストラクチャJava APIの詳細は、Oracle Fusion Middleware Oracle SOA Suiteインフラストラクチャ管理Java APIリファレンスを参照してください。

11.1 SOAコンポジット・アプリケーションのプログラムによる管理の概要

実行時にFacade APIを使用してSOAコンポジット・アプリケーションをプログラムで管理できます。Facade APIは、Oracle SOA SuiteのInfrastructure Management Java APIの一部です。Facade APIは、コンポジット、コンポーネント、サービス、参照などの操作と属性を公開します。Facade APIでは、Oracle Enterprise Manager Fusion Middleware Controlでのコンポジットの管理の代替方法が提供されます。

oracle.soa.management.facade.Locatorインタフェースは、ほとんどのFacade APIに対する最上位レベルのエントリ・ポイントとしてメソッド・インタフェースを公開します。oracle.soa.management.facade.Locatorインタフェースは、コンポジットにDirectConnectionを返すcreateConnectionメソッドを公開します。LocatorFactory実装を使用してDirectConnectionを取得できます。LocatorFactoryおよびDirectConnectionの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』直接バインディング起動APIの概要に関する項を参照してください。DirectConnectionクラスおよびDirectConnectionFactoryクラス(直接バインディング接続の作成用)は、oracle.soa.api.invocationパッケージに入っています。

パーティション管理APIは、Locatorによって公開されません。かわりに、パーティション管理APIに対する最上位レベルのエントリ・ポイントはServerManagerです。例11-1に示すServerManagerFactory実装を使用して、SOAサーバーを管理するServerManagerオブジェクトを作成します。

例11-1 ServerManagerFactory

ServerManagerFactory smf = ServerManagerFactory.getInstance();
 Hashtable jndiProps = new Hashtable();

 jndiProps.put(Context.PROVIDER_URL, "server_JNDI_provider_url");
 jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, "server_initial_context_factory_
classname");
 jndiProps.put(Context.SECURITY_PRINCIPAL, "jndi_user");
 jndiProps.put(Context.SECURITY_CREDENTIALS, "jndi_password");
 ServerManager sm = smf.createInstance(jndiProps);

Facade APIの詳細は、Oracle Fusion MiddlewareのOracle SOA Suite Infrastructure Management Java APIリファレンスを参照してください。


注意:

Infrastructure Management Java APIには、SOAコンポジット・アプリケーションのインバウンド呼出しおよびOracle Service Bus(OSB)または別のSOAコンポジット・アプリケーションのアウトバウンド呼出し用の直接バインディング呼出しAPIも含まれます。直接バインディング呼出しAPIの使用については、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』を参照してください。


11.1.1 locatorオブジェクト作成時に必要なセキュリティ資格証明

11gリリース1 (11.1.1.7)以降は、locatorオブジェクトの作成に追加のセキュリティ資格情報が必要になりました。例11-2は、locatorオブジェクトを正しく作成する方法が示されています。

例11-2 Locatorオブジェクトの作成のためのセキュリティ資格情報

Hashtable<String, String> jndiProps = new Hashtable<String, String>();
jndiProps.put(Context.INITIAL_CONTEXT_FACTORY,initialContextFactory);
jndiProps.put(Context.PROVIDER_URL, providerURL);
jndiProps.put(Context.SECURITY_PRINCIPAL, principal);
jndiProps.put(Context.SECURITY_CREDENTIALS, creds);
Locator locator = LocatorFactory.createLocator(jndiProps);

jndiProps.putでユーザーの資格情報を指定しない場合、locatorオブジェクトは作成されますが、このオブジェクトを使用してlocator内のメソッドを起動したときに、コール元にメソッドのコールに必要な権限がないことが原因で実行時例外が表示されます。

Exception in thread "Main Thread" java.lang.RuntimeException

11.2 Facade APIインタフェース

表11-1は、Facade APIインタフェースの概要を示しています。

表11-1 Facade APIインタフェース

インタフェース 説明

AsynchronousJob

非同期ジョブ・タイプに関する詳細を取得します。

注意: このインタフェースは非推奨となっています。

AsynchronousResult

非同期プロセスの結果を取得します。

B2BBinding

タイプ、ドキュメント参照などのB2Bバインディングの詳細を取得します。

Binding

URI、タイプ、サブタイプなどのバインディングの詳細を取得します。

BindingComponent

特定のフォルト・フィルタで指定されたバインディング・タイプとフォルトのリストを取得します。

BusinessEventInfo

一貫性レベル、フィルタ・タイプ、ローカル名、ネームスペースURI、接頭辞など、ビジネス・イベントの詳細を取得します。

Component

識別名(DN)、アクティブなインスタンス、失敗したインスタンス、インスタンスの合計、デプロイメント時間など、コンポーネントの詳細を取得します。

ComponentInstance

監査証跡、コンポーネント・インスタンスの状態(正常に完了、失敗、実行中など)、対話ID、作成日など、コンポーネント・インスタンスの詳細を取得します。

ComponentInstanceMigrationReport

候補となる特定のコンポーネント・インスタンスのコンポーネント・インスタンス移行の実行可能性に関する情報を提供します。

ComponentInstanceMigrationResult

特定のコンポーネント・インスタンスの移行の試行結果に関する情報を提供します。

Composite

識別名(DN)、アクティブなインスタンス、失敗したインスタンス、インスタンスの合計、デプロイメント時間など、コンポジットの詳細を取得します。

CompositeInstance

コンポジット・インスタンスの状態(正常に完了、失敗、実行中など)を取得します。

CompositeInstanceMigrationReport

候補となる特定のコンポジット・インスタンスの、コンポジット・インスタンス移行の実現可能性に関する情報を提供します。

CompositeInstanceMigrationResult

特定のコンポジット・インスタンスの移行の試行結果に関する情報を提供します。

Fault

フォルトがバインディング・コンポーネントで発生した場合のバインディング・タイプ、コンポーネント・インスタンスID、フォルトが発生したコンポーネントの名前、フォルトが生成された時刻、フォルトがサービス・エンジンで発生した場合のサービス・エンジン・タイプなど、フォルトの詳細を取得します。

FaultRecoveryActionTypeConstants

インスタンスの終了、失敗したアクティビティを完了としてマーク、拒否メッセージをファイルに格納、失敗したアクティビティをリカバリ済としてマーク、アクティビティの再試行など、アクションのタイプを提供します。

FaultRecoveryResult

フォルト、エラー、リカバリ可能なフォルト、リカバリできないフォルトなどを取得します。

FaultRecoveryServiceEngine

フォルト・リカバリ・サービス・エンジンを提供します。

ImportInfo

インポートされたリソースの場所とインポート・タイプを取得します。

InstanceMigrationContext

インスタンス移行のコンテキスト・データを提供します。

InterfaceType

コールバック・インタフェースとインタフェースのプロパティを取得します。

Locator

Facade APIクライアントのエントリ・ポイントとしてメソッド・インタフェースを公開します。

Message

コンポーネント名、コンポジットDN、メッセージの内容、対話ID、メッセージの格納場所、メッセージのリカバリ可能状態など、メッセージの詳細を取得します。

MigrationPlan

インスタンス移行の試行時に、サポートされる非互換性の処理の詳細を提供します。

MigrationReport

提案されるコンポジット・インスタンス移行の試行に関する情報を提供します。

MigrationResult

インスタンス移行の試行に関する情報を提供します。

Partition

パーティション内のすべてのコンポジットの開始、停止、アクティビティ化、リタイアなど、パーティション化のライフサイクル管理タスクを実行します。

Property

プロパティのデフォルト値、名前、オーバーライド属性値、プロパティ値のソースなど、プロパティの詳細を取得します。

Reference

ターゲット・サービスのWSDL URL、参照のプロパティ、参照名、参照バインディングなど、参照の詳細を取得します。

ReferenceInstance

バインディングのタイプを取得します。コンポジットのDN、コンポジット・インスタンスID、インスタンスの作成時刻などです。

ServerManager

パーティションを取得および作成します。

Service

バインディング、コンポジットDN、インタフェース・タイプ、名前、多重度など、サービスの詳細を取得します。

ServiceEngine

サービス・エンジンでデプロイされたコンポーネントのリスト、エンジン・タイプ、および特定のフォルト・フィルタで指定されたフォルトのリストを取得します。

ServiceInstance

バインディングのタイプなどのサービス・インスタンスの詳細を取得します。コンポジットのDN、コンポジット・インスタンスID、作成時刻などです。

WebServiceBinding

デフォルト・アドレスURI、エンドポイント・アドレスURI、ポート、トランスポート・タイプなどを取得します。

WebServiceBindingPort

ポート名、ポートURI、サービス名などを取得します。

WireInfo

ワイヤ参照、ワイヤ・サービス、ソースURIおよびターゲットURIを取得します。

WSDLInterfaceBinding

WSDL URLを取得します。


11.3 Facade APIの例

この項では、Facade APIを使用してコンポジット管理を実行する例をいくつか示します。

11.3.1 コンポジットの状態の取得

Facade APIを使用してコンポジットの状態を取得できます。

  • モード: アクティブ | リタイア

    この設定では、新規インスタンスを作成できるか(アクティブ)、または新しいインスタンスを作成せずに古いインスタンスを完了できるか(リタイア)を決定します。

  • 状態: オン | オフ

    この設定はコンポジット状態であり、コンポジット・リビジョンへのコール・アクセス(起動/コールバック)を許可する(on)、またはコール・アクセスを許可しない(off)のいずれかにアクティブまたはリタイアのコンポジット・モードをオーバーライドします。

oracle.soa.management.facade.Locator#getComposite(compositeDN)を使用して、目的のコンポジットへの参照を取得します。

コンポジット参照から、次のメソッドを使用してモードおよび状態を問い合せることができます。

  • String getMode()

  • String getState()

11.3.2 コンポジット・インスタンスおよびコンポーネント・インスタンスの検索

Facade APIでコンポジット・インスタンスおよびコンポーネント・インスタンスを検索できます。

Locatorインタフェースを使用してComposite (locator.lookupComposite(compositeDN))を検索します。コンポジットがまだ起動されていない場合、インスタンスはありません。

次に、インスタンスを検索し、関連情報(インスタンスID、実行されたコンポーネントなど)を取得できます。

例11-3に詳細を示します。

例11-3 コンポジット・インスタンスおよびコンポーネント・インスタンスの検索

Composite composite = locator.lookupComposite("default/OrderBookingComposite!1.0");
 
// The context is already the composite, so there is no need to set the DN as a filter criterion
CompositeInstanceFilter filter = new CompositeInstanceFilter();
filter.setMinCreationDate(new java.util.Date((System.currentTimeMillis() - 20000)));
 
// Get composite instances by filter
List compositeInstances = composite.getInstances(filter);
 
// for each of the returned composite instances..
for (CompositeInstance instance : compositeInstances) {
    long   instanceId = instance.getId();
    Date   created    = instance.getCreationDate();
    String state      = instance.getState();
 
    // Configure a component instance filter
    ComponentInstanceFilter cInstanceFilter =
                         new ComponentInstanceFilter ();
 
    // Get the child component instances
    List componentInstances =
        instance.getChildComponentInstances(cInstanceFilter);
 
    for (ComponentInstance compInstance : componentInstances) {
        String compName       = compInstance.getComponentName();
        long   compInstanceId = compInstance.getId();
        String type           = compInstance.getServiceEngine().getEngineType();
 
        // State values correspond to constants defined by the ComponentInstance interface
        int state = compInstance.getState();
    }
 
    // Retrieve composite sensors
    List sensorData = instance.getSensorData();
}