Java 如何解析docker内部jboss部署结构的资源根路径
我有一个罐子,在生成docker图像时无法复制到ear。此外,由于某些依赖性问题,我无法将JAR添加为模块。 因此,我在jboss部署结构文件中添加了下面的资源根(以使其与在EAR的lib目录中复制jar相同) 假的Java 如何解析docker内部jboss部署结构的资源根路径,java,docker,jboss,wildfly,Java,Docker,Jboss,Wildfly,我有一个罐子,在生成docker图像时无法复制到ear。此外,由于某些依赖性问题,我无法将JAR添加为模块。 因此,我在jboss部署结构文件中添加了下面的资源根(以使其与在EAR的lib目录中复制jar相同) 假的 <!-- This corresponds to the top level deployment. For a war this is the war's module, for an ear --> <!-- This is the top level ea
<!-- This corresponds to the top level deployment. For a war this is the war's module, for an ear -->
<!-- This is the top level ear module, which contains all the classes in the EAR's lib folder -->
<deployment>
<!-- exclude-subsystem prevents a subsystems deployment unit processors running on a deployment -->
<!-- which gives basically the same effect as removing the subsystem, but it only affects single deployment -->
<exclude-subsystems>
<subsystem name="jpa"/>
</exclude-subsystems>
<dependencies>
<module name="org.abc" services="import"/>
<module name="org.abcde.zye" optional="true"/>
</dependencies>
<resources>
<!-- These add additional classes to the module. In this case it is the same as including the jar in the EAR's lib directory -->
<resource-root path="/../../../standalone/outsideEar/outside-abc.jar"/>
</resources>
</deployment>
<sub-deployment name="abc-abc.war">
<dependencies>
<module name="org.abcde.zye" optional="true"/>
</dependencies>
</sub-deployment>
<sub-deployment name="abc-ejb.jar">
<dependencies>
<module name="org.abcde.zye" optional="true"/>
</dependencies>
</sub-deployment>
当我将此ear部署到docker之外的wildfly-15.0.1.Final服务器时,它工作正常。
解析了资源根目录的路径,将outside-abc.jar复制到下面的tmp文件夹(在服务器启动时动态生成),我可以使用outside-abc.jar类执行操作。
wildfly-15.0.1.Final\standalone\tmp\vfs\deployment\deploymentdc506469ec651715
wildfly-15.0.1.最终结构:
wildfly-15.0.1.Final
|- bin
|- domain
|- modules
|- standalone
|- outsideEar
<!-- This path is resolved with resource-root path="/../../../standalone/outsideEar/outside-abc.jar" -->
|- outside-abc.jar
|- configuration
|- data
|- deployments
|- my-ear.ear
|- lib
|- log
|- tmp
|-jboss-modules.jar
对于上述情况,我在bin和standalone文件夹中安装了jar,分别为bin/outsideEar/outer-abc.jar和standalone/outsideEar/outer-abc.jar。因此,我确认docker wildlfy服务器可以使用jar
需求汇总:
<resource-root path="./../../../../../../../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../../../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../outsideEar/outside-abc.jar"/>
<resource-root path="./../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./outsideEar/outside-abc.jar"/>
<resource-root path="./../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./standalone/outsideEar/outside-abc.jar"/>
- 资源根路径如何解析(docker内部和外部) 使用物理代码source=“true”和使用物理代码source=“false”
- 有没有办法只传递资源根目录名,以便 该目录下的所有jar都可以复制到tmp/deployment。如果 不可能,那么有什么方法可以应用于传递jar吗 使用属性文件或环境变量动态命名到jboss-deployment-structure.xml,以便在容器启动时将jar复制到temp/deployment
谢谢。这似乎是一个奇怪的用例。有没有理由不能将JAR仅仅添加到EAR中?这不是一个完整的答案,但使用物理代码源并不是为了您想要做的事情。实际上,在调用诸如*.class.getProtectionDomain().getCodeSource()之类的东西时,需要更改Wildfly中使用的虚拟文件系统的行为,以使jar从物理路径而不是虚拟位置可用。使用物理代码源,战争中的jar将被提取到temp目录,或者被分解,getCodeSource将解析为分解的jar。如果不使用物理代码源,它将解析为虚拟路径。
<resource-root path="./../../../../../../../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../../../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../outsideEar/outside-abc.jar"/>
<resource-root path="./../../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./../outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../outsideEar/outside-abc.jar"/>
<resource-root path="./../../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./outsideEar/outside-abc.jar"/>
<resource-root path="./../standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./../standalone/outsideEar/outside-abc.jar"/>
<resource-root path="./standalone/outsideEar/outside-abc.jar" use-physical-code-source="true"/>
<resource-root path="./standalone/outsideEar/outside-abc.jar"/>