Spring Webservicetemplate 连接重置错误

3


我们正在使用Spring 4WebServiceTemplate与一个WCF网络服务进行联系。我们向这个网络服务发送的其中一个项目是图像(JPEG格式)。对于一些稍微大一点的图像(约22KB),我们会遇到以下错误:

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

如果我们根本不发送图片,就不会出现这个错误。因此,很明显这与有效负载大小有关,因为使用较小尺寸的图片或没有图片时就不会出现问题。22KB的大小大约是其他调用期间图像大小的两倍。
我们已经尝试切换从SaajSoapMessageFactoryAxiomSoapMessageFactory,正如此处所建议的,但结果相同。
class <className> extends WebServiceGatewaySupport {
      <className>() {
          super(new AxiomSoapMessageFactory());
          AxiomSoapMessageFactory messageFactory =
            (AxiomSoapMessageFactory) getMessageFactory();
          messageFactory.setPayloadCaching(false);
          ...
      }
      ...
}

有人知道如何修复这个问题吗?
1个回答

1
实际问题并不是关于SaajSoapMessageFactory或AxiomSoapMessageFactory。该应用程序试图在调用Web服务时发送Base64编码的图像字符串,在某些情况下,这个编码字符串太长了(尽管整个消息大小还不足以使用AxiomSoapMessageFactory)。
当我们在WebService配置中将“Text”绑定替换为“Mtom”并在客户端代码中添加marshaller.setMtomEnabled(true)后,问题得到解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接