TX その6 CMT宣言からたどる
CMTかBMTかといった設定はejb-jar.xmlに記述されるもの.J2EEサーバ側ではデプロイ時にこのXMLファイルに書かれた内容をパースしてEJBコンテナの振る舞いをどのようにするかを決定するという流れになる.
JBossではEJB1つにつきEJBContainerも1つそれに対応させて生成するアーキテクチャを採用している.つまりCMTであればejb-jar.xmlに"
ではその各EJBにあわせたEJBContainerを生成しているのはどのクラスか?というとちょっとまだ自信がないのだが,どうやら"org.jboss.ejb.EjbModule"クラスであるようだ.このクラスにcreateStatelessSessionContainerメソッド他,各タイプのEJBを生成するためのprivateメソッドが揃っている.
それらのメソッドはさらに最終的にinitializeContainerメソッドというprivateメソッドの呼び出しに集約される.このinitializeContainerメソッドの引数を各タイプに合わせて用意している.CMTかBMTかの違いはまだここでも影響がでない.initializeContainerメソッドの中の最後の1行,addInterceptorsメソッドへの引数に使用されてさらに委譲されている.ここもまだスルーだったか.
addInterceptorsメソッドの中では,各種設定ファイルで定義されたInterceptorをwhile文で回しながら実際にInterceptorとして追加するかしないかの判定をしている.ここで対象となるInterceptorはjboss-service.xmlやstandardjboss.xml(EJBに絡んだもの後者)に定義されているが,ejb-jar.xmlで"Container"と書いておくと,standardjboss.xmlの
さて,やっとこ1歩進んだ感じだ.次は"Container"に一致して追加されたInterceptorの実装クラスだ.