我有一个 Mule 配置,其中有 2 个流程:- 一个流程公开一个 REST 服务:-
<flow name="restServiceFlow1" doc:name="restFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" doc:name="HTTP"/>
<jersey:resources doc:name="REST">
<component class="com.test.services.schema.maindata.v1.Impl.MainDataImpl"/>
</jersey:resources>
</flow>
以及通过文件入站放置 JSON 请求来使用服务的另一个流程:-
<flow name="restFlow2">
<file:inbound-endpoint path="E:\backup\test" responseTimeout="10000" connector-ref="File_Global">
<file:filename-regex-filter pattern="aa.txt" caseSensitive="false"/>
</file:inbound-endpoint>
<json:json-to-object-transformer returnClass="java.util.HashMap"/>
<foreach collection="#[payload.insertDataRequest]">
<http:outbound-endpoint exchange-pattern="request-response"
contentType="application/json" method="GET"
address="http://localhost:8082/getData/insert/?id=#[payload.id]&name=#[payload.name]&age=#[payload.age]&designation=#[payload.designation]"/>
</foreach>
</flow>
现在需要在文件入站端点之后检查内容类型是否为 JSON ...如果内容类型不等于 JSON,那么它将在日志中显示不是 JSON 消息..
我尝试了以下方法:-我在文件入站端点之后放置了一个选择路由器:-
<when evaluator="groovy" expression="payload.ContentType=='JSON'">
检查有效负载的内容类型,如果内容类型不是 JSON,它将在日志中显示不是 JSON,所以我将日志放在选择路由器的默认值中......但我得到以下异常:-
Exception stack is:
1. No such property: ContentType for class: org.mule.transport.file.ReceiverFileInputStream (groovy.lang.MissingPropertyException)
org.codehaus.groovy.runtime.ScriptBytecodeAdapter:50 (null)
2. groovy.lang.MissingPropertyException: No such property: ContentType for class: org.mule.transport.file.ReceiverFileInputStream (javax.script.ScriptException)
org.codehaus.groovy.jsr223.GroovyScriptEngineImpl:323 (http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/script/ScriptException.html)
现在有没有更好的方法来检查文件入站端点后的内容类型???请提出一些更好的方法...请注意我不想使用is-json-filter
,因为我想控制其他条件并在日志中显示消息...