Springws и MTOM клиент KO при прохождении через балансировщик - PullRequest
0 голосов
/ 24 марта 2020

У меня проблема с клиентом, который отправляет двоичный документ pdf с включенным MTOM в soapservice. Сервис правильно выставлен и обслуживается. Когда я вызываю конечную точку сервера, который предоставляет услугу, все идет нормально, когда я вызываю ту же услугу через «шлюз службы», она отправляет обратно «неверный запрос» после получения всего запроса.

>Accept-Encoding: gzip
>Content-Type: multipart/related;type="application/xop+xml";start-info="text/xml"
>Content-Disposition: attachment
>Accept: text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
>SOAPAction: "http://ws.documents...."
>Content-Type: Multipart/Related; boundary="----=_Part_1_1067527082.1584978884916"; >type="application/xop+xml"; start-info="text/xml"
>Cache-Control: no-cache
>Pragma: no-cache
>User-Agent: Java/1.8.0_222
>Host: service.xx.yy:8080
>Connection: keep-alive
>Content-Length: 105614


....
> This is the trace of the service gateway:
> v^[¹‹‘HTTP/1.1 400 [ISC.0064.9101] Bad Request Connection: close
> Content-Length: 0

Тот же сервисный шлюз является проходным для всех других сервисов без mtom, и все идет нормально. Странная вещь в том, что когда я звоню с soapui с вложением и включенным MTOM через сервисный шлюз, звонок заканчивается правильно. Это ядро ​​кода:

response = (JAXBElement<CreateDocumentsResponseType>) wst.marshalSendAndReceive(uri,request);
  1. Где wst - это обычный экземпляр WebServiceTemplate с включенным MTOM
  2. запрос конверт распакован с документом, уже упакованным обработчиком данных.

Перед отправкой сообщения я сделал перехватчик, чтобы установить заголовок запроса с пользовательской аутентификацией.

1 Ответ

0 голосов
/ 02 апреля 2020

Балансировщик сделал «предпечатную проверку», которую шаблон веб-сервиса некорректно обрабатывает. Создан пользовательский перехватчик для обработки этого.

...