CDI拡張モジュールの構造

今回はCDI拡張モジュールのアーカイブの作り方について書きます。

CDI拡張モジュールを定義するには次のようにします。

  • インタフェースjavax.enterprise.inject.spi.Extensionを実装した拡張モジュールのクラスを定義します
  • この拡張モジュールクラスの完全修飾名をMETA-INF/services/javax.enterprise.inject.spi.Extensionというテキストファイルに書きます

例えば、org.tanoseam.examples.MyExtensionという拡張モジュールのクラスを定義したとします。その場合、次のようにMyExtensionはjavax.enterprise.inject.spi.Extensionを実装する必要があります。

package org.tanoseam.examples;

import javax.enterprise.inject.spi.Extension;

public class MyExtension implements Extension
{
 public MyExtension() {
 System.out.println("**** MyExtension constructor");
 }
...
}

拡張モジュールはアプリケーションのアーカイブファイル内にアプリケーションコードと一緒に含めることも可能です。しかし、これから作るCDI拡張モジュールは任意のアプリケーションアーカイブに簡単に取りこめるようにjarとして作ることにします。

MyExtensionを含むjarファイルの構造は次のようになります。META-INF/services/javax.enterprise.inject.spi.Extensionのファイルの内容としてorg.tanoseam.examples.MyExtensionと書いておきます。

|-- META-INF
|   |-- MANIFEST.MF
|   `-- services
|       `-- javax.enterprise.inject.spi.Extension
`-- org
    `-- tanoseam
        `-- examples
            `-- MyExtension.class

この拡張モジュールのjarはCDIアプリケーションのアーカイブファイルのクラスパスに含めます。仮にCDIアプリケーションがwarファイルであればWEB-INF/libの下に拡張モジュールのjarファイルを配置します。以上で、warファイルをアプリサーバーにデプロイすると拡張モジュールがCDIコンテナによって認識されるようになります。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。