0

我正在尝试使用 XML 文件进行签名操作。在这个过程中,我使用了 xmlSec 1.5 库。如果我在本地测试中运行代码,则该过程成功完成。但是,如果我在 Jboss 7.1 的战争中部署代码,我对 xmlSec 1.5 的依赖会被 Jboss 的模块依赖“xmlsec-2.0.8.redhat-1”覆盖,并且签名过程会失败。对于客户的请愿书,我可以排除 xmlsec Jboss 模块,但我不能用它来签名。所以,问题是:我怎么能指定一个给定的库版本只在部分代码中使用?

在这种情况下,两个依赖项的路径是相同的:org.apache.santuario,所以我不能使用它来指定库。

我正在尝试使用提供程序进行签名,但是,Jboss 再次为其 xmlsec-2.0.8 安全提供程序覆盖了我的 xmlsec-1.5 安全提供程序。有一些方法可以实例化一个提供者并将其添加到一组 java 提供者中以替换 Jboss 吗?

4

1 回答 1

0

您可以使用 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"/>

于 2019-12-31T15:04:10.820 回答