我想在Mule运行时(在上下文初始化之后)以编程方式添加新的RSS连接器流。当我尝试这样做时,我会得到一个生命周期异常,说明上下文已经初始化了。
有没有办法做到这一点而不重新启动整个上下文?
发布于 2014-11-05 23:43:25
我自己想出了解决办法。结果是,创建一个新的Mule上下文,添加我的流,然后启动上下文,效果很好。事实上,与我所走的另一条路相比,这条路更简单、更快、更干净。
创建默认的Mule上下文对我来说很好。如果您有特殊的需求,您可能需要向您的ConfigurationBuilder添加一个。
MuleContext newMuleContext = new DefaultMuleContextFactory().createMuleContext();
MuleRegistry registry = newMuleContext.getRegistry();
Flow flow = createFlow();
registry.registerFlowConstruct(flow);
newMuleContext.start();
编辑。这是createFlow方法。根据您的应用程序的需求,您的具体情况将有所不同。
protected Flow createFlow(MuleContext context, RssBean feed) throws Exception {
MuleRegistry registry = context.getRegistry();
String feedName = feed.getName();
HttpPollingConnector connector = getHttpPollingConnector(context, registry, feedName);
EndpointURIEndpointBuilder endpointBuilder = getEndpointBuilder(context, feed, registry, shortName, connector);
registry.registerEndpointBuilder(feedName + ".in", endpointBuilder);
MessagePropertiesTransformer transformer = getTransformer(context, feedName);
MessageProcessor mp = getOutboundFlowRef(context);
Flow flow = getFlow(context, shortName, endpointBuilder, transformer, mp);
registry.registerFlowConstruct(flow);
return flow;
}
https://stackoverflow.com/questions/26764093
复制相似问题