我们使用 Axis 来调用 Sun JDK 中的 Web 服务,但是当我们更改为 IBM JDK 时,我们会遇到 XML 库错误。

Sun 的 JDK 将 XML 组件的实现重新打包为 com.sun.*,并且可以使用工厂机制轻松替换它们。 IBM 的 JDK 不会发生这种情况,因此不可能用同一类的较新版本替换实现(JDK 类在应用程序类之前加载)。

一种解决方案是使用 -Xbootclasspath/p: 覆盖 JDK 类,但是是否有一种“标准”方法来告诉 IBM 的 JVM 加载较新版本的 XML 库而不是默认版本?

请您参考如下方法:

选择使用哪个版本的 XML 组件的最简单方法是通过 JAXP/TrAX API(可移植工厂机制)访问它们。例如,如果您使用 javax.xml.parsers 包来访问解析器,则可以通过设置系统属性、配置文件或服务 API 来控制加载哪个实际解析器工厂类。

我还注意到,与 IBM 的 JDK 相比,Sun 的 JDK 在 XML 支持方面一直处于落后状态。几乎总是需要将 Sun 软件包替换为 Apache 的更新版本。对于 IBM 处理器来说,这种情况的必要性要低得多。 IBM 在积极维护其代码方面做得更好。 (事实上​​,IBM 多年来一直是 Apache XML 解析器和 XSLT/XPath 处理器的主要贡献者。)

您还没有告诉我们错误是什么,或者您正在使用哪个版本的 IBM JDK,但我承认,我的严重偏见猜测是 IBM 代码可能更正确,而不是更不正确。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!