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

前
 
次
 

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

この章では、SOAコンポジット・アプリケーションをプログラムで管理するためのFacade APIの概要を示します。

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

10.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です。例10-1に示すServerManagerFactory実装を使用して、SOAサーバーを管理するためのServerManagerオブジェクトを作成します。

例10-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開発者ガイド』を参照してください。

10.2 Facade APIインタフェース

表10-1に、Facade APIインタフェースの概要を示します。

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

インタフェース 説明

ActivityInstance

このアクティビティが属するインスタンスのインスタンスID(キー)、コンポーネント名、アクティビティの作成日、現在のアクティビティの有効期限などを取得します。

AsynchronousJob

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

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

AsynchronousResult

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

Binding

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

BindingComponent

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

BusinessEventInfo

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

Component

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

ComponentInstance

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

Composite

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

CompositeInstance

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

EventBridge

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

Fault

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

FaultRecoveryActionTypeConstants

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

FaultRecoveryResult

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

FaultRecoveryServiceEngine

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

ImportInfo

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

InterfaceType

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

Locator

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

Message

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

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を取得します。


10.3 Facade APIの例

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

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

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

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

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

  • 状態: オン | オフ

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

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

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

  • String getMode()

  • String getState()

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

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

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

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

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