起動時のCORBA ORB/POA JNDI登録について

某S田さんよりJBoss-User-MLへの投稿

JBoss 4.0.1sp1では、CORBAのインスタンスがJNDIにデフォルトで
登録されていましたが、
JBoss 4.0.3sp1では、
登録されなくなったかと思います。

これは、JBoss 4.0.3sp1では、
CORBAが推奨されなくなったのでしょうか?
そでなければ、どのように記述すれば、

JBossCorbaORB (class: org.omg.CORBA.ORB)
JBossCorbaPOA (class: org.omg.PortableServer.POA)

がスタートアップで組み込まれますか?
低レベルなご質問ですみませんが、
ご回答いただけるとありがたく存じます。

この手の話は大好きなので勝手に調べてみた.てかいま調べ中.良い答えが見つかったらMLにレス投稿します(その前に他の方がしちゃったりして).



JBoss 4.0.1sp1のソースコードによれば、ORBとPOAをJNDIに登録しているのは、"public class CorbaORBService extends ServiceMBeanSupport"の"startService"メソッド.

ServiceMBeanSupportについて復習.startServiceが呼ばれるタイミングはServiceMBeanSupportのstartメソッドがJMXのMBeanライフサイクルの中で呼ばれたときである、即ちCorbaORBServiceがMBeanにregisterされさえすれば、startServiceメソッドの呼び出しはその後確定的に行われる(エラー落ちしなければ).

以下は過去のエントリ.

AdminDevel_323.pdfのPage105あたりを参考に,JBossの起動プロセスを知るべくソースを追いかけてみた.経路だけ簡単に言うと以下.

build.sh

org.jboss.Main.main(String)

org.jboss.Main.boot(String)

org.jboss.system.server.ServerLoader.load(ClassLoader)

ここでとりあえずサーバインスタンスが生成されて,startする.

org.jboss.system.server.ServerImpl.start()

org.jboss.system.server.ServerImpl.doStart()

このprivateなdoStartメソッドの中でMBeanサーバが起動されて,まずMainDeployerとかJARDeployer, SARDeployerといった先に必要なMBeanが生成・登録・開始される.それから各サーバセットのlibフォルダに置いたライブラリをロードし, confフォルダの各設定ファイルをリソースとしてロードする.そしてjboss-service.xmlの定義内容を読み,その内容に従って必要な分だけ各種MBeanの生成・登録・開始等が行われる.

そうそうMBeanの登録は一部のMBean(MainDeployer等・・・ハードコーディング)を除いてjboss-service.xmlの内容から登録対象を決定している.だからコード上にはCorbaORBServiceを登録しているような個所は存在しない.

JBoss 4.0.3sp1のソースをこれから見るけれども、登録されなくなったとしたら考えられるのは、メソッド実装が変わってしまったか、あるいはMBean登録されなくなったか(jboss-service.xmlの変更)など.



JBoss 4.0.3sp1のCorbaORBService.startServiceメソッドもちゃんとJNDIにbindしていた.となると後はjboss-service.xmlしか考えられない.

それぞれコンパイルしてjboss-service.xmlおよび○○-service.xmlシリーズをチェック.

JBoss 4.0.1sp1ではサーバコンフィギュレーションセット"all"の中のiiop-service.xmlにて発見."run.sh -c all"で起動すればJNDIに登録されることを確認.

JBoss 4.0.3sp1でも確認.てかこっちも"all"の中のiiop-service.xmlにて発見.となると状況的には「JBoss 4.0.3sp1では、登録されなくなった」のがアヤシイということになってきた.

JBoss 4.0.3sp1起動させてJNDI Viewを見てみる.

java: Namespace

  +- jaas (class: javax.naming.Context)
  |   +- JmsXARealm (class: org.jboss.security.plugins.SecurityDomainContext)
  |   +- jbossmq (class: org.jboss.security.plugins.SecurityDomainContext)
  |   +- HsqlDbRealm (class: org.jboss.security.plugins.SecurityDomainContext)
  +- TransactionPropagationContextImporter (class: org.jboss.tm.TransactionPropagationContextImporter)
  +- JmsXA (class: org.jboss.resource.adapter.jms.JmsConnectionFactoryImpl)
  +- JBossCorbaNaming (class: org.omg.CosNaming.NamingContextExt)
  +- DefaultDS (class: org.jboss.resource.adapter.jdbc.WrapperDataSource)
  +- StdJMSPool (class: org.jboss.jms.asf.StdServerSessionPoolFactory)
  +- TransactionManager (class: org.jboss.tm.TxManager)
  +- JBossCorbaPOA (class: org.omg.PortableServer.POA)
  +- TransactionPropagationContextExporter (class: org.jboss.tm.TransactionPropagationContextFactory)
  +- ConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
  +- DefaultJMSProvider (class: org.jboss.jms.jndi.JNDIProviderAdapter)
  +- XAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
  +- JBossCorbaInterfaceRepositoryPOA (class: org.omg.PortableServer.POA)
  +- Mail (class: javax.mail.Session)
  +- JBossCorbaORB (class: org.omg.CORBA.ORB)
  +- timedCacheFactory (class: javax.naming.Context)
Failed to lookup: timedCacheFactory, errmsg=null
  +- SecurityProxyFactory (class: org.jboss.security.SubjectSecurityProxyFactory)
  +- comp (class: javax.naming.Context)

ん〜.ちゃんと登録されてますな.

単純に"-c all"付け忘れというオチ?