【特集】

JBoss Seam - EJB 3.0時代のフレームワークを使いこなす

1 JBoss Seamとは

    杉山貴章  [2006/08/31]

    JBoss Seamは、Java EE 5アプリケーションにおいてEJB 3.0(Enterprise Java Beans 3.0)のコンポーネントモデルとJSF(JavaServer Faces)のコンポーネントモデルをシームレスに統合するためのWebアプリケーションフレームワークである。

    JSFはWebアプリケーションにおいて画面表示を作成するためのフレームワークであり、MVC Web開発におけるビュー層およびコントローラ層の機能を提供する。具体的には、JSFのタグライブラリで拡張されたJSPを用いてWebインタフェースを記述し、Managed Beanと設定ファイルによってコントローラを実装するという構造になる。

    これに対してEJB 3.0はWebアプリケーションにおけるビジネス層を実装するためのAPIである。

    JSFもEJB 3.0もJava EE 5では標準APIに含まれており、今後のJava EEアプリケーションでは表示レイヤをJSFで、ビジネスロジックをEJB 3.0で記述するという構成が一般的になるだろうと言われている。ただしこの場合、それぞれ独立して記述されたビジネス層とコントローラ層を何らかの方法で結びつけるという作業が必要になる。

    JSFもEJB 3.0もそれぞれのドメインにおいては非常に優れたコンポーネントモデルを持つが、残念ながらJava EE 5では両者をつなぎ合わせるための標準の方法が提供されていない。そこで、JSFとEJB3を結びつけるためには多少複雑な手続きを行わなければならない。

    そこで登場したのがJBoss Seamである。JBoss SeamはJSFとEJB3の2つの異なるコンポーネントモデルを統合管理することで、表示レイヤとビジネスロジックのシームレスに結びつけることを可能にする。

    例えばJSFでは画面から受け取ったアクションを、XML形式の設定ファイル(faces-config.xml)で指定されたManaged Beanによって処理する。アプリケーションの状態管理はManaged Beanによって行われる。したがってビジネスロジックの実装としてEJB3を使用する場合、Maganed BeanからEJB3コンポーネントをルックアップし、データの受渡しを行うという手順が必要となる。

    一方Seamを使用した場合は、Managed Beanの設定を外部の設定ファイルではなくJavaソース中でアノテーションにより行う。そしてSeamコンポーネントそのものがManaged Beanの役割を果たす。すなわち、JSFにBeanの呼び出しが記述されていた場合、その呼び出し対象を自動的にSeamコンポーネントだと解釈し、適切なManaged Beanにマッピングされるという仕組みである。これによって、これまで2種類のコンポーネントを管理しなければならなかった部分がSeamコンポーネントのみを管理するだけでよくなる。

    Seam自身はEJB 3.0をサポートする環境ならばどのアプリケーションサーバでも動作する。また、状態管理にはEJB3のみでなくHibernateやjBPMを利用することもできる。プレゼンテーション層とビジネスロジック層におけるコンポーネントモデルの統一は、アプリケーションの一貫性を確保する上で極めて重要であり、JBoss Seamには多くの開発者が高い期待を寄せている。

    なお、JBoss Seamの提唱するコンポーネントモデルはJava Community Processに対して「JSR 299: Web Beans」として提出され、標準化プロセスがスタートしている。JSR 299については本稿では取り上げないが、JBoss Seamと合わせて注目していく必要があるだろう。

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン