JBoss 7 MBean依赖于另一个MBean

时间:2013-09-07 09:07:31

标签: java jboss jboss7.x jmx mbeans

我正在努力将项目从JBoss 4.2.2迁移到JBoss 7.1.1。我们在启动时将Configuration MBean和其他bean连接到此Configuration MBean以获取一些参数。 所以jboss-service.xml配置是这样的:

    <mbean code="example.ConfigManager" name="exam:name=ConfigManager">        
         <attribute name="DataSourceName">java:jboss/datasources/myDS</attribute>
    </mbean>
...
    <mbean code="example.AnotherMBean" name="exam:name=AnotherMBean">
         <depends>exam:name=ConfigManager</depends>
         <attribute name="Login">system</attribute>
    </mbean>

在jboss 7中,我已经按照需要的方式实现了MBean(实现了start()和stop()方法),但是当启动AnotherMBean并且它试图从ConfigManager获取信息时,我得到:

javax.management.InstanceNotFoundException: exam:name=ConfigManager

ConfigManager没有问题,它只是在AnotherMbean之后加载。是否可以为MBean定义加载顺序?

P.S。不建议切换到@Startup和@Singleton,由于我们的系统要求,现在不可能。

谢谢!

1 个答案:

答案 0 :(得分:0)

因此,没有找到解决方法,因此重新配置我的应用程序以使用带有@DependsOn注释的Singleton ejbs。并在@PostConstruct方法中创建了类似

的东西
    @PostConstuct 
    private void registerToJMX() {
       private MBeanServer platformMBeanServer;
       private ObjectName objectName = null;
       try {
           objectName = new ObjectName("tms:name=BlankNotifications");
           platformMBeanServer = ManagementFactory.getPlatformMBeanServer();
           platformMBeanServer.registerMBean(this, objectName);
       } catch (Exception e) {            
       }
    }

在JMX控制台中注册。