【发布时间】:2012-07-10 20:25:37
【问题描述】:
如果我在 Mule 中使用自定义 Java 转换器代替 XSLT 转换器,是否会提高性能?
我有一个 cxf 代理服务和代理客户端模式,并且我的转换器用于更改有效负载,使其成为后续 SOAP Web 服务调用的有效输入。
【问题讨论】:
-
你将如何用 Java 编写你的 XML 转换器?使用 DOM、SAX、Stax 或...? Mule XSL-T 转换器在幕后汇集,而您的 Java 转换器可能不会……所以整体性能还取决于您的应用程序的并发程度。很难预先说清楚,最好的方法可能是对 XSL-T 进行负载测试,并在证明它不够快/不够并发的情况下考虑使用您自己的变压器。
-
我打算使用 SAX,但是,Mule 本身使用 SAX 来解析我编写的转换器。在这个过程中,骡子有什么额外的事情吗?当我转向使用 Java 转换器时,我想确保不会错过使用 XSLT 转换器的一些优势。关于池化,这里到底池化了什么? XSLT 是编译成 Java 转换器并被池化,还是 XSLT 文件本身被池化?如果文件被合并,它可能没有多大意义。我打算用 LoadUI 检查性能。谢谢。你一如既往地救我。 :)
-
转换器在场景后面保留了一个
javax.xml.transform.Transformer对象池,因此 XSL-T 文件以这种方式预加载和缓存。我认为使用 XSL-T 比基于 Java 的临时转换器更易于维护。我的建议是:尝试 XSL-T,并且仅在您证明它不能满足您的要求时才使用自定义代码。
标签: xml performance esb mule