JBoss5 Deployerアーキテクチャ

JBoss5のDeployerのアーキテクチャはJBoss4から大きく変更されています。これが"Aspectized" Deployerです。従来は単一のDeployerがやっていた仕事を、アーカイブの解析、クラスローダ作成、Beanの登録などの各フェーズに分割し、それぞれをDeployerと呼んでいます。

With the old style of JBoss Deployers, a single deployer implementation would handle all the processing for the matching top level deployment unit. This behaviour was completely changed in the new Deployers architecture. Here we have a new way of handling deployment unit, we call it an aspectized deployment, meaning that each deployer implementation does just one thing

    • Chapter 10. Deployers module, Getting Started with the JBoss Microcontainer

これら各Deployerを組み合せを変えればデプロイの処理を自在にカスタマイズできます。このデプロイやの組み合せの定義をしているのがbootstrap-beans.xmlで、サーバーのブート時に登録されるPOJOが記述されています。

JBoss5のMainDeployerにはStructuralDeployersとDeployersという2種類のデプロイヤの集合が注入されています。以前のMainDeployerが、ファイルのサフィックスなどを見て下請けのDeployerにディスパッチしていたのとは対照的です。

StructuralDeployersはアーカイブの構造解析を司るものでJARやWARなどのファイルの構造に依存した処理をします、DeployersはSARDeployerやEJB3Deployerのようにデプロイの本来処理をするものです。

各Deployerはファイルのサフィックスなどを見て、自分が処理すべきアーカイブか否かを判断することができます。また、Deployは自分がどのフェーズで実行されるべきものかを知っているので、複数のDeployerの実行順序も制御されます。

bootstrap-beans.xmlでは、MainDeployerの定義以降で、*DeployerというPOJOが幾つも登録されていますが、これは上で書いたように複数の単機能のDeployersを束にして従来のデプロイ機能を実現しているためです。