2016-06-28 2 views
0

3.8 문서 : v.6.0.1은 뮬 ESB 자바 구성 요소 나 공식 문서에서 Java의 기본 구성 요소 예를 응답하는 것을 시도하고있다

https://docs.mulesoft.com/mule-user-guide/v/3.8/java-component-reference

IDE는이다 나는 자바 것을 깨달았 Callable 클래스를 확장해야합니다. 이것은 이전 버전의 MULE과 주로 큰 차이점입니다. 그래서 내 경우

package javacomponent; 

import org.mule.api.MuleEventContext; 
import org.mule.api.lifecycle.Callable; 

public class helloWorldComponent implements Callable{ 
@Override 
    public Object onCall(MuleEventContext eventContext) throws Exception { 
     eventContext.getMessage().setInvocationProperty("myProperty", "Hello World!"); 
     return eventContext.getMessage().getPayload(); 
    } 
} 

내가 응용 프로그램을 실행하고 HTTP를 한 후/localhost를 얻을 것입니다이 문제 : 내가 할 수있는 8081이 아니라 안녕하세요 세계 SE는! 브라우저에서 렌더링 된 메시지

마지막 버전에서 변경된 사항이 있습니까? setPayload 요소를 포함해야합니까?

답변

2
그것이 호출 재산권 또는 변수을 설정하는 코드를 참조

, 아직 정의되지 때문에 {NullPayload} 될 수 있습니다 기존 페이로드를 반환합니다. 변수 탭을 디버그하고 평가 해보십시오. 노새 디버거, myProperty이라는 새 변수를 찾아야합니다. 다음 옵션 중 하나를 수행 기본적인 안녕하세요 텍스트를 얻기 위하여

:

  1. 페이로드 대신 호출 재산권 (교체하거나 기존 코드에 추가)를 설정 : eventContext.getMessage().setPayload("Hello World!");return eventContext.getMessage().getInvocationProperty("myProperty");
:
  • 페이로드 대신 호출 재산권를 돌려줍니다
  • +0

    저에게 맞는 작품입니다! 이제 페이로드가 null 인 이유를 알았습니다. 메시지를 할당하고 브라우저에서 렌더링 할 수 있습니다 .- –

    0

    먼저 Java 클래스를 올바르게 인스턴스화해야합니다. Java 객체를 구성하는 UI 또는 시각적 인 방법은 분명하지 않습니다. 자바 객체 구성 요소

    <spring:bean id="ordersTransform" name="OrdersTransformSingleton" class="org.dlw.transport.OrdersTransformSingleton" scope="singleton" /> 
    

    그리고 :

    확인이 제 런타임에 클래스를 인스턴스화되어 있는지 확인을 나는 그렇게 같은 봄 구성의 아주 간단한 예를 발견했다. 그런 다음 구현 한 호출 가능 메서드에 중단 점을 추가하고 응용 프로그램 포인터가 메서드에서 사용자를 가져 오는 지 확인합니다. 그렇다면 페이로드에 메시지를 추가하십시오.

    public Object onCall(MuleEventContext eventContext) throws Exception { 
        // freshen 
        this.transportObj = null; 
        this.transportObj = new ArrayList<OrdersValueObject>(); 
    
        MuleMessage res = eventContext.getMessage(); 
        List<Map> list = (LinkedList) res.getPayload(); 
        ...  
        res.setPayload(transportObj); 
        return res; 
    } 
    

    페이로드를 설정하고 메시지를 반환하십시오.

    +0

    구성 XML에서 다음과 같이 Java 클래스를 정의했습니다.