2012-07-05 5 views
0

Mule에서 Java 구성 요소를 찾는 방법은 무엇입니까?

muleContext.getRegistry().lookupObjects(DefaultJavaComponent.class); 

을 수행하여 사용자 정의 에이전트

<custom-agent name="my-agent" class="com.monitor.MyAgent"/> 

을 등록하는 동안 나는 그것을 얻으려고 한

<flow name="MainFlow2" doc:name="MainFlow2"> 
    ... 
    <component class="com.service.gateway.MyService" doc:name="My Gateway"/> 
    ... 
</flow> 

이하이 자바처럼 보이는 같은 자바 구성 요소를 감안할 때 구성 요소가 레지스트리에 없으면 가져올 수 없습니다.

은 지금까지 나는

// 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 구성 요소 프로그래밍 얻을하는 지 알고 있나요이 해결 방법이 있나요?

+0

일부 테스트를 실행했고 모든 구성 요소가 레지스트리에 올바르게 등록되었습니다. 구성 요소가 확장/구현하는 클래스/인터페이스는 무엇입니까? – genjosanzo

+0

@genjosanzo 아니, 그들은 POJO입니다. 어떤 레지스트리에 있습니까? – rodrigoap

+0

그래서 그들은 아마도 DefaultJavaComponent로 등록되지 않을 것입니다. 직접 룩업하려고 했습니까 (예 : muleContext.getRegistry(). lookupObjects (MyService.class))? – genjosanzo

답변

2

DefaultJavaComponent는 모든 POJO를 사용 가능한 구성 요소로 적용하는 데 사용되는 Mule 래퍼이므로 등록되지 않은 이유입니다.

개인적으로, 고급 시나리오 이런 종류의, 나는 나의 POJO를 인스턴스화 componentspring-object들로 참조하고 이해하게 어떤 전략을 사용 muleContext.getRegistry()에서 그들을 찾기 위해 스프링을 사용 (이름을? 클래스?).

+0

문제는 래퍼를 가져오고, 이름 또는 클래스를 찾고 POJO 인스턴스를 반환한다는 것입니다. – rodrigoap

+0

미안하지만, 나는 오해했다. 나는 당신이 POJO 인스턴스를 원한다고 생각했다. –

관련 문제