Содержимое HTTP-ответа - это сообщение soap с содержимым 100 МБ.
messageFactory.createMessage (null, responseinputstream) занимает от 3 до 4 минут, а responseSoapMessage.getSOAPBody () занимает еще 4 минуты или больше. После этого, поскольку я нахожусь на сервере приложений WildFly, время транзакции истекает.
MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
...
HttpEntity responseHttpEntity = httpResponse.getEntity();
...
InputStream responseContentStream = responseHttpEntity.getContent();
SOAPMessage responseSoapMessage = messageFactory.createMessage(null, responseContentStream);
SOAPBody responseSoapBody = responseSoapMessage.getSOAPBody();
При создании SOAPMessage из InputStream через MessageFactory, мне интересно, почему это занимает так много времени.
Может это из-за какой-то проблемы с JAR? У меня в игре два JARS: axis-1.4.jar и saaj-impl-1.3.jar
Однако во время отладки я обнаружил, что используемый класс - SOAPMessageFactory1_2Impl из saaj-impl-1.3.jar.
Тем не менее, я не мог понять, почему требуется больше 5 минут, чтобы пересечь эти две строки кода.
Это SOAP XML в ответе InputStream.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ReceiveDocumentResponse xmlns="https://NAMESPACEURL">
<ReceiveDocumentResult>
<base64Binary>HERE IS THE JPG IMAGE CONTENT OF SIZE 100 MB OR MORE</base64Binary>
</ReceiveDocumentResult>
</ReceiveDocumentResponse>
</soap:Body>
</soap:Envelope>
Пожалуйста, обратите внимание , что этот метод вызывает достаточно хорошую (быструю) работу для меньшего содержания чем 30 МБ.
Любые советы go по устранению неполадок или любые советы go по альтернативному подходу к синтаксическому анализу содержимого очень приветствуются