2

我尝试创建包含 jks 和 jar 文件的 Jboss 模块。虽然我能够使它工作,但我不明白它为什么工作。当我为 jar 和 jks 文件定义资源根时。

<module xmlns="urn:jboss:module:1.1" name="my.module"> <resources> <resource-root path="foo.jar"/> <resource-root path="mykey.jks"/> </resources> </module>

我收到以下错误:

org.jboss.modules.xml.XmlPullParserException:无法在路径“mykey.jks”处添加资源根“mykey.jks”(位置:END_TAG 看到 ...“foo.jar”/> \r\n ... @ 3:42) 引起:java.util.zip.ZipException:打开 zip 文件时出错

但是,如果我将资源根定义为<resource-root path="."/>一切正常。

有谁知道为什么当我使用“。”时它会起作用。作为资源根路径?Jboss到底有什么魔力?

谢谢大卫

4

2 回答 2

5

引用这个

资源根是模块的类加载器将查找类和资源的位置的规范。每个模块都有零个或多个资源根,尽管大多数常规模块将只包含一个,它引用包含模块内容的 JAR 文件。

在人类术语中,resource-root 用于目录或 .zip 文件(.jar、.rar 等文件也是如此)。jks 文件不是 .zip 文件或目录,因此打开 .zip 文件时会出错。

一旦密钥库 (.jks) 文件位于类路径中,就可以通过 KeyStore 抽象加载它。密钥库文件需要在类路径中,这就是为什么将点指定为资源根的原因。JBoss 实际上并没有在那里做任何魔术。

于 2015-10-12T20:31:48.950 回答
2

尝试给出资源根目录的路径和名称属性。如果你只给出路径属性,jboss 会尝试用 zip util 打开它

例如:

<module xmlns="urn:jboss:module:1.0" name="az.ac.localit">
    <resources>
        <resource-root path="." name="travel_app.properties"></resource-root>
    </resources>
</module>
于 2016-07-31T07:04:33.970 回答