我需要能够启动和停止特定模型中的所有服务,我对模型的理解是它是服务的逻辑分组,所以我期待当我从JConsole停止模型时它也会停止该模型中的所有服务,但这不会发生。有没有一种特殊的方式可以实现上述目标?
我需要这样做的原因是,在一个mule-config
内,我们有不同的服务组,我们希望独立地启动或停止服务组。
答案 0 :(得分:2)
从设置为initialState="stopped"
的所有服务开始,然后根据需要将其打开。这是一种方法:
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;
}
}
答案 1 :(得分:0)
我不确定这是否有效,但请注意,在Mule 3.x中,焦点已经从使用模型转移(即流程和配置模式不流动)。
在Mule 3.x上,您可以通过在多个应用程序中拆分配置并独立完成这些单独的Mule应用程序来实现您想要的目标。
在Mule 2.x上,一个选项是内省运行的实例MBean:您应该找到代表您的Model的MBean,然后在此Model中查找服务的MBean。从那里,您将能够启动/停止服务。