起動時の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"付け忘れというオチ?