見えてきたJBoss 5の戦略

JBoss Inc.はEJBを軽量コンテナとアプリサーバの両方の上で動作させる計画です。Embeddable EJB 3.0は、簡単に言えば、J2SE上でEJBを動作させることを可能にする仕組みです。従来は、EJBを動かすためにはアプリケーションサーバが必要でした。JBossEJB実装はインターセプタをベースとした拡張可能かつ柔軟なものですが、JBossのサーバ自身がJMXコンポーネント・モデルに大きく依存していたため、それを動かすためには少なくともJMXのMBeanServerが必要でした。Embeddable EJB 3.0はこの制約を取り除き、どこでも動くEJBの実行環境を提供することを目指していると思われます。

Embeddable EJB 3.0は、上に書いたようにJBossマイクロコンテナの上に実現されているようです。マイクロコンテナとは、JBossが開発中のIoCコンテナで、JMXと同様の管理機能をPOJOに対しても適用できるようにするものです。このマイクロコンテナにはJBoss AOPが組み込まれます。マイクロコンテナは、POJOのデプロイや依存関係、メタデータの管理を担当し、JBoss AOPのmixinによってPOJOの管理インタフェースやメタデータを生成することでユーザに対する利便性を提供するのでしょう。JBossEJB 3.0拡張によってPOJOをMBeanにする機能は提供済みですから、JMX MBeanServerの代わりにこれをマイクロコンテナに対応させるのは比較的容易でしょう。

JBoss 4では、マイクロコンテナとアプリサーバは別物です。しかし、JBoss 5では、マイクロコンテナがアプリサーバのコアとして組み込まれ、マイクロコンテナの下位レイヤはJMXであろうが、J2SEであろうが、どちらでも動くようになるのでしょう。もし、EJB 3.0の実行環境であるEmbeddable EJB 3.0がSpringに代表される他の軽量コンテナや他社のアプリサーバに簡単に移植可能であれば、JBossの適用範囲は格段に広がりユーザも拡大するでしょう。そのようになってこそ、他のオープンソースライブラリとEJBを組み合わせることがとても自然にできるようになります。これは従来から指摘されてきたEJBのTestabilityの問題を解決するだけに止まらず、Loggingフレームワークやクラスローダがアプリサーバに依存するためにEJBの再利用性が阻害されるような事態は、今よりもかなり改善されることが期待されるのです。