![](/img/trans.png)
[英]How do I look up a Clojure keyword in IPersistentMap from Java?
[英]How do I look up Java Components in Mule?
給出一個類似下面的Java組件
<flow name="MainFlow2" doc:name="MainFlow2">
...
<component class="com.service.gateway.MyService" doc:name="My Gateway"/>
...
</flow>
我正在嘗試在注冊自定義代理時獲取它
<custom-agent name="my-agent" class="com.monitor.MyAgent"/>
通過做這個
muleContext.getRegistry().lookupObjects(DefaultJavaComponent.class);
看起來這些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組件?
DefaultJavaComponent是一個Mule包裝器,用於將任何POJO作為可用組件進行調整,這就是為什么你不會找到它注冊的原因。
就個人而言,對於這種高級場景,我會使用Spring來實例化我的POJO,將它們稱為component
spring-object
,並使用任何有意義的策略(按類名?按類muleContext.getRegistry()
在muleContext.getRegistry()
查找它們。 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.