簡體   English   中英

如何在Mule中查找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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM