如何重新设计高负载的REST web服务?
我有一个现有的基于Java的REST web服务,它以字符串的形式接收XML文件。有几个客户端正在向此服务发送XML文件。结果显示,作为String发送到此服务的大型XML文件(>100 MB)导致web服务减慢、冻结和崩溃(OutOfMemory)。
如何在不影响现有客户端的情况下,修改web服务以接收和处理大型XML数据?
这就是现有的web服务签名:
@POST
@Path("/acceptMessage")
public String acceptMessage(String request) throws Exception;
“字符串请求”导致加载/性能问题。我对web服务签名所做的任何更改都不能影响现有的web服务客户端。
我有什么选择?
发布于 2013-09-30 02:33:46
将String request
参数更改为Reader request
。根据JAX规范的4.2.4节,它也可以是File request
。还有一些其他有效的类型,您可能认为有用,也可能不认为有用:
javax.activation.DataSource
所有媒体类型(/)。javax.xml.transform.Source
/xml、application/xml和application/*+xml)。javax.xml.bind.JAXBElement
和应用程序提供的JAXB类XML媒体类型(text/xml、application/xml和application/*+xml)。https://stackoverflow.com/questions/19090991
复制