2013-10-11 2 views
0

현재 메시지 페이로드로 POJO가있는 뮬 플로우가 있습니다. text/plain을 반환하는 HTTP REST 서비스를 호출하여 메시지를 풍부하게하고 싶습니다. 몇 가지 방법을 시도했지만 오류가 발생할 때마다. 내 현재 흐름은 다음과 같습니다.HTTP REST 서비스에서 Mule 메시지를 풍부하게 만들 수 있습니까?

부자 뒤에있는 구성 요소는 단지 변수 값을 내 POJO로 이동시킵니다. 내가 이것을 실행하면 내가 얻을 : 나에게 많은 이해가되지 않습니다,하지만 난 전송 변압기를 해제 시도하고

An invalid return type "interface org.mule.api.MuleMessage" 
was specified for transformer "JAXBMarshallerTransformer" 

내가 얻을 :

java.lang.ClassCastException: org.mule.transport.http.ReleasingInputStream 
cannot be cast to java.lang.Integer 

가지 의미가 어떤 ,하지만 정말 도움이되지 않습니다.

내 질문에 간단한 text/plain REST 서비스를 호출하여 메시지를 풍부하게 만들 수 있습니까? 그렇다면 어떻게하면 더 풍성하게 만들 수 있습니까?

업데이트

여전히 아래의 제안에 따라 변화와 동일했다. 전체 스택 추적 : 당신이 변수로 <http:outbound-endpoint />의 결과를 저장하려면

ERROR 2013-10-11 16:01:03,998 [[sci_silica_interface].connector.http.mule.default.receiver.02] org.mule.exception.CatchMessagingExceptionStrategy: 
******************************************************************************** 
Message    : An invalid return type "interface org.mule.api.MuleMessage" was specified for transformer "JAXBMarshallerTransformer" 
Code     : MULE_ERROR-266 
-------------------------------------------------------------------------------- 
Exception stack is: 
1. An invalid return type "interface org.mule.api.MuleMessage" was specified for transformer "JAXBMarshallerTransformer" (org.mule.api.transformer.TransformerException) 
    org.mule.module.xml.transformer.jaxb.JAXBMarshallerTransformer:122 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerException.html) 
-------------------------------------------------------------------------------- 
Root Exception stack trace: 
org.mule.api.transformer.TransformerException: An invalid return type "interface org.mule.api.MuleMessage" was specified for transformer "JAXBMarshallerTransformer" 
    at org.mule.module.xml.transformer.jaxb.JAXBMarshallerTransformer.doTransform(JAXBMarshallerTransformer.java:122) 
    at org.mule.transformer.AbstractTransformer.transform(AbstractTransformer.java:411) 
    at org.mule.transformer.AbstractTransformer.transform(AbstractTransformer.java:363) 
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything) 
******************************************************************************** 

org.mule.api.transport.DispatchException: Failed to route event via endpoint: DefaultOutboundEndpoint{endpointUri=http://localhost:8080/ods.service/agent/agentCode/12345, connector=HttpConnector 

답변

0

당신은 스트림을 소비 먼저해야합니다. 이렇게하려면

그래서 당신은 단순히 당신 enricher이 필요 :

<processor-chain> 
    http:outbound-endpoint exchange-pattern="request-response" host="localhost" 
port="8080" 
path="ods.service/agent/agentCode/#[message.payload.getAgentEntityNumber()]" 
method="GET" mimeType="text/plain" doc:name="HTTP"/> 
    <object-to-string-transformer /> 
</processor-chain> 
+0

더 부자? 컴파일러는 그것을 좋아하지 않습니다. –

+0

내 의견을 바탕으로 내 대답이 향상되었습니다. – genjosanzo

+0

도움을 주셔서 감사합니다.하지만 여전히 실패하고 있습니다. 나는 그것이 전체 스택 추적을 질문에 추가 할 '객체 대 문자열 변환 자'에 도달하기 전에 HTTP 끝점에서 오류가 발생하고 있음을 확신합니다. –

0

내가 결국 HTTP 엔드 포인트를 사용하려고 포기했다. 대신 나는 REST 호출과 풍부함을 수행하는 사용자 정의 Java 클래스를 작성했다 (이것은 Callable을 구현한다). 나는 <component> 태그를 사용하여 흐름에 포함 시켰습니다. 나는 아직도 더 방법이 있다고 확신하지만 어떤 예제도 찾을 수 없으며,이 방법이 효과적이다.

+0

올바른 해결 방법은 genjsanzo의 대답을 참조하십시오. –

관련 문제