我正在開發一個mule工作流來將記錄插入到數據庫中,如果記錄是已經存在併發送HTTP狀態(409-Conflict)並將其發送回客戶端。Mule異常策略定義:發現無效內容以元素'choice-exception-strategy'開頭
<when expression="#[message.inboundProperties['http.method'] == 'POST']">
<json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object" />
<set-variable variableName="id" value="#[message.payload.id]" doc:name="Save brandId"/>
<json:object-to-json-transformer doc:name="Object to JSON"/>
<db:insert config-ref="Postgres" doc:name="Configstore">
<db:parameterized-query><![CDATA[INSERT INTO messages("id", "data") VALUES (#[flowVars['id']], CAST(#[message.payload] as json))]]> </db:parameterized-query>
</db:insert>
<logger message="REST Response = #[message.payload]" level="INFO" doc:name="LOG Rest Response"></logger>
<choice-exception-strategy name="Global_Choice_Exception_Strategy" doc:name="Global Choice Exception Strategy">
<catch-exception-strategy doc:name="Catch_Exception_Strategy" when="#[exception.causedBy(org.postgresql.util.PSQLException)]">
<set-payload value="The request cannot be processed, the error is #[exception.getExceptionPayload()]"/>
<set-property propertyName="http.status" value="404"/>
<http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" method="POST" doc:name="HTTP"/>
</catch-exception-strategy>
</choice-exception-strategy>
</when>
啓動重複失敗,並在日誌中報告以下錯誤。
cvc-complex-type.2.4.a:從元素'choice-exception-strategy'開始找到無效的內容。 「{」http://www.mulesoft.org/schema/mule/core「之一:抽象消息處理器,」http://www.mulesoft.org/schema/mule/core「:抽象出站端點,」http://www.mulesoft.org/schema/mule/core「:抽象混合內容消息處理器}。 在org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(來源不明)〜[:?]
此錯誤或者彙報了選擇的異常策略和追趕異常的策略。不知道這裏什麼是無效的,或者需要定義一個自定義的消息處理器或出站端點。我正在使用mule EE-3.8.0
它應該在流動水平。在''末尾之前定義它。 ..... catch-exception-strategy> 。如果您使用的是Intellji GUI,將會丟失。 –
star