Я использую Apache Camel CXF для интеграции SOAP WebService. Все работает нормально, но я заметил, что мой ответ возвращается как HTTP 202 вместо 200. Меня это беспокоит, потому что я знаю многих людей с жестким кодом, например if(httpCode == 200) {...}
, и это может сломать текущую услугу.Apache Camel CXF отклик 202 вместо 200
Я попытался использовать разные перехватчики, чтобы переопределить HTTP-код от 202 до 200, но не повезло. Кроме того, 202 означает Accepted
, что означает, что запрос находится в процессе, но не завершен. 200 означает OK
, что означает, что процесс завершен. Означает ли это, что я делаю что-то неправильно в своем маршруте?
Каков правильный способ его устранения? Перехватчик? Настройка заголовков верблюдов? Что-то делать, чтобы сказать, что оно завершено?
Я использую Apache Camel 2.12.1 и режим PAYLOAD.
EDIT: Кажется, что-то связано с конечной точкой OneWay. Есть ли способ деактивировать это?
EDIT2: После нескольких часов работы, я думаю, что у меня есть первопричина. Мой WSDL не определяет выход для этой конкретной операции. Я не могу изменить WSDL. Тем не менее, я считаю, что, когда CXF использует WSDL для создания конечной точки, он автоматически предполагает, что это конечная точка OneWay, поскольку нет выхода. Это означает, что ответ отправляется обратно, как только мы получаем запрос с кодом 202. Кроме того, я считаю, что по этой причине нет цепи OutInteceptor. Лично я считаю, что это нормально отправить назад 202, но это требование к сервису, чтобы отправить обратно 200. Есть ли какая-либо конфигурация, которую я изменяю в CXF, чтобы установить это в режиме конечной точки OneWay?
Односторонние операции имеют смысл возвратить 202 [хотя возможно и 200] (http://docs.oracle.com/cd/B40099_02/books/EAI2/EAI2_WebServices6.html). [CXF поддерживает перехватчик, который отправляет 202 сразу после фазы чтения] (http://cxf.547215.n5.nabble.com/OneWay-interpretation-and-HTTP-binding-td5711719.html) - вы, вероятно, можете перехватить 202 [похоже на этот подход] (http://stackoverflow.com/questions/7575970/how-can-i-prevent-apache-cxf-from-sending-a-response-message) или [это предложение здесь] (http://stackoverflow.com/questions/18976369/intercept-http-response-with-cxf) –
Спасибо за ваш комментарий. Поэтому я пробовал здесь разные возможности, но не повезло. Я собираюсь отредактировать мой пост, чтобы предоставить дополнительную информацию. – hveiga