我尝试创建包含jks和jar文件的Jboss模块。 虽然我能够使它工作,但我不明白为什么它的工作原理。 当我为jar和jks文件定义resource-root时。
<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”/&gt; \ r \ n ... @ 3:42)由以下原因引起:java.util.zip.ZipException:打开zip文件时出错
但是,如果我将资源根定义为<resource-root path="."/>
,一切正常。
当我使用“。”时,有谁知道它为什么会起作用。作为资源根路径? Jboss的魔力是什么?
由于 大卫
答案 0 :(得分:5)
引用this:
资源根是类的位置的规范 模块的加载器将查找类和资源。每个模块 具有零个或多个资源根,但大多数常规模块都会 恰好包含一个,它指的是带有模块的JAR文件 内容。
在人类术语中,resource-root意味着用于目录或.zip文件(.jar,.rar等文件也是如此)。 jks文件不是.zip文件或目录,因此打开.zip文件时出错。
一旦密钥库(.jks)文件在类路径中,它就可以通过KeyStore抽象加载。密钥库文件需要在类路径中,因此这就是将点指定为资源根的原因。 JBoss实际上并没有做任何魔术。
答案 1 :(得分: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>