以下のような 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 コンポーネントをプログラムで直接取得する方法を知っていますか?