2015-04-10 3 views
0

Если HTTP-исходящий шлюз вызывает HTTPstatuscodeexception ... он будет пузыриться до того места, где я вызываю метод шлюза. Я не могу показаться, чтобы поймать исключение тамhttp outbound gateway httpstatuscodeexception

У меня есть ниже CONFIG

<int:channel id="responseChannel" /> 

<int:gateway id="someGateway" service-interface="someinterface"  default-request-channel="requestChannel"  default-reply-channel="responseChannel"  default-reply-timeout="${reply.timeout}"> 
<int:method name ="somemethod"> 

</int:gateway> 

<int:chain id="some-gateway-chain" input-channel="requestChannel" output- channel="responseChannel"> 
<int:object-to-json-transformer /> 
<int-http:outbound-gateway  url-expression="some url"   http-method="POST"   expected-response-type-expression="some.RESPONSE_TYPE"  request-factory="somehttpClientFactory" reply-timeout="${reply.timeout}"/> 
</int:chain> 

EDIT: ----------------------- --------------------------------

я могу сделать ниже

<int:service-activator input-channel="errorChannel" output-channel="some other channel"> 

<int-groovy:script> how do i check if the payload.message.cause is a httpstatuscodeexception and then throw it from here 
</int-groovy:script> </int:service-activator> 
+0

Другой вопрос, у меня есть, если шлюз и шлюз HTTP настраиваются с погрешностью обработчика. есть способ допустить, чтобы httpstatuscodeexception или restclientexception пузырились вверх – Zak

ответ

1

Добавить error-channel до <int:gateway/> и обрабатывать исключение. Сообщение на канале ошибки является ErrorMessage с полезной нагрузкой a MessagingException со свойствами failedMessage и cause.

Ошибка потока может либо вызвать другое исключение, либо вернуть другой результат.

В ответ на ваш EDIT:

эээ ...

if (payload.cause instanceof ...) { 
    throw payload.cause 
} 
someOtherResult 
+0

1) есть ли какое-либо обходное решение для подключения шлюза к двум каналам ошибок. – Zak

+0

Пожалуйста, не помещайте код в комментарии - это нечитаемо - отредактируйте ваш вопрос. Я не уверен, что вы подразумеваете под «двумя каналами ошибок». –

+0

Отредактированный вопрос. У меня есть глобальная ошибка, которую мы уже настроили, которая примет ошибку и преобразует ее и помещает в quueue. Мне было интересно, могу ли я взять тот же Errormessage и отправить его на другой errorchannel. – Zak

Смежные вопросы