gpt4 book ai didi

java - JBoss 7 类加载奇迹

转载 作者:行者123 更新时间:2023-11-30 11:23:43 25 4
gpt4 key购买 nike

我在使用 JBoss 7 下捆绑为 WAR 的 Web 服务/OSGi 应用程序时遇到问题。

我的问题是:

  1. 默认情况下应用程序可以使用哪些模块?我知道如何添加依赖项以及如何排除依赖项。但是我怎么知道默认值呢?我认为它们被称为“全局模块”。
  2. 默认为应用程序提供了哪些 JDK 包?全部?一些?我该如何调查?
  3. 具体错误如下。一些引导代码调用 javax.xml.parsers.DocumentBuilderFactory.newInstance()。这会导致异常 javax.xml.parsers.FactoryConfigurationError: Provider __redirected.__DocumentBuilderFactory not found。似乎在 JBoss 中,系统属性 javax.xml.parsers.DocumentBuilderFactory 指向上述奇怪的实现 __redirected.__DocumentBuilderFactory

感谢您的帮助!

最佳答案

回答我自己的问题:

  1. 隐式添加的模块在此处的 JBoss 文档中有详细描述:https://docs.jboss.org/author/display/AS7/Implicit+module+dependencies+for+deployments .正如另一个答案已经指出的那样,可以通过在 jboss-deployment-structure.xml 中声明排除来抑制依赖关系。

  2. 见上面的回答

  3. 部署到 JBoss 的应用程序是一个 WAR 文件,它本身引导一个 OSGi 容器。在容器内部,Gemini Blueprint 用于管理 OSGi 服务依赖项。 Gemini Blueprint 搜索 Spring Application Context 文件,如果找到则为 bundle 启动 Spring 上下文。解析 XML 文件失败,出现上述异常。原因是包 __redirected 对 bundle 不可用。我通过引导委托(delegate)来管理它。

    # In JBoss some JDK classes like "javax.xml.parsers.DocumentBuilderFactory" are redirected to a JBoss package "__redirected" via a system property
    # The corresponding implementation "__redirected/__DocumentBuilderFactory" is made accessible from all bundles via "boot delegation"
    org.osgi.framework.bootdelegation = __redirected
    # Sets the parent classloader to the one that loads the framework. It must have access to the bootdelegation pakages, e. g. "__redirected"
    org.osgi.framework.bundle.parent = framework

关于java - JBoss 7 类加载奇迹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21042633/

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