我正在尝试对XML文件进行签名操作。在这个过程中,我使用 xmlSec 1.5 库。如果我在本地测试中运行代码,则该过程成功完成。 但是,如果我在 Jboss 7.1 的战争中部署代码,我对 xmlSec 1.5 的依赖关系会被 Jboss 的模块依赖关系"xmlsec-2.0.8.redhat-1"覆盖,并且签名过程失败。 对于客户的请愿书,我可以排除 xmlsec Jboss 模块,但我不能使用它来签名。 所以,问题是:我如何指定一个给定的库版本只在代码的一部分中使用?
在这种情况下,两个依赖项的路径是相同的:org.apache.santuario,因此,我不能使用它来指定库。
我正在尝试使用提供程序进行签名,但是,Jboss 再次覆盖了我的 xmlsec-1.5 安全提供程序,用于其 xmlsec-2.0.8 安全提供程序。有某种方法可以实例化提供程序并将其添加到 java 提供程序集中以替换 Jboss 提供程序?
您可以使用 jboss-deployment-structure.xml 文件排除 JBoss 提供的依赖项,该文件需要放置在战争的 WEB-INF 目录下。您必须指定如下所示的排除依赖项。
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="$LIBRARY_OR_MODULE_YOU_WANT_TO_EXCLUDE"/>
</exclusions>
</deployment>
例如<module name="org.apache.santuario.xmlsec"/>