【问题标题】:JBoss/Spring-WS times out on processing very large SOAP responseJBoss/Spring-WS 在处理非常大的 SOAP 响应时超时
【发布时间】:2014-10-30 04:31:00
【问题描述】:

我们有一个在 JBoss EAP 6.0 上运行的 J2EE 应用程序,它使用来自第三方应用程序的 SOAP Web 服务。我们使用 Spring-WS 发送请求并接收响应。

对于正常和大尺寸响应,该应用程序运行良好。但是,在调用特定 Web 服务(用于报告目的)时,第三方 Web 服务发送了大约 250 MB 的响应,Java 应用程序无法处理它。事务超时并引发超时错误

下面的异常跟踪:

org.springframework.ws.client.WebServiceIOException: I/O error: Read timed out; nested exception is java.net.SocketTimeoutException: Read timed out
org.springframework.ws.client.WebServiceIOException: I/O error: Read timed out; nested exception is java.net.SocketTimeoutException: Read timed out
        at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:502)
        at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:343)
        at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:337)
        at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:329)

但是,当在离线模式下访问响应 XML 时,应用程序能够在一两分钟内处理该文件。

所以,这是我在同步(即实时)处理 SOAP 响应时的问题:

  1. SOAP 响应的长度是否有任何限制? 由应用层(尤其是 JBoss EAP 6.0)处理 我们的案例

  2. Spring-WS 是否对 可以处理的响应大小?

【问题讨论】:

  • 您应该修改您的问题以包含有关“无法处理它”的意思的更多信息。你遇到了什么错误?

标签: xml web-services soap spring-ws jboss6.x


【解决方案1】:

恐怕我无法回答问题#1,但我可以尝试回答#2:Spring-WS 对XML 消息大小没有任何限制。但是,在内存中加载非常大的 SOAP 消息可能会出现问题,当您使用 SaajSoapMessageFactory(默认值)时会发生这种情况。相反,请切换到 AxiomSoapMessageFactory,并按照该页面上的说明关闭有效负载缓存。这样,整个 SOAP 消息就不会加载到内存中。

也就是说,您似乎遇到了读取超时而不是内存不足错误。您可能想要增加超时。最简单的方法是切换到HttpComponentsMessageSender 并在其上配置readTimeout 属性。

【讨论】:

  • 感谢 Arjen 的快速回复。
  • 上次我的评论似乎只发送了一部分。我有你建议的相同配置。即我使用 AxiomSoapMessageFactory 并将有效负载缓存设置为 false。对于超时,我使用 CommonsHttpMessageSender(deprecated) 而不是 HttpComponentsMessageSender 并且已设置 SoTimeOut。但是,我们需要处理大于 250 MB 的响应(我们今天有处理 650 MB 响应的请求)。增加读取超时后,我们没有遇到超时问题,但是,该过程在没有完成的情况下继续进行。使用离线文件的批处理模式会更好吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多