コアのコアその2

昨日の続き。ブートストラップUCLが登録された後

  • jboss.system:type=ServerInfo

実体はorg.jboss.system.server.ServerInfo。OS、JDK関連のプロパティとメモリ情報を持っている。listThreadDump()でスレッド一覧が見れるがさほどの情報ではないので、スレッドダンプが見たいときはkill -3するだろう。

  • jboss.system:service=ServiceController

org.jboss.system.ServiceController。JBossには「サービス」というものがある。MBeanにライフサイクルを追加したものと考えればいい。org.jboss.system.Serviceをimplementsしてればサービス。JBoss内ではライフサイクルメソッドのデフォルト実装を仕込んだorg.jboss.system.ServiceMBeanSupportを継承しているサービスが多いようだ。で、サービスをServiceControllerにインストールすれば、ServiceControllerが適宜ライフサイクル関連のオペレーション(create、start、stop、destory)を呼んでくれる。あと依存関係の解決もしてくれる(依存するサービスが上がるまで待ってくれるとか。で記述すればよい)。オペレーションlistDeployed()で、登録されているサービスのリストが見れる(全MBeanのうちの一部がサービスなわけだ)。リストされたMBeanを見ると、ObjectNameに「service=」が入っているMBeanは多いのだが、「service=」が無いやつもいる。統一して欲しいなー

  • jboss.system:service=MainDeployer

org.jboss.deployment.MainDeployer。デプロイの親玉。デプロイはまずMainDeployerのオペレーションdeploy()から開始される。サブデプロイヤとしてSARDeployerやらEJBDeployerやらを登録しておき、拡張子に応じてサブデプロイヤにデプロイを委譲する。デプロイされたモジュールの情報を取得するためのオペレーションがいろいろある。あとEnhancedSuffixOrderという属性があり、拡張子で優先順を決定できる。自分でデプロイヤを作ったときには注意かも

  • jboss.system:service=JARDeployer

org.jboss.deployment.JARDeployer。ただのJAR用デプロイヤ。META-INFの下にxmlファイルがあれば、「ただのJAR」でないとみなす。…特に何もしない。

  • jboss.system:service=ServiceDeployer

org.jboss.deployment.ServiceDeployer。サービス用デプロイヤ。拡張子がsar、deployer、service.xmlであればサービスとみなす。create時には、SAR用にUCLを作成し、続いてサービスをServiceControllerにインストールし、サービスのcreateを呼ぶ。



ここまでMBean登録が済んだら、MainDeployerがconf/jboss-service.xmlを読み始める。