2015-07-09 5 views
2


Мы используем Spring 4WebServiceTemplate связаться с WCF веб-службы. Одним из элементов, которые мы отправляем на эту веб-службу, являются изображения (формат JPEG). Для некоторых случаев, когда изображение немного больше (около 22kb), мы получим следующее сообщение об ошибке:Spring Webservicetemplate Подключение сброса ошибки

<pre><code>org.springframework.ws.client.WebServiceIOException: I/O error: Connection reset; nested exception is java.net.SocketException: Connection reset</pre></code> 

Если мы не отправить изображение на всех, эта ошибка не происходит. Таким образом, очевидно, что это связано с размером полезной нагрузки, потому что с изображениями меньшего размера или без изображений нет проблем. Этот 22KB примерно в два раза больше размера изображения во время других вызовов.

Мы попытались переключиться с SaajSoapMessageFactory на AxiomSoapMessageFactory как предложено here, но результат такой же.

class <className> extends WebServiceGatewaySupport { 
     <className>() { 
      super(new AxiomSoapMessageFactory()); 
      AxiomSoapMessageFactory messageFactory = 
      (AxiomSoapMessageFactory) getMessageFactory(); 
      messageFactory.setPayloadCaching(false); 
      ... 
     } 
     ... 
} 

Кто-нибудь, как это исправить?

ответ

1

Реальная проблема была не в SaajSoapMessageFactory или AxiomSoapMessageFactory. Приложение пыталось отправить строковые строки с кодировкой Base64 при вызове веб-службы, и в некоторых случаях эта закодированная строка была слишком длинной (хотя весь размер сообщения не был достаточно большим, чтобы оправдать AxiomSoapMessageFactory).

Проблема была решена, когда мы заменили ссылку «Текст» на «Mtom» в конфигурации webservice (WCF) и добавили marshaller.setMtomEnabled(true) в код клиента.

Смежные вопросы