2013-09-30 37 views
1

如何重新設計高負載REST Web服務?如何在REST Web服務中接收大型XML文件

我有一個現有的基於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服務客戶端。

我有什麼選擇?

+0

您正在使用哪種框架? – Satish

+0

Apache CXF與Spring Web Services,在Tomcat上運行 – Kunal

回答

1

String request參數更改爲Reader request。根據JAX-RS規範的4.2.4節,它也可以是File request。還有一些其他有效的類型,你可能會或可能不會找到有用的:

  • 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)。
+0

Reader是一個不錯的選擇,也是一個理想的解決方案。當然,現在我的下游POJO服務也使用了Strings,需要改變。 – Kunal

相關問題