Проблемы с производительностью из-за разрывов строк в данных base64 в Spring-ws и Castor

У меня есть сервис SOAP, реализованный с использованием Spring-WS 2.2.0 с маршаллером Castor 1.3.3. В файле WSDL есть элемент base64Binary:

<xs:element type="xs:base64Binary" xmlns:xs="http://www.w3.org/2001/XMLSchema" maxOccurs="1" minOccurs="1" name="bytes"/>

С клиентом CXF байты кодируются в одну строку:

JVBERi0xLjQKJcfsj6IKNzkxIDAgb2JqCjw8L0xpbmVhcml6ZWQgMS9MIDEwMDQ1NzM1L0hbIDEwMjcxMyA0MDBdL08gNzkzL0UgMTAyNzEzL04...

С файлом 9 Мб запрос обрабатывается примерно за 40 секунд.

С помощью клиента SAP байты кодируются с помощью 76 блоков символов:

JVBERi0xLjMNCiXi48/TDQolUlNUWFBERjMgUGFyYW1ldGVyczoNCjIgMCBvYmoNCjw8DQovRmls
dGVyIDMgMCBSDQovTGVuZ3RoIDQgMCBSDQo+Pg0Kc3RyZWFtDQp4nB1Su60YMQzjKByFo2gUjcIi
yBysM0MKjfD6FBfJBg5nCLL4E4DGff1+/W7Z8ze///yIKKIJEyGGgEBBQgktWIgwAgosqFCFLriQ
...

И каждый LF кодируется с правильной сущностью XML &#xA;

JVBERi0xLjMNCiXi48/TDQolUlNUWFBERjMgUGFyYW1ldGVyczoNCjIgMCBvYmoNCjw8DQovRmls&#xA;dGVyIDMgMCBSDQovTGVuZ3RoIDQgMCBSDQo+Pg0Kc3RyZWFtDQp4nB1Su60YMQzjKByFo2gUjcIi&#xA;yBysM0MKjfD6FBfJBg5nCLL4E4DGff1+/W7Z8ze///yIKKIJEyGGgEBBQgktWIgwAgosqFCFLriQ&#xA;

С файлом 3Mb запрос обрабатывается примерно за 2 минуты и 40 секунд при скорости процессора 100%.

Может ли проблема производительности быть связана с разрывом строк в потоке base64? Может быть, Кастор, Spring-W или JDK?

Любой совет?

Спасибо

0 ответов

Другие вопросы по тегам