Spring-ws + axis
От: sa25  
Дата: 18.08.15 13:27
Оценка:
Добрый день.
Имеется SOAP веб-сервис, написанный на Spring + Spring-WS.
В качестве реализации сообщений используется SAAJ.
Столкнулись с проблемой, что большие запросы (сообщение с base64 вложением порядка 30 МБ и более) обрабатываются ну ОЧЕНЬ долго, что приводит к подвисанию всего сервиса. Смотрел в дебагере, "умирает" в конструкторе SaajSoapMessage.
Соответственно примерных варианта два:
1) Прикрутить MTOM, однако практически ничего цельного по теме Spring-ws + MTOM не нашел, и в офф. доках тоже
2) Заменить Saaj на Axiom — согласно офф. док. подменил MessageFactory, однако при формировании ответа столкнулся с двумя проблемами:
2.1) SOAPMessage soapMessage = ((AxiomSoapMessage)message).getAxiomMessage();
StringWriter stringWriter = new StringWriter();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(soapMessage.getSAXSource(true), new StreamResult(stringWriter));
return stringWriter.toString();
На предпоследней строке падает с ошибкой org.apache.axiom.om.OMException: Element prefix from data source is 'ns5', not the expected '' (погуглив попал на багтрекер Axis, где написано ,что это якобы баг спринги...)
2.2) На выходе в SoapUI выводит вот такое:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
SOAPAction: ""
Accept: text/xml
Content-Type: text/xml;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 18 Aug 2015 11:28:29 GMT

<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header/><soapenv:Body

а куда остальная часть ответа делась? или это SoapUI так обрабатывает криво?

Подскажите пож-та, как решить проблему и куда лучше двигаться (может, например, вообще заменить Spring-WS на JAX-WS) ...
spring-ws saaj axiom jax-ws
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.