java - 如何在 REST Web 服务中接收大型 XML 文件

标签 java web-services rest memory load

如何重新设计高负载 REST Web 服务?

我有一个现有的基于 Java 的 REST Web 服务,它以字符串形式接收 XML 文件。有多个客户端正在向此服务发送 XML 文件。事实证明,以字符串形式发送到此服务的大型 XML 文件(>100 MB)会导致 Web 服务变慢、卡住和崩溃(内存不足)。

如何修改 Web 服务以接收和处理大型 XML 数据,而不影响现有客户端?

这就是现有的 Web 服务签名:

@POST
@Path("/acceptMessage")
public String acceptMessage(String request) throws Exception;

“字符串请求”导致负载/性能问题。我对 Web 服务签名所做的任何更改都不会影响现有的 Web 服务客户端。

我有什么选择?

最佳答案

字符串请求参数更改为读取器请求。根据 JAX-RS 规范第 4.2.4 节,它也可以是文件请求。还有许多其他有效类型,您可能觉得有用,也可能没用:

  • javax.activation.DataSource 所有媒体类型 (/)。
  • javax.xml.transform.Source XML 类型(text/xml、application/xml 和 application/*+xml)。
  • javax.xml.bind.JAXBElement 和应用程序提供的 JAXB 类 XML 媒体类型(text/xml、application/xml 和 application/*+xml)。

关于java - 如何在 REST Web 服务中接收大型 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19090991/

相关文章:

java - 如何监控java应用程序的堆栈使用情况

java - Android设备管理AndroidManifest.xml,为什么接收者名称中有问号?

java - 从 Web 服务客户端设置 HTTP Servlet Cookie

javascript - 并发 API 请求的数据库访问

rest - 使用Grails中的Rest查找特定ID

java - 在 java 1.8 中将 Map<String, List<Object>> 转换为 Map<String, List<String>>

java - 在java中生成一定范围内的随机整数以满足百分位数

c# - System.Web.Services.Protocols.SoapException : Server did not recognize the value of HTTP Header SOAPAction:

java - Jax ws- xs :date format validation

REST - 用于检查授权的动词