我们致力于一个内部企业系统,该系统将Web前端作为其接口之一。
前端(Java + Tomcat + Apache)通过SOAP Web服务与后端(使用类似COBOL的语言编写的专有系统)进行通信。
因此,我们来回传递大型XML文件。
我们认为,由于XML传输和解析的大量开销,这种架构对性能有重大影响。不幸的是,我们坚持使用这种架构。
我们如何才能使这种XML设置更有效?
非常感谢任何提示或技巧。
答案 0 :(得分:8)
在负载下对系统进行适当的分析 - 这里没有足够的信息。
你需要弄清楚时间在哪里以及瓶颈是什么(网络带宽,CPU,内存等......)。只有这样你才知道该怎么做 - 许多优化实际上只是权衡(例如缓存是牺牲内存以提高其他地方的性能)
我唯一能想到的就是确保你使用HTTP压缩和Web服务 - 通常可以将XML压缩到正常大小的一小部分,但这只会对你有帮助CPU周期备用。
答案 1 :(得分:3)
如果两端都支持,你可以压缩传输,你可以尝试不同的解析器,但是因为你说SOAP没有太多选择。无论如何,SOAP还是臃肿了。
答案 2 :(得分:3)
如果您认为这是由于带宽问题,我将在这里提出建议GZIP Compression。 (你提到过XML Transportation)是的,这会增加你的CPU时间,但它可能会加快传输速度。
Here's the first Google hit on GZIP Compression作为起点。它描述了它如何在Apache上运行。
答案 3 :(得分:2)
首先确保您的解析方法对大型文档有效。 StAX是解析大型文档的好方法。
此外,您可以查看binary XML方法。这些提供了更有效的传输,但也尝试帮助解析。
答案 4 :(得分:1)
尝试StAX。它执行well并且语法简洁明了。
答案 5 :(得分:1)
检查您的应用程序是否将整个XML文档作为DOM树读入。这些可能非常大,而且经常可以使用简单的SAX事件检查或基于SAX的XSLT程序(可以编译以便快速处理)。
这在Sun Java 6 JDK中像visualvm这样的分析器中非常明显