【问题标题】:Automatically starting a JBoss service (MBean)自动启动 JBoss 服务 (MBean)
【发布时间】:2009-06-18 01:00:24
【问题描述】:

我正在尝试构建一个应该在每次启动服务器时自动启动的 JBoss 服务。

我的服务有以下类结构:

public interface CumbiaXPMServiceMBean extends org.jboss.system.ServiceMBean
public class CumbiaXPMService extends org.jboss.system.ServiceMBeanSupport implements CumbiaXPMServiceMBean

我还有以下配置文件——jboss-service.xml——用于我的服务:

<server>
    <mbean code="uniandes.cumbia.xpm.jboss.CumbiaXPMService"
       name="jcumbia:service=JCumbiaEngine">
      <depends>jcumbia:service=cumbiaConsole</depends>
      <attribute name="LocationInCumbia" attributeClass="java.lang.String">XPMEngine</attribute>    
    </mbean>
</server>

我的问题是:如何自动启动这个服务?

我预计 JBoss 会在加载过程中调用 start() 方法,但事实并非如此:我的 start() 方法中有很多登录代码,但我没有看到任何输出.

但是,当我使用 JMXConsole 查看 MBean 状态时,它的状态 (StateString) 是“已启动”。

问题已解决

我找到了解决问题的方法。我重写了方法 start()、stop()、destroy() 和 create();不过,由于我正在扩展抽象类 ServiceMBeanSupport,我应该重写方法 startService()、stopService() 等。

我刚刚将我的代码从方法 start() 移动到方法 startService(),现在一切都按照我的需要运行:只要它的依赖关系得到满足,我的服务就会启动并执行 startService() 方法。

我认为结论是:虽然MBean的生命周期涉及调用create()、start()、stop()和destroy(),但抽象类ServiceMBeanSupport的实现使用这些方法来处理生命周期.然而,它提供了受保护的方法 *Service( ) 以允许程序员参与生命周期。

【问题讨论】:

  • “自动”?应用服务器启动时服务不会“启动”吗?如果 JMX 控制台说它已经启动,那么什么行为让您相信它没有启动?
  • 我在 start() 方法中有一些日志记录代码,但它没有被执行。我在类的构造函数中有一些日志记录代码,我可以看到它的输出,但就是这样。

标签: java jboss service jakarta-ee mbeans


【解决方案1】:

问题已解决

我找到了解决问题的方法。我重写了方法 start()、stop()、destroy() 和 create();不过,由于我正在扩展抽象类 ServiceMBeanSupport,我应该重写方法 startService()、stopService() 等。

我刚刚将我的代码从方法 start() 移动到方法 startService(),现在一切都按照我的需要运行:只要它的依赖关系得到满足,我的服务就会启动并执行 startService() 方法。

我认为结论是:虽然MBean的生命周期涉及调用create()、start()、stop()和destroy(),但抽象类ServiceMBeanSupport的实现使用这些方法来处理生命周期.然而,它提供了受保护的方法 *Service( ) 以允许程序员参与生命周期。

【讨论】:

    【解决方案2】:

    对我来说,它有助于在 MBean 接口中定义停止和启动方法:

    public interface MyServiceMBean {
        ...
    
        // Lifecycle callbacks
        void start() throws Exception;
        void stop();
    }
    

    优点是您不必扩展 ServiceMBean 或 ServiceMBeanSupport。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-23
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      相关资源
      最近更新 更多