1

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

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

如何在不影响现有客户端的情况下修改 Web 服务以接收和处理大型 XML 数据?

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

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

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

我有哪些选择?

4

1 回答 1

1

String request将参数更改为Reader request。根据 JAX-RS 规范的第 4.2.4 节,它也可以是File request. 还有许多其他有效类型可能有用,也可能没用:

  • javax.activation.DataSource所有媒体类型 ( / )。
  • javax.xml.transform.SourceXML 类型(text/xml、application/xml 和 application/*+xml)。
  • javax.xml.bind.JAXBElement和应用程序提供的 JAXB 类 XML 媒体类型(text/xml、application/xml 和 application/*+xml)。
于 2013-09-30T10:33:46.963 回答