3

我们有一个带有单例 ejb 的 ear 应用程序,它设置 JAXP 配置。我们通过代码设置 TransformerFactory 系统属性,使用 System.setProperty():

System.setProperty("javax.xml.transform.TransformerFactory", "org.apache.xalan.processor.TransformerFactoryImpl"); 

jboss-deployment-structure.xml 文件内容如下:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
    <deployment>    
        <dependencies>
            <module name="org.apache.xalan" slot="main" export="true"/>
            <module name="org.apache.xerces" slot="main" export="true" />               
        </dependencies>
    </deployment>
</jboss-deployment-structure>

我们得到了例外:

Exception in thread "main" javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found 

如果我使用以下代码行而不是设置系统属性,它可以工作。

TransformerFactory.newInstance("org.apache.xalan.processor.TransformerFactoryImpl", TransformerFactory.class.getClassLoader()); 

我想知道为什么它不起作用。我对 JBoss 模块类加载有什么误解吗?

4

0 回答 0