[英]Mule Flow Reference Component throwing TransformerMessagingException while passing json
我有两个流程,一个流程接收xml负载,另一个流程接收json。 在将xml转换为json负载后,我使用m子流参考组件将xml调用路由到json流程。 第二个流程返回我需要转换回xml并回复客户端的json有效负载。
我的m子流参考在收到第二个流的json响应时抛出TransformerMsgException。
Failed to transform from "json" to "java.lang.String" (org.mule.api.transformer.TransformerException). Message payload is of type: String
这是供您参考的代码-
<flow name="post:/chkdb:application/json:chkd-config">
<logger message="========json payload==>>>>==== #[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()>0]">
<set-payload value="{"indicator":"True"}" mimeType="application/json" doc:name="Set Payload"/>
</when>
<otherwise>
<set-payload value="{"indicator":"False"}" 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请求-
<ggg>DeJmp03bkqALlRFYmgu4+A==</ggg>
我应该如何从其他流程到当前流程检索json响应。
这里缺少一些东西
第一个流程名称:post:/ chkdb:application / json: chkdbapi-config
第二个流程名称:post:/ chkdb:application / xml:chkdbapi-config
第二个流中的流引用:post:/ chkdb:application / json: chkdb-config
您没有引用“第一流程”。
因此,从您发布的流程中,我发现一些问题如下:-
1.您正在使用流程post:/ chkdb:application / json:chkdb-config不退出的地方,而应该是post:/ chkdb:application / json:chkdbapi-config
2.现在,在流中,您正在使用<when expression="#[message.payload.size()>0]">
,其中消息有效负载现在是String格式。
因此,您可以使用<when expression="#[message.payload.length()>0]">
,使用length()而不是size()或放置<json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object"/>
如果您使用#[message.payload.size()>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==>>>>==== #[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()>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()>0]">
<set-payload value="{"indicator":"True"}" mimeType="application/json" doc:name="Set Payload"/>
</when>
<otherwise>
<set-payload value="{"indicator":"False"}" 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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.