gpt4 book ai didi

java - Xalan DTMManager.newInstance 性能问题

转载 作者:行者123 更新时间:2023-12-01 05:21:21 29 4
gpt4 key购买 nike

我们继承了一个应用程序(基于 Java,在 WebLogic 10.3.5 上运行),该应用程序广泛使用 JSTL XML 标记,特别是 XPath 选择器。由于这些标记的实现以及 DTMManager 类如何首先解析然后通过 DTMManager.newInstance 方法实例化,我们很快就遇到了一些性能问题。

DTMManager 类名查找问题之前已出现 documented并通过设置 com.sun.org.apache.xml.dtm.DTMManager 系统属性解决。

但是,一旦找到类名,com.sun.org.apache.xml.internal.dtm.ObjectFactory.findProviderClass方法就会要求(非空)类加载器加载类定义并且它从不缓存结果!在 WebLogic 环境中,此操作非常昂贵,并且占用了我们响应时间的很大一部分。

类定义从不被缓存是否有原因?有没有办法避免每次都加载类定义?

非常感谢。

更新对于com.sun.org.apache.xerces.internal.impl.dv.DTDDVFactory类可以观察到类似的行为 - ClassLoader重新加载类定义每次调用 DTDDVFactory.newInstance 时。

最佳答案

除了避免广泛使用这些标签之外,似乎对此无能为力。我们重构了此代码部分:

  • XML 解析现在由自定义标记执行,该标记使用 JAXB 填充从 XSD 生成的对象图,并且
  • JSP 现在使用标准符号来查询对象图

只是表明在 JSP 中进行 XML 解析并不是一个特别好的主意...

关于java - Xalan DTMManager.newInstance 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10366695/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com