Seam3の概要

2011年3月3日(木)
皆本 房幸

Seam3: CDI拡張モジュール

CDIでは、コンテキストによるインジェクションのためのアノテーションやAPIを提供していますが、それに加えてアプリケーションが新規のアノテーションや新規のコンテキストを追加するなど、CDI自身の機能を拡張するためのPortable Extension SPIを提供しています。

Portable Extensionを使うと、特定のJavaクラスのインスタンスをサーバー起動時にCDIコンテナに登録することや、インジェクションが起こるときに、それをトリガーにして何か処理をするようなことも可能です。Portable Extensionで作られた拡張モジュールはjarファイルとしてパッケージ化しますので、開発者がアプリケーションが必要なものだけを選択して使うことが可能です。

SeamFramework.orgプロジェクトでは、オープンソースでSeamフレームワークを開発しています。現在は、従来のSeam2と並行して、CDIの標準実装であるWeld、そして次期バージョンのSeam3を開発しています(Seamは「糸で紡いでつなぐ」という意味ですが、Weldは「金属を溶接してつなぎ合わせる」という意味になります)。Seam3は、CDI Portable Extensionを使ってJava EE APIをCDIベースで簡単に使えるように各種拡張ライブラリを提供します。

図2:Weld、CDI、Seam3の関係

現在開発中のSeamモジュール一覧とそのリリーススケジュールはこのページで確認できます。Seam3では、各モジュールは別々に管理され配布されるので、利用者は使いたいモジュールだけをアプリケーションに取り込むことができます。

CDI Portable Extensionは、Java EEの各種APIを横軸に横断した共通プラグインフレームワークととらえることも可能でしょう。そしてこの仕組みを使うことで、Java EEの上にさらに使いやすい機能群を構築できるようになります。今まで、必ずしもAPI間の連携がうまくいっていなかったJava EEですが、CDIの登場によって、より一層の開発生産性の向上が見込めます。それから、業務システムの基盤モジュールの様なものも、Portable Extensionで作ることで新規機能を開発することも可能です。このような拡張性は非常に魅力です。

Seam3のモジュールはJava EE 標準であるCDI上に作られているので、CDIの拡張モジュールは異なるアプリケーションサーバー上でも動作することが可能になります。新しいモジュールのアイデアがあれば、それをオープンソースとして公開することで、誰でも利用し、改善できるようになります。オープンソース開発による、使いやすく、カスタマイズできるJava EE環境の構築。これがSeamが目指している姿です。

次回は、実際にCDIの参照実装Weldのサンプルプログラムを動かしながらCDIの基本についてご紹介します。

レッドハット株式会社

JBoss コンサルタント。日本 JBoss ユーザ・グループ(www.jbug.jp)発起人、翻訳プロジェクトリーダ。 著書『JBoss入門』『JBoss徹底活用ガイド』(共著)他。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています