2011-08-18 98 views
0

我需要能够启动和停止特定模型中的所有服务,我对模型的理解是它是服务的逻辑分组,因此我期待在停止模型时从JConsole它也将停止该模型中的所有服务,但是这不会发生。有什么特定的方法可以达到上述目的? 我需要这样做的原因是,在一个mule-config我们有不同的服务组,我们希望独立地启动或停止一组服务。骡子模型的启动和停止

回答

0

我不确定这是否有效,但请注意,在Mule 3.x中,重点已经摆脱使用模型(即流程和配置模式不知道流程)。

在Mule 3.x上,你想要做的事情可以通过在多个应用程序中分割你的配置并独立地将这些独立的Mule应用程序关闭来实现。

在Mule 2.x上,一个选项是反省运行中的实例MBean:您应该找到表示您的模型的MBean,然后在此模型中查找MBeans for Services。从那里,你将能够开始/停止服务。

+0

我们目前使用的骡子2.2.1和应用是督促和我没有看到在不久的将来:(一升级的努力,是你说的是正确的它不工作,我想知道为什么?,如果model是一组服务,那么当模型启动或停止时不应该启动或停止这些服务? – Sudarshan

+1

分组“模型”提供的是关于共享通用配置属性,而不是绑定它们的生命周期 –

+0

“你应该找到代表你的模型的MBean,然后在这个模型中找到MBeans for Services”我试着去调查这个选项,但是给定一个模型,我找不到任何API,它会给我模型中的所有服务,有一些像model.getServices()或类似的'org.mule.module.ma nagement.mbean.ModelService'似乎暴露了Model的属性的MBean。 – Sudarshan

2

首先将您的所有服务设置为​​,然后根据需要启用它们。这里是做的一个方法:

List<String> modelNames = getEnabledModelNames(); 

for (String modelName : modelNames) { 

    try { 
     Collection<Service> services = muleContext.getRegistry().lookupServices(); 
     for (Service service : services) { 
      if (modelName.equals(service.getModel().getName())) { 
       service.start(); 
       logger.debug("service started {}", service.getName()); 
      } 
     } 
    } catch (Exception e) { 
     // throw exception; 
    } 
}