我有EAR,它来自战争和罐子。
project.ear
.... package.war
.... LIB
....... library.jar
应该在部署war文件之前初始化library.jar。
我的application.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" version="6">
<display-name>project</display-name>
<initialize-in-order>true</initialize-in-order>
<module>
<java>library.jar</java>
</module>
<module>
<web>
<web-uri>package.war</web-uri>
<context-root>/</context-root>
</web>
</module>
<library-directory>lib</library-directory>
</application>
我的jboss-deployment-structure.xml文件:
<jboss-deployment-structure>
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<deployment>
<dependencies>
//some modules
</dependencies>
</deployment>
<sub-deployment name="library.jar">
<resources>
<resource-root path="lib/library.jar"/>
</resources>
</sub-deployment>
<sub-deployment name="package.war">
<exclusions>
<module name="javax.faces.api" slot="main"/>
<module name="com.sun.jsf-impl" slot="main"/>
</exclusions>
</sub-deployment>
</jboss-deployment-structure>
但是当JBoss部署我的应用程序时,我会在日志文件中看到下一个错误。
{"JBAS014671: Failed services" => {"jboss.deployment.unit.\"project.ear\".STRUCTURE" => "org.jboss.msc.service.StartException in servi
ce jboss.deployment.unit.\"project.ear\".STRUCTURE: JB
AS018733: Failed to process phase STRUCTURE of deployment \"project.ear\"
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException:
JBAS011037: Unable to process modules in application.xml for EAR [\"/C:/DEV/jbo
ss-eap-6.1/bin/content/project.ear\"], module file library.jar not found"}}
我需要严格加载模块。只有当library.jar完全初始化时,才应该部署package.war。
答案 0 :(得分:0)
将您的JMX bean设置分离到其他部署单元(如SAR或WAR),并将此部署设置为EAR的依赖关系可以解决问题。
答案 1 :(得分:0)
正如我之前所说,我必须在另一个配置之前初始化spring JMX设置。 Spring父上下文是解决此问题的好方法。只需根据需要定义parentContextKey,Spring就会自行完成所有工作。