Я запускаю клиентский веб-сервис на основе CXF (использует веб-службу со стороны .net). Все работает отлично, кроме передачи файла PDF.Apache CXF/MTOM развращает файл при запуске через Weblogic 12c
Если я запускаю ту же конфигурацию через junit (подпружиненный контекст и cxf), либо я использую один и тот же веб-сервис с помощью soap-ui, файл pdf переносится правильно.
Как только я запустил его через Weblogic 12c (12.1.3), двоичное содержимое pdf будет повреждено. Вот пример:
* Good File (transferred via CXF standalone/junit) *
%PDF-1.3
1 0 obj
[/PDF /Text /ImageB /ImageC /ImageI]
endobj
9 0 obj
<< /Length 1659 /Filter /FlateDecode >> stream
xœXÛnÛ8}_
* Bad File (transferred via WLS/CXF) *
%PDF-1.3
1 0 obj
[/PDF /Text /ImageB /ImageC /ImageI]
endobj
9 0 obj
<< /Length 1659 /Filter /FlateDecode >> stream
xœ�XÛnÛ8}_
Вы можете увидеть в разделе потока, получая дополнительные байты там (это только начало файла ... дополнительный байт показывает много раз после этого). Запуск этого окна или Linux закончится поврежденной передачей. Java 8. CXF 2.7 и 3.1.
Я все еще изучаю проблему, но любые идеи с верхней части головы будут оценены.
- Это кодировка, которая должна быть установлена / снята где-нибудь?
- Являются ли некоторые предпочтительные библиотеки в веб-модуле, которые следует использовать?
- Возможно, пропал только патч для сервера приложений? -
...
ли версия WLS/CXF и CXF автономного/JUnit то же самого? – COLINHY
Да. Последний протестированный CXF 3.1.0. – Dan
Оказывается, что один из (пользовательских) входящих перехватчиков сообщений кодирует все сообщение в UTF-8. Включая бинарный контент приложения mtom.Этот перехватчик действует как регистратор входящих сообщений как: ** Client.clientProxy (port) .getInInteceptors(). AddInterger(): Это работало совершенно нормально, пока мы не начали получать сообщения saaj. Достаточно легко перекодировать обработчик in-logging. Однако остается загадкой, почему это не повлияло на сообщение, когда оно было получено за пределами контейнера Weblogic. Никакой ключ к этому. – Dan