java - Spring Webservicetemplate连接重置错误

标签 java soap spring-ws axiom


我们正在使用 Spring 4 WebServiceTemplate 来联系 WCF 网络服务。我们发送到此 Web 服务的项目之一是图像(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 大约是其他调用期间图像大小的两倍。

我们已按照建议尝试从 SaajSoapMessageFactory 切换到 AxiomSoapMessageFactory here , 但结果是一样的。

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

有人知道如何解决这个问题吗?

最佳答案

真正的问题不在于 SaajSoapMessageFactory 或 AxiomSoapMessageFactory。应用程序试图在对 Web 服务的调用中发送 Base64 编码的图像字符串,在少数情况下此编码字符串太长(尽管整个消息大小不足以保证 AxiomSoapMessageFactory)。

当我们在 Web 服务配置 (WCF) 中将“Text”绑定(bind)替换为“Mtom”并在客户端代码中添加 marshaller.setMtomEnabled(true) 时,问题得到解决。

关于java - Spring Webservicetemplate连接重置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31315237/

相关文章:

java - Spring ws 和多个模式

java - Hybris 后台 : Configuration for image in WYSIWYG doesn't work

java - 无法在 Android 模拟器上 root

Java 编码美分不工作

asp.net - 在经典 ASP 中利用 SOAP

java - Android 中的 AsyncTask、线程

java - 使用 Spring Integration 创建自定义 header

java - 使用任何详细信息进行 Spring 登录

java - 如何在 Java 中创建 Kafka ZKStringSerializer?

java - 从 Spring-WS 中的 getWebServiceTemplate().marshalSendAndReceive() 获取 byte[] 响应