我们有一个带有单例 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 模块类加载有什么误解吗?