У меня настроен двигатель, который проверяет xml
в данной конечной точке.
localhost/rules/my-rule
, если файл xml
соответствует, он возвращает содержимое xml
. Если нет, то выдается исключение:
GeneralException: комбинационное несоответствие
Какое исключение я объявил. Это нормальное исключение Java.
Когда я публикую ошибочный файл с помощью такого инструмента, как почтальон, я получаю следующий результат:
Can't invoke perform method on "class %rule class%" with request data of
"%data sent to endpoint%"
(reason: ch.package.GeneralException: Combination missmatch). Combination missmatch
Что было бы идеально. Однако при отправке с мулом я получаю:
Маршрут 0: Поймано исключение в стратегии исключений: HTTP POST для ресурса 'http://localhost/rules/my-rule/executions' Сбой: неверный запрос (400).
Почему я не могу просто получить сообщение об ошибке? При взгляде на журнал больше нет понимания:
org.mule.runtime.core.internal.message.ErrorBuilder $ ErrorImplementation
{описание = HTTP POST на ресурс
«http://localhost/rules/my-rule/executions'
Сбой: неверный запрос (400). подробное описание = HTTP POST на ресурсе
«http://localhost/rules/my-rule/executions'
Сбой: неверный запрос (400). ERRORTYPE = HTTP: BAD_REQUEST
вызвать = org.mule.extension.http.api.request.validator.ResponseValidatorTypedException
ErrorMessage =
org.mule.runtime.core.internal.message.DefaultMessageBuilder $ MessageImplementation
{
payload=org.mule.runtime.core.internal.streaming.bytes.ManagedCursorStreamProvider@3239ebf7
MEDIATYPE = текст / равнина; кодировка = UTF-8
attribute = org.mule.extension.http.api.HttpResponseAttributes {
Код состояния = 400 Фраза причины = Заголовки = [
тип контента = текст / обычный
Transfer-Encoding = фрагментированный
дата = ср, 03 июл 2019 07:16:19 мск
connection = close]} attributeMediaType = / } childErrors = []}]}
Моя конфигурация потока:
<scatter-gather doc:name="Distribute workload" doc:id="15151949-c61d-4629-9fd4-0a4e16d62eec" >
<route >
<!--Access to localhost/rules/my-rule>
<flow-ref doc:name="CategoryToType" doc:id="e5d39afa-3b2a-45ef-81c0-afce77a76aef" name="validateCategoryToType" />
</route>
</scatter-gather>
<error-handler>
<on-error-propagate enableNotifications="true" logException="true" doc:name="On Error Propagate" doc:id="16001c58-7609-42a6-9bfa-1cd756998f27" >
<logger level="INFO" doc:name="Logger" doc:id="8ec2af18-3e45-4d15-a373-5e9af74723d7" message='#[error]'/>
</on-error-propagate>
</error-handler>
<sub-flow name="validateCategoryToType" doc:id="da38db3a-7d51-4fd1-bd06-9e58b872d468" >
<foreach doc:name="For Each" doc:id="ff9944ba-5f87-4a5a-9392-a4b27c2f5fb0" collection="payload.Kunden" rootMessageVariableName="Kunden">
<ee:transform doc:name="Transform Message" doc:id="f33fa5ea-0b4d-4ac5-a247-90fd6978248d">
<ee:message>
<ee:set-payload>
<!--Some transformy stuff-->
</ee:set-payload>
</ee:message>
</ee:transform>
<http:request method="POST" doc:name="Request" doc:id="53df928a-4fd1-4125-88e0-be73b006beee" config-ref="HTTP_Request_configuration" path="/rules/my-rule/execution>
<http:headers><![CDATA[#[output application/java
---
{
"Content-Type" : "application/xml",
"Accept" : "application/xml"
}]]]></http:headers>
</http:request>
<logger level="INFO" doc:name="Logger" doc:id="cc02312e-b71b-461c-bba0-077bfb1e9b7e" message="#[payload]" />
</foreach>
</sub-flow>