JBoss AS7。如何在部署之前加载some.jar?

时间:2013-11-15 13:13:06

标签: deployment jar jboss jboss7.x ear

我有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。

2 个答案:

答案 0 :(得分:0)

将您的JMX bean设置分离到其他部署单元(如SAR或WAR),并将此部署设置为EAR的依赖关系可以解决问题。

答案 1 :(得分:0)

正如我之前所说,我必须在另一个配置之前初始化spring JMX设置。 Spring父上下文是解决此问题的好方法。只需根据需要定义parentContextKey,Spring就会自行完成所有工作。

https://spring.io/blog/2007/06/11/using-a-shared-parent-application-context-in-a-multi-war-spring-application/