【问题标题】:Websphere Liberty seems to override System Property TransformerFactory set via jvm.optionsWebsphere Liberty 似乎覆盖了通过 jvm.options 设置的 System Property TransformerFactory
【发布时间】:2016-11-02 10:46:10
【问题描述】:

我正在尝试将使用 camel/cxf(提供一些包含转换的 Web 服务)的旧版应用程序迁移到 Websphere Liberty 16.0.0.03 (IBM JRE 1.8)。测试失败,因为该应用程序使用了扩展功能。我尝试按照here 的描述禁用安全处理。

此更改无效。这就是为什么我尝试通过在 jvm.options 配置文件中设置系统属性“javax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl”来全局切换到撒克逊实现。再次 - 这不起作用。

在调试时,我可以看到 com.ibm.ws.webcontainer.osgi.mbeans.PluginGenerator$2 在服务器启动期间使用 com.ibm.xtq.xslt.jaxp.compiler.TransformerFactoryImpl 覆盖属性。我可以在堆栈中看到一个似乎触发更改的方法“PluginGenerator.revertTransformerFactoryIfNeccessary”。之后所有 FactoryFinder.find() 将返回非撒克逊实现。

谁能建议如何成功禁用安全处理

一种成功设置自定义 TransformerFactory 的方法?

顺便说一句:在我看来这 2 个是错误 - 我是否将这些作为常规 PMR 报告?

EDIT: possible workaround

作为有用建议的结果,我添加了一个“@WebListener”,它将在构造函数中设置系统属性(在 contextInitialized 中设置它为时已晚,因为样式表似乎是在应用程序启动期间编译的,因此处理测试失败)。我将这个“patch-jar”与旧版应用程序捆绑在一起。

【问题讨论】:

    标签: xslt websphere-liberty jaxp


    【解决方案1】:

    只有在使用 IBM JDK 时,Liberty Web 容器插件生成器才会覆盖 xml 转换器工厂。

    当 Web 容器使用 IBM JDK 执行插件生成时,它将切换到备用转换器工厂,然后重置为 IBM JDK 默认值 com.ibm.xtq.xslt.jaxp.compiler.TransformerFactoryImpl

    我认为在这里开设 PMR 是值得的。 PluginGenerator 不应假定它以默认的 xml 转换器工厂开始,而应保存 javax.xml.transform.TransformerFactory 的值,然后在插件生成完成后恢复它。

    临时解决方法:
    由于PluginGenerator 仅在您在 IBM JDK 上运行时交换 XML 转换器工厂,因此您可以更改为备用 JDK,直到您的 PMR 得到解决。

    【讨论】:

    • 嗨 Aguibert,感谢您的回答 - 有没有办法禁用 PluginGenerator(因为我不需要它在 openshift 中运行)?
    • 不,不能禁用插件生成。然而,新的 plugin-cfg.xml 仅在 Web 容器的状态发生变化(即添加或删除应用程序,或 server.xml 配置更改)时生成。因此,如果您不触发 plugin-cfg.xml 生成,则可以解决此问题。见:ibm.com/support/knowledgecenter/SSD28V_9.0.0/…
    • 感谢您的帮助和有用的建议!
    • 如果存在应用程序,在服务器启动期间也会生成一个 new-plugin-cfg.xml 文件,因此实际上不可能不触发生成。
    【解决方案2】:

    我同意这是一个错误。报告问题的官方途径是 PMR,但这里有足够的内容让我们了解问题并通过我们的 beta 程序修复它。如果您想在产品的已发布版本上获得 iFix(而不是等待它通过 beta 程序发布),那么您需要提高 PMR。

    【讨论】:

      猜你喜欢
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多