2016-06-08 3 views
0

두 개의 플로우가 하나의 XML 페이로드와 다른 json을 수신합니다. xml을 json 페이로드로 변환 한 후 mule 흐름 참조 구성 요소를 사용하여 json 플로우로 xml 호출을 라우팅합니다. 두 번째 흐름은 xml로 다시 변환하고 클라이언트에 응답해야하는 json 페이로드를 반환합니다.뮬 흐름 참조 구성 요소 throwing TransformerMessagingException json 전달 중

두 번째 흐름에서 json 응답을 수신하는 동안 My Mule 흐름 참조가 TransformerMsgException을 던지고 있습니다.

<flow name="post:/chkdb:application/json:chkd-config"> 
     <logger message="========json payload==&gt;&gt;&gt;&gt;==== #[message.payload]" level="INFO" doc:name="Logger"/> 
     <set-variable variableName="GGG_Number" value="#[json:ggg]" doc:name="Variable"/> 
       <!-- db call returns the payload--> 
     <choice doc:name="Choice"> 
      <when expression="#[message.payload.size()&gt;0]"> 
       <set-payload value="{&quot;indicator&quot;:&quot;True&quot;}" mimeType="application/json" doc:name="Set Payload"/> 
      </when> 
      <otherwise> 
       <set-payload value="{&quot;indicator&quot;:&quot;False&quot;}" mimeType="application/json" doc:name="Set Payload"/> 
      </otherwise> 
     </choice> 
     <logger message="=========after producing json output=======" level="INFO" doc:name="Logger"/> 
    </flow> 
    <flow name="post:/chkdb:application/xml:chkdb-config"> 
     <logger message="========= xml payload======== #[message.payload]" level="INFO" doc:name="Logger"/> 
     <json:xml-to-json-transformer mimeType="application/json" doc:name="XML to JSON"/> 
     <flow-ref name="post:/chkdb:application/json:chkdb-config" doc:name="post:/chkdb:application/json:chkdbapi-config"/> <!-- Getting exception here --> 
     <logger message=" after subflow call ==== #[message.payload]" level="INFO" doc:name="Logger"/> 
     <json:json-to-xml-transformer mimeType="application/xml" doc:name="JSON to XML"/> 
     <logger message="after json to xml conversion" level="INFO" doc:name="Logger"/> 
    </flow> 

XML 요청 - - 여기

Failed to transform from "json" to "java.lang.String" (org.mule.api.transformer.TransformerException). Message payload is of type: String 

는 참조 용 코드입니다 내가 현재의 흐름에 다른 흐름 JSON 응답을 검색하는 방법을

<ggg>DeJmp03bkqALlRFYmgu4+A==</ggg> 

. 게시물 : :/chkdb : 응용 프로그램/JSON : chkdbapi-설정

  • 두 번째 흐름 이름 : 게시물 :/chkdb : 응용 프로그램/

  • 답변

    0

    • 제 1 유동 이름 여기에없는 것이 있습니다 XML : 두 번째 흐름 chkdbapi-설정

    • 흐름 심판 : 게시물 :/chkdb : 응용 프로그램/JSON : chkdb-설정

    첫 번째 흐름을 참조하고 있지 않습니다.

    +0

    이전에 프로젝트 고유 이름을 삭제하도록 편집 한 플로우 이름을 업데이트했습니다. – vashishth

    +0

    들어오는 XML의 예제를 붙여 넣을 수 있습니까? 당신의 오류를 재현 할 수 없습니다. –

    +0

    DeJmp03bkqALlRFYmgu4 + A == 또한 고마워요. – vashishth

    0

    다음과 같이 몇 가지 문제점을 찾을 수 있습니다. -
    1. 흐름 게시 위치는 다음과 같습니다./chkdb : application/json : chkdb-config가 종료되지 않고 게시되어야합니다. :/chkdb : application/json : chkdbapi-config 대신
    2. 지금은 <when expression="#[message.payload.size()&gt;0]">을 사용하고 있습니다. 여기서 메시지 페이로드는 바로 String 형식입니다.
    그래서, 당신은 길이()를 사용하여, <when expression="#[message.payload.length()&gt;0]">를 사용할 수 있습니다 대신 크기()의 또는 다음과 같이 그래서 전체 코드가 뭔가 될 것 #[message.payload.size()&gt;0]

    를 사용하는 경우 선택 전에 <json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object"/>을 넣어 : -

    <flow name="post:/chkdb:application/json:chkdbapi-config"> 
          <logger message="========json payload==&gt;&gt;&gt;&gt;==== #[message.payload]" level="INFO" doc:name="Logger"/> 
         <!-- <json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object"/> --> <!-- incase you use #[message.payload.size()&gt;0] in your choice --> 
            <!-- db call returns the payload--> 
        <set-variable variableName="GGG_Number" value="#[json:ggg]" doc:name="Variable"/>  
          <choice doc:name="Choice"> 
           <when expression="#[message.payload.length()&gt;0]"> 
            <set-payload value="{&quot;indicator&quot;:&quot;True&quot;}" mimeType="application/json" doc:name="Set Payload"/> 
           </when> 
           <otherwise> 
            <set-payload value="{&quot;indicator&quot;:&quot;False&quot;}" mimeType="application/json" doc:name="Set Payload"/> 
           </otherwise> 
          </choice> 
          <logger message="=========after producing json output=======" level="INFO" doc:name="Logger"/> 
         </flow> 
    
         <flow name="post:/chkdb:application/xml:chkdbapi-config"> 
          <logger message="========= xml payload======== #[message.payload]" level="INFO" doc:name="Logger"/> 
          <json:xml-to-json-transformer mimeType="application/json" doc:name="XML to JSON"/> 
          <flow-ref name="post:/chkdb:application/json:chkdbapi-config" doc:name="post:/chkdb:application/json:chkdbapi-config"/> <!-- Getting exception here --> 
          <logger message=" after subflow call ==== #[message.payload]" level="INFO" doc:name="Logger"/> 
          <json:json-to-xml-transformer mimeType="application/xml" doc:name="JSON to XML"/> 
          <logger message="after json to xml conversion" level="INFO" doc:name="Logger"/> 
         </flow>