ベンダー・クラス用の OSGi バンドル・フラグメントの作成

JRE に備わっている IBM クラスまたはベンダー・クラスをアプリケーションが使用する場合、OSGi バンドル・フラグメントを作成して、そうしたクラスを OSGi フレームワークで使用できるようにする必要があります。

このタスクについて

CICS® TS 5.1 以降、OSGi フレームワークでは、どのクラスを JRE からロードできるかを制御する規則がより厳格になりました。

java という接頭部を持つパッケージはどれも、アプリケーションからの要求に応じて OSGi フレームワークによってロードされます。アプリケーションで JRE に備わっている IBM またはベンダーのパッケージ (com.ibm.misc など) を使用する場合、ミドルウェア OSGi バンドルを作成して、それらのクラスを OSGi フレームワークで使用できるようにする必要があります。そのようにしないと、トランザクションは AJ05 コードで異常終了し、java.lang.ClassNotFoundException エラーが JVM サーバー・エラー・ログと CICS システム・ログに書き込まれます。

CICS Java クラスに関しては以下のステップを実行する必要はありません。JCICS クラスは OSGi フレームワークで自動的に使用可能になるためです。

手順

  1. アプリケーションで必要となるそれぞれの IBM またはベンダーのパッケージに関して、パッケージをエクスポートするための OSGi バンドル・フラグメントを作成します。 以下の例は、OSGi バンドル・フラグメントのマニフェストに含めることのできる内容を示しています。
    Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-Name: Extension
    Bundle-SymbolicName: com.ibm.example.extension
    Bundle-Version: 1.0.0
    Bundle-Vendor: IBM
    Fragment-Host: system.bundle; extension:=framework
    Export-Package: com.ibm.misc
    Bundle-RequiredExecutionEnvironment: JavaSE-1.6

    Fragment-Host は、OSGi バンドル・フラグメントが OSGi フレームワークのシステム・バンドルを拡張することを定義します。Export-Package はエクスポートされるパッケージをリストします。この例の場合、com.ibm.misc で始まるパッケージがエクスポートされます。Eclipse を使用している場合は、フラグが立てられるエラーを無視してください。

  2. アプリケーションを変更し、適切な OSGi バンドル・マニフェストで、エクスポート対象パッケージのためにインポートを追加します。 IBM またはベンダーのパッケージにあるクラスを必要とする OSGi バンドルはそれぞれ、マニフェストでそのパッケージを宣言する必要があります。
  3. OSGi バンドル・フラグメントの CICS バンドル・プロジェクトを作成します。 フラグメントのライフサイクルをまとめて管理するかどうかに応じて、プロジェクトに OSGi バンドル・フラグメントを 1 つ含めることも、多数含めることも可能です。 ミドルウェア・バンドルをアプリケーションとは別個に保持し、管理者が CICS 内で別個にライフサイクルを管理できるようにするのがベスト・プラクティスです。

タスクの結果

JRE からパッケージをエクスポートする 1 つ以上の OSGi バンドル・フラグメントが含まれる CICS バンドル・プロジェクトを作成しました。配置すると、このミドルウェア・バンドルによって、アプリケーションを確実に CICS TS 5.1 JVM サーバーで実行できるようになります。

次のタスク

アプリケーションとミドルウェア・バンドルを配置します。ターゲット JVM サーバーの JVM プロファイルの OSGI_BUNDLES オプションでミドルウェア・バンドルが指定されていることを確認する必要があります。