我有一个具有以下结构的EAR:
ear.ear
mywar.war
lib
jar1.jar
jar2.jar
jar3.jar
我在部署目录中有多个WAR,我希望他们有jar1.jar。来自ear.ear的jar2.jar和jar3.jar作为依赖项。
这可能吗?
我已经尝试了以下jboss-deployment-structure.xml,但没有运气。
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="deployment.ear.ear.jar1.jar"/>
<module name="deployment.ear.ear.jar2.jar"/>
<module name="deployment.ear.ear.jar3.jar"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="deployment.ear.ear.lib.jar1.jar"/>
<module name="deployment.ear.ear.lib.jar2.jar"/>
<module name="deployment.ear.ear.lib.jar3.jar"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
是否可以在单独的EAR中使用非ejb JAR依赖项?
答案 0 :(得分:2)
您应该能够将依赖项放在耳朵的/lib
文件夹中,并且您的战争应该会看到它们。
来自JBoss AS7文档:
耳部署是多模块部署。这意味着并非所有 耳内的课程必然可以访问所有其他课程 除非已经定义了明确的依赖关系,否则耳中的类。通过 默认情况下,EAR / lib目录是单个模块,以及每个WAR或EJB jar部署也是一个单独的模块。子部署(战争和战争) ejb-jars)总是依赖于父模块,它给出了 他们访问EAR / lib中的类,但是他们并不总是有 自动依赖彼此
您还可以在JBoss AS 7中阅读有关类加载的更多信息:https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7
答案 1 :(得分:2)
耳中的Jar文件是作为单个模块部署的。您可以使用jboss-deployment-structure.xml
通过指定对耳朵本身的依赖关系来指示对这些依赖关系。您还需要单独包含任何ejbs,并包含export="TRUE"
。
例如:
<?xml version="1.0" encoding="UTF-8"? xmlns="urn:jboss:deployment-structure:1.2">
<jboss-deployment-structure>
<deployment>
<dependencies>
<!-- our module depends on the libs within myear.ear -->
<module name="deployment.myear.ear" export="TRUE"/>
<!-- and these ejbs -->
<module name="deployment.myear.ear.ejb1.jar" export="TRUE"/>
<module name="deployment.myear.ear.ejb2.jar" export="TRUE"/>
<module name="deployment.myear.ear.ejb3.jar" export="TRUE"/>
</dependencies>
</deployment>
</jboss-deployment-structure>