この章の内容は次のとおりです。
オフラインのエンドポイントURIの処理方法を指定したり、メッセージ・フローを制限したり、結果キャッシュを有効にしたりすることで、ビジネス・サービスを管理することもできます。グローバルな操作設定は、サービス・レベルの設定をオーバーライドします。
操作設定により、モニター、アラート、レポート、ロギング、メッセージ・トレース、ビジネス・サービスの結果キャッシュなどを構成できます。すべてのサービスの操作設定をサービス・レベルおよびグローバル・レベルで指定し、グローバル設定を使用してモニター、SLAアラート、パイプライン・メッセージ・レポートおよびパイプライン・メッセージ・ロギングをオンにしたりオフにしたりすることができます。次の項で、使用可能な設定について説明します。
この操作設定は、サービスのモニターを有効または無効にします。パイプラインおよび分割-結合の場合、モニターを実行するレベルも構成できます。ロギングやアラートなど、他の特定の操作設定は、モニターの有効化に依存しています。デフォルトでは、すべてのサービスでモニターは無効です。
パイプラインの場合、モニターは次のレベルで有効にすることができます。
アクション(A)
パイプライン(P)
サービス(S)
分割-結合の場合、モニターは次のレベルで有効にすることができます。
アクティビティ(A)
ブランチ(B)
サービス(S)
パイプラインまたは分割-結合の「プロパティ」ページでレベルを構成します。レベル・インジケータがService BusおよびService Busプロジェクトの「操作」ページに表示されます。
この操作設定は、サービスに対する、特定の重大度レベル以上のサービス・レベル・アグリーメント(SLA)のアラートを有効にします。サービスのSLAアラートを無効にする場合にも使用します。デフォルトでは、すべてのサービスでSLAアラートが有効です。
SLAアラートは次のレベルで有効にすることができます。サービスの「プロパティ」ページでアラート・レベルを構成します。レベル・インジケータがService BusおよびService Busプロジェクトの「操作」ページに表示されます。
通常(N)
警告(W)
軽度(Mn)
重度(Mj)
クリティカル(C)
致命的(F)
この操作設定は、特定の重大度レベル以上のパイプラインのアラートを有効にします。パイプライン・アラートを無効にする場合にも使用します。デフォルトでは、パイプライン・アラートは「通常」以上のレベルで有効化されています。パイプライン・アラートのモニターの詳細は、「Oracle Service Busのアラートのモニター」を参照してください。アラートの構成の詳細は、『Oracle Service Busでのサービスの開発』のレポート・アクションに関する項およびアラート・アクションの追加に関する項を参照してください。
パイプライン・アラートは次のレベルで有効にすることができます。パイプラインの「プロパティ」ページでレベルを構成します。レベル・インジケータがService BusおよびService Busプロジェクトの「操作」ページに表示されます。
通常(N)
警告(W)
軽度(Mn)
重度(Mj)
クリティカル(C)
致命的(F)
この操作設定は、パイプラインのメッセージ・レポートを有効または無効にします。Service Busでは、メッセージ・データをメッセージ本文および他のメッセージ変数から取得できます。このデータは、1つまたは複数のレポート・プロバイダに配信されます。レポート・データには、SLA違反に関する情報も含まれます。デフォルトでは、レポートは「通常」以上のレベルで有効化されています。
この操作設定は、特定の重大度レベル以上のパイプラインおよび分割-結合のロギングを有効にします。パイプラインまたは分割-結合内のログ・アクションの重大度レベルは、そのパイプラインまたは分割-結合の操作設定の「ロギング」重大度レベルに一致する必要があります。デフォルトでは、ロギングは「デバッグ」以上のレベルで有効化されています。
ロギングは次のレベルで有効にすることができます。パイプラインまたは分割-結合の「プロパティ」ページでレベルを構成します。レベル・インジケータがService BusおよびService Busプロジェクトの「操作」ページに表示されます。
デバッグ(D)
情報(I)
警告(W)
エラー(E)
ログ・ファイルまたは標準出力(サーバー・コンソール)にログ・データを表示するには、Oracle WebLogic Serverのロギングを特定の重大度レベルに設定する必要があります。詳細は、「サービスのメッセージ・トレースの構成」を参照してください。
この操作設定は、パイプラインおよび分割-結合の実行トレースを有効または無効にします。Service Busでは、サーバーをシャットダウンすることなく、メッセージをトレースできます。これにより、メッセージ・フローのトラブルシューティングと診断が簡単になります。デフォルトでは、実行トレースは無効にされています。実行トレースを有効にすると、パイプライン・コンテキストやメッセージ・コンテキストから選別された各種詳細がログに記録されます。これらの詳細には、ステージ名、パイプライン名またはルート・ノード名、現在のメッセージ・コンテキストなどが含まれます。
ログ・ファイルまたは標準出力(サーバー・コンソール)にトレースを表示するには、Oracle WebLogic Serverのロギングを「情報」重大度レベルに設定する必要があります。実行トレースの詳細は、「実行トレースを使用した問題の診断」を参照してください。
この操作設定は、特定の詳細レベル以上のサービスのメッセージ・トレースを有効または無効にします。ペイロード制限(キロ・バイト単位)および デフォルトのエンコーディングも設定できます。デフォルトでは、メッセージ・トレースは無効です。
ログ・ファイルまたは標準出力(サーバー・コンソール)にトレースを表示するには、Oracle WebLogic Serverのロギングを「情報」重大度レベルに設定する必要があります。メッセージ・トレースの構成手順は、「サービスのメッセージ・トレースの構成」を参照してください。さらに、ペイロードのデフォルト・エンコーディングを指定する必要があります。たとえば、ペイロードのエンコードがShift_JISの場合、「デフォルト・エンコーディング」フィールドでエンコードを指定して、ログ・ファイル内でバイトがUTF8に変換されるようにします。
この操作設定は、ビジネス・サービスの応答しないエンドポイントを有効または無効にします。このオプションを選択すると、ビジネス・サービスは、実行時に応答しないエンドポイントURIを削除し(オフラインにする)、再試行と以降のリクエストの処理には応答するURIのみが使用されます。
オフラインのエンドポイントURIを再試行するまでの時間間隔を指定できます。ビジネス・サービスについてのみ、オフラインのURIを有効または無効にできます。デフォルトでは、オフラインのエンドポイントURIは無効です。
オフラインのエンドポイントURIの詳細は、「ビジネス・サービスのエンドポイントURIのモニターおよび管理」を参照してください。エンドポイントURIをオフラインとマークする手順は、「応答しないエンドポイントURIをオフラインにするService Busの構成」を参照してください。
サービスのスロットルを有効にし、同時実行性、スロットル・キュー、およびキューに入れられたメッセージの存続時間(TTL)を構成することにより、ビジネス・サービスを通過するメッセージのフローを制限できます。スロットルのプロパティには次のものがあります。
スロットルの状態: この操作設定は、ビジネス・サービスのスロットルを有効または無効にします。デフォルトでは、スロットルは無効です。
最大同時実行性: この操作設定は、ビジネス・サービスによって同時に処理可能なメッセージの数を制限します。デフォルトのメッセージ数は0 (ゼロ)です。これは制限がないことを意味します。
スロットル・キュー: この操作設定は、スロットル・キュー内のメッセージの最大数を制限します。デフォルトのメッセージ数は0 (ゼロ)です。これは制限がないことを意味します。
メッセージの有効期限: メッセージをスロットル・キュー内に置くことができる最大時間間隔(ミリ秒単位)。デフォルトのメッセージ数は0 (ゼロ)です。これは制限がないことを意味します。
ビジネス・サービスのスロットルの詳細は、「メッセージ・スロットル用にビジネス・サービスを構成する方法」を参照してください。
この操作設定は、ビジネス・サービスの結果キャッシュを有効または無効にします。デフォルトでは、結果キャッシュはグローバルに有効です。結果キャッシュの詳細は、『Oracle Service Busでのサービスの開発』のビジネス・サービスの結果のキャッシュによるパフォーマンスの改善に関する項を参照してください。
自動サービス移行(ASM)は、WebLogicサービス移行フレームワークを活用して、障害またはメンテナンスのために停止しているサーバーからクラスタ内の他の使用可能なサーバーにサービスを移行します。
注意:
このSOA Suite機能は、Oracle Integration Continuous Availabilityの一部です。Oracle SOA Suite for Middlewareオプションの詳細は、『Oracle Fusion Middlewareライセンス情報ユーザー・マニュアル』のOracle SOA Suite for Middlewareオプションに関する項を参照してください。
Service Busでは、次のASMがサポートされます。
集約機能およびSLAアラート・マネージャなどのシングルトン・サービス
ファイル、FTP、SFTPおよび電子メール・ポーラー・トランスポート。これらのトランスポートは、クラスタ内の1つの管理対象サーバーでのみ実行されるクラスタ・シングルトン・サービスです。
注意:
ASMは、クラスタ・ドメインにのみ使用できます。単一ノード・ドメインに影響はありません。
ASMを有効にする前提条件は、「自動サービス移行を有効にする前提条件」を参照してください。ASMを有効にするには、「グローバル・レベルの操作設定の構成」を参照してください。
ASMオプションを有効にすると、Service Busは最初に優先管理対象サーバー、次にクラスタをターゲット指定した集約サービスのアプリケーション・スコープのシングルトン・サービスおよび各ポーラーのプロキシ・サービスをデプロイします。集約サービスとポーラーのプロキシ・サービスは、クラスタ内の任意のサーバーへの移行に対して適格です。サービスの移行に対してクラスタ内のサーバーのサブセットはありません。サービスのポーリングは、最初に優先管理対象サーバーで開始されます。優先管理対象サーバーが停止すると、サービスはクラスタ内で利用可能な管理対象サーバーを順次ターゲット指定します。優先管理対象サーバーが中間に存在しても、ポーリングがそのサーバーで開始されない可能性があります。メッセージを処理する前にASMを有効にした後にすべてのサーバーを再起動する必要があります。
ヒント:
ASMを有効にする前にすべての管理対象サーバーが実行されていないことを確認することをお薦めします。これにより、特にポーラーのトランスポートのメッセージ処理の曖昧な状況が回避されます。
ASMオプションを選択して管理対象サーバーが再起動した後、Service Bus Consoleのポーラーのプロキシ・サービスでこれらのアクションを実行すると、次の結果になります。
作成: 新しいアプリケーション・スコープのシングルトン・サービスが新しいサービス用に作成されます。
更新/名前変更/移動: 新しいアプリケーション・スコープのシングルトン・サービスがそのサービス用に作成され、古いシングルトンがアンデプロイされてファイルが削除されます。
削除: そのサービスのシングルトンがアンデプロイされてファイルが削除されます。
クローン: 新しいアプリケーション・スコープのシングルトン・サービスがクローンされたサービスに作成され、元のサービスのシングルトンは引き続き存在します。
取消し: 最新の変更を元に戻します。
ASMオプションを無効にすると(前に有効にした後)、Service Busはポーラー・トランスポート用に作成されたシングルトン・サービスをアンデプロイし、関連付けられているすべてのファイルを削除します。これらの変更を有効にする前にASMを無効にした後にすべてのサーバーを再起動する必要があります。
ASMは、EJB、JEJBおよびHTTPサービスなどの非同期サービスに影響を与えません。このような場合、クライアントはサービスを使用できない場合に呼出し中に例外を受け取ります。クライアントはリクエストを再送信するか、使用できる場合に再試行オプションを構成する必要があります。
WebLogic Serverサービス移行フレームワークの詳細は、『Oracle WebLogic Serverクラスタの管理』のサービス移行に関する項を参照してください。
サービス・レベル設定の実行時の動作は、対応するグローバル設定によって異なります。実行時にサービスを完全に有効にするには、グローバル設定とサービス・レベル設定の両方を有効にする必要があります。サービス状態も有効にする必要があります。サービスが実行時に無効でも、モニター構成の設定を変更して保存することができます。たとえば、サービスのモニターが無効でも、集約間隔を変更して保存することができます。このように、設定を編集し、後で有効化することも可能です。
グローバル・レベルでモニターを有効または無効にすると、個別にモニターが有効にされているすべてのサービスでモニターが有効または無効になります。特定のサービスのモニターを有効にしていない場合、システムがそのサービスの統計の収集を開始する前に、そのサービスでモニターを有効にし、集約間隔を設定しておく必要があります。
グローバル・レベルの設定とサービス・レベルの設定を有効または無効にすると、これらの設定を効率的に有効または無効にできます。グローバル・レベルの操作設定は、サービス・レベルの操作設定に優先します。特定のサービスに対して有効にするには、次の設定をグローバル・レベルで有効にする必要があります。
モニター
SLAアラート
パイプライン・アラート
レポート
ロギング
結果キャッシュ
自動サービス移行
JavaScriptタイムアウト
「操作」ページを使用して、プロキシ・サービス、ビジネス・サービス、パイプラインおよび分割-結合の場所を容易に検索したり、サービス固有の操作設定を指定したりできます。
Service BusまたはService Busプロジェクトの「操作」ページでは、複数のサービスの集約間隔の設定、設定の有効化および無効化を行うことができます。サービスの「プロパティ」ページで、単一のサービスの操作設定を構成できます。Service BusまたはService Busプロジェクトの「操作」ページから操作設定を更新する際、アラートまたはロギングの重大度レベルの指定、メッセージ・トレースのプロパティの構成、またはビジネス・サービスのスロットルまたはエンドポイントURIの構成を行うことはできません。
操作設定を構成する場合は、次のガイドラインに従ってください。
一般に、プロパティを有効にするには、それらをサービス・レベルとグローバル・レベルの両方で有効にする必要があります。
SLAアラートをモニターとは独立して構成することも可能ですが、実行時にはこの2つの設定に関連が生じます。グローバル・モニターを有効にすると、SLAアラートを有効または無効にすることができます。ただし、SLAアラート・ルールの条件は評価するモニター統計によって決まるため、グローバル・モニターを無効にすると、SLAアラートも無効になります。
すべてのサービスのモニターを無効にすると、それまでにそれらのサービスに対して収集された統計はすべて削除され、統計の削除を元に戻すことはできません。
サービス状態、モニター、SLAアラート、パイプライン・アラートなどの一部の操作設定は、パブリックAPIを使用して有効または無効にすることもできます。詳細は、Oracle Service Bus Java APIリファレンスを参照してください。
グローバル・レベルの操作設定(グローバル設定とも呼ばれます)を構成すると、ドメイン内の適用可能なサービスすべてに影響します。ほとんどの設定は、実行時に有効にするためにはサービス・レベルとグローバル・レベルの両方で有効にする必要があります。Service Busホーム・ページの「グローバル設定」タブを使用して、設定をグローバル・レベルで更新します。次の図は「グローバル設定」タブを示しています。
操作設定をグローバル・レベルで構成するには:
次の表では、グローバル・レベルの操作設定について説明します。
表8-1 グローバル・レベルの操作設定
操作設定 | 使用方法 |
---|---|
モニタリング有効 |
ドメイン内のすべてのサービスのモニターを有効または無効にします。このオプションはまた、グローバル・レベルおよびサービス・レベルでSLAアラートを制御します。 |
SLAアラート有効 |
ドメイン内のすべてのサービスのSLAアラートを有効または無効にします。SLAアラートを有効にするには、グローバル・モニターも有効にする必要があります。 |
パイプライン・アラート有効 |
ドメイン内のパイプライン・アラートを有効または無効にします。 |
レポート有効 |
ドメイン内のすべてのパイプラインのメッセージ・レポートを有効または無効にします。 |
ロギング |
ドメイン内のすべてのパイプラインおよび分割-結合のロギングを有効または無効にします。 |
結果キャッシュ |
ドメイン内のビジネス・サービスの結果キャッシュを有効または無効にします。結果キャッシュを使用するようにビジネス・サービスを構成できますが、結果キャッシュが動作するためには、このグローバル・オプションを有効にする必要があります。結果キャッシュをグローバルに無効にした場合、結果キャッシュで有効にしたすべてのビジネス・サービスのキャッシュされた結果はフラッシュされます。 |
自動サービス移行有効 |
自動サービス移行(ASM)を有効にするには、このチェック・ボックスを選択します。選択した場合、Service Busは優先管理対象サーバーとクラスタをターゲット指定したアプリケーション・スコープのシングルトン・サービスをEARとして(各ポーラーのプロキシ・サービスとその集約サービスに1つずつ)作成およびデプロイします。優先管理対象サーバーが停止すると、ポーラーおよび集約サービスはクラスタ内で利用可能な任意のサーバーを順次ターゲット指定します。ASMを有効にした後で、すべてのサーバーを再起動する必要があります。 アプリケーション・スコープのシングルトン・サービスをすべてアンデプロイおよび削除するには、このチェック・ボックスを選択解除して変更を適用します。この変更を有効にするには、すべてのサーバーを再起動する必要があります。 |
JavaScriptタイムアウト |
JavaScript実行がエラーで終了するまでの時間間隔(秒単位)を指定します。デフォルト値は30秒です。 |
リシーケンサ・ロッカーのスレッドのスリープ |
ロッカー・スレッドのスリープ間隔を秒単位で指定します。処理できるメッセージを持つグループをリシーケンサが見つけられないときに、ロッカー・スレッドは指定した期間スリープ状態になります。処理可能なメッセージを持つグループが見つかった場合は、データベース・シークの各繰返しの間でロッカー・スレッドがスリープ状態になることはありません。デフォルト値は10です。 |
リシーケンサ最大ロック済グループ数 |
1回のデータベース検索で取得できる、処理対象のリシーケンサ・グループの最大数を指定します。取得されたグループは、処理用のワーカー・スレッドに割り当てられます。 |
完了メッセージのパージ |
リシーケンサ・データベースから処理済のリシーケンス・メッセージをパージするには、このオプションを選択します。 |
Fusion Middleware Controlには、操作設定を構成するためのオプションが複数ありますが、それらはすべて、構成するサービスの検索を実行することから始まります。
注意:
次の手順では、複数のサービスの操作設定を表示および更新する方法について説明します。サービスの「プロパティ」ページで、単一のサービスの設定を表示および更新することもできます。
操作設定を構成するサービスを検索するには:
サービスで構成できる設定は、構成しているのがビジネス・サービスであるか、プロキシ・サービスであるか、パイプラインであるか、分割-結合であるかによって異なります。複数のサービスに対して設定を構成する場合、Service Busの「操作」タブまたは「Service Busプロジェクト」ページで実行できます。これらのページの「操作」リストには、操作設定の有効化および無効化のみが含まれています。スロットルやオフラインのエンドポイントURI管理など、特定の構成が必要な設定は、特定のサービスの「プロパティ」ページでのみ構成できます。
特定の操作設定の構成は、「使用可能な操作設定」およびService Busで提供されているオンライン・ヘルプを参照してください。
複数のサービスに対して操作設定を構成するには:
Service Busの「操作」ページまたは「Service Busプロジェクト」ページで操作設定を有効または無効にすることに加えて、サービスの「プロパティ」ページでそのサービスの設定を有効または無効にすることもできます。ほとんどのサービスでは、ロギングやモニター・レベルの設定など、より詳細に操作設定を構成することもできます。
特定の操作設定の構成は、「使用可能な操作設定」およびService Busで提供されているオンライン・ヘルプを参照してください。次の図にサービスの「プロパティ」ページを示します。
単一のサービスに対して操作設定を有効または無効にするには:
サービスの「プロパティ」ページを使用して、そのサービスの集約間隔を設定します。集約間隔は、Fusion Middleware Controlに表示される集約統計を計算する間隔です。デフォルトの集約間隔の設定は10分です。
サービスの集約間隔を設定するには:
パイプラインおよび分割-結合の場合、サービスをモニターするレベルを指定できます。詳細は、「モニター」およびService Busで提供されているオンライン・ヘルプを参照してください。
サービスのモニター・レベルを構成するには:
プロキシ・サービスのメッセージ・トレースを有効にすると、パイプラインとプロキシ・サービス間でやり取りされたメッセージ(インバウンド・リクエストおよびレスポンス、アウトバウンド・リクエストおよびレスポンス・メッセージなど)がログに記録されます。ビジネス・サービスのメッセージ・トレースを有効にすると、パイプラインとビジネス・サービス間でやり取りされたメッセージ(アウトバウンド・リクエストおよびレスポンス・メッセージ)がログに記録されます。
ログに記録されたアウトバウンド・メッセージには、適用可能な場合、再試行回数、エラー・コード、およびエラー・メッセージを含めることもできます。トレース情報がサーバー・ログ・ファイルまたはサーバー・コンソールに記録されるようにするためには、Oracle WebLogic Serverロギングの重大度レベルも構成する必要があります。
Oracle WebLogic Serverのログ・レベルを設定するには:
ログ・ファイルまたは標準出力(サーバー・コンソール)にトレースを表示するには、Oracle WebLogic Serverのロギングを次の重大度に設定する必要があります。
ログの最低の重大度: 情報
ログ・ファイル: 情報
標準出力: 情報
ログの重大度の設定の詳細は、『Oracle WebLogic Serverログ・ファイルの構成とログ・メッセージのフィルタ処理』のログの重大度の使用に関する項を参照してください。
サービスのメッセージ・トレースを有効にするには:
サービスのSLAアラートのアラート・レベルを構成できます。詳細は、「サービス・レベル・アグリーメントのアラート」およびService Busで提供されているオンライン・ヘルプを参照してください。
サービスのSLAアラート・レベルを構成するには:
サービスのパイプライン・アラートのアラート・レベルを構成できます。詳細は、「パイプライン・アラート」およびService Busで提供されているオンライン・ヘルプを参照してください。
サービスのパイプライン・アラート・レベルを構成するには:
パイプラインおよび分割-結合のロギング・レベルを構成できます。詳細は、「ロギング」およびService Busで提供されているオンライン・ヘルプを参照してください。
サービスのロギング・レベルを構成するには:
ビジネス・サービスのスロットルの詳細は、「メッセージ・スロットル用にビジネス・サービスを構成する方法」を参照してください。スロットルの構成の詳細および手順は、「1つのビジネス・サービスに対するスロットルの構成」を参照してください。
オフライン・エンドポイントURIの管理の詳細は、「ビジネス・サービスのエンドポイントURIのモニターおよび管理」を参照してください。エンドポイントURI処理の構成の詳細および手順は、「応答しないエンドポイントURIをオフラインにするService Busの構成」を参照してください。
Service Busでは、開発環境からテスト環境への移動など、あるドメインから別のドメインにプロジェクトを移動する際に変更される可能性がある特定の環境値の更新に使用可能な構成ファイルを作成できます。
これには、グローバル・レベルとサービス・レベルの両方の操作設定の更新が含まれます。構成ファイルの作成および実行の詳細は、「応答しないエンドポイントURIをオフラインにするService Busの構成」を参照してください。
Oracle JDeveloper、Oracle Service BusコンソールまたはFusion Middleware ControlにService Bus構成JARファイルをインポートする場合、インポート中の構成にインポート元のドメインのグローバル設定も含まれていると、ドメイン・レベルの設定は上書きされます。
インポートされる構成でグローバル設定を保持するには、サービスのインポート時に操作設定の保持フラグを選択します。これは、既存のシステムのグローバル設定を上書きします。インポート・プロセスによってサービスが更新される際、個別のサービスの操作設定にも同じことが適用されます。
また、APIを使用してService Bus構成をインポートするときにも、操作設定を保持することができます。詳細は、Oracle Service Bus Java APIリファレンスのALSBConfigurationMBean
を参照してください。インポート時に設定を保持するには、次の例に示すようにMBeanを変更します。
例 - APIを使用したOracle Service Bus構成のインポート時の操作設定の保持
/** // Imports a configuration jar file, applies customization, activates it and exports the resources again // @throws Exception / static private void simpleImportExport(String importFileName, String passphrase) throws Exception { SessionManagementMBean sm = ... // obtain the mbean to create a session; // obtain the raw bytes that make up the configuration jar file File importFile = new File(importFileName); byte[] bytes = readBytes(importFile); // create a session String sessionName = "session." + System.currentTimeMillis(); sm.createSession(sessionName); // obtain the ALSBConfigurationMBean that operates on the // session that has just been created ALSBConfigurationMBean alsbSession = getConfigMBean(sessionName); // import configuration into the session. First we upload the // jar file, which will stage it temporarily. alsbSession.uploadJarFile(bytes); // then get the default import plan and modify the plan if required ALSBJarInfo jarInfo = getImportJarInf(); ALSBImportPlan importPlan = jarInfo.getDefaultImportPlan(); // preserve operational values importPlan. setPreserveExistingOperationalValues(true); // Modify the plan if required and pass it to importUploaeded method ImportResult result = alsbSession.importUploaded(importPlan); // Pass null to importUploaded method to mean the default import plan. //ImportResult result = alsbSession.importUploaded(null); // print out status if (result.getImported().size() > 0) { System.out.println("The following resources have been successfully imported."); for (Ref ref : result.getImported()) { System.out.println("\t" + ref); } } if (result.getFailed().size() > 0) { System.out.println("The following resources have failed to be imported."); for (Map.Entry e : result.getFailed().entrySet()) { Ref ref = e.getKey(); // Diagnostics object contains validation errors // that caused the failure to import this resource Diagnostics d = e.getValue(); System.out.println("\t" + ref + ". reason: " + d); } // discard the changes to the session and exit System.out.println("Discarding the session."); sm.discardSession(sessionName); System.exit(1); } // peform the customization to assign/replace environment values and // to modify the references. ... // activate the session sm.activateSession(sessionName, "description"); // export information from the core data ALSBConfigurationMBean alsbcore = getConfigMBean(null); //export the information at project level, pass only a collection of project refs to this method byte[] contentsProj = alsbcore.exportProjects(Collections.singleton(Ref.DEFAULT_PROJECT_REF),null); // the byte contents can be saved as jar file }