如何重新设计高负载 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/