給定一個Java組件,如一個下面如何查找Mule中的Java組件?
<flow name="MainFlow2" doc:name="MainFlow2">
...
<component class="com.service.gateway.MyService" doc:name="My Gateway"/>
...
</flow>
我試圖同時做這個
muleContext.getRegistry().lookupObjects(DefaultJavaComponent.class);
註冊自定義代理
<custom-agent name="my-agent" class="com.monitor.MyAgent"/>
得到它看起來像這些Java組件不在註冊表中,我沒有得到它們。
到目前爲止,我有這個解決辦法
// Get all flows
for (AbstractFlowConstruct flowConstruct : muleContext.getRegistry().lookupObjects(AbstractFlowConstruct.class)) {
if (flowConstruct instanceof AbstractPipeline) {
//get flow's MessageProcessor
List<MessageProcessor> mgs = ((AbstractPipeline) flowConstruct).getMessageProcessors();
for (MessageProcessor messageProcessor : mgs) {
if (messageProcessor instanceof DefaultJavaComponent) {
DefaultJavaComponent javaComp = (DefaultJavaComponent) messageProcessor;
//GOT IT!
}
}
}
}
你知道如何直接獲得所有Java組件編程?
我已經運行了一些測試,並且每個組件都在註冊表中正確註冊。你的組件擴展/實現了哪些類/接口? – genjosanzo 2012-07-07 11:39:31
@genjosanzo沒有,他們是POJO。他們是哪個註冊管理機構? – rodrigoap 2012-07-08 20:37:02
,所以它們可能不會被註冊爲DefaultJavaComponent。您是否嘗試直接查找它們(例如muleContext.getRegistry()。lookupObjects(MyService.class))? – genjosanzo 2012-07-08 23:21:30