軽量コンテナについて考える

EJB用のコンテナがEJBコンテナならば、POJO*1用のコンテナが軽量コンテナです。軽量コンテナにはトランザクション、セキュリティなどのサービスを登録できます。モジュールアクセスにはJNDIを使いませんし、デプロイメントのために複雑なXMLも書きません。お手軽で高速なのがウリでしょう。

軽量コンテナは、①アプリケーションはPOJOで書く、②コンテナはスタンドアロンでも動く、③サービスはコンテナのAspectとして実現する、というのが共通する傾向です。中小規模ならスタンドアロンのコンテナでいいですし、企業アプリケーションならサーバを使えばよいでしょう。

サーバならではの機能としては、分散、クラスタリング、アプリケーション間連携、レガシーシステムとの接続、クラスローダ、デプロイメントなどがあります。JBoss 4は基本的にはサーバとしての道を歩んでいますが、JBossAOP, JBossDO, JBossJMS(Reloaded)などはスタンドアロンでも使えるように設計されています。テストは軽量コンテナ、運用はサーバのようなことができると開発者としては嬉しいですね。軽量コンテナをMock Objectのように使えるからです。

*1:Plain Old Java Object