3.4. Prevent a Module Being Implicitly Loaded

This task describes how to configure your application to exclude a list of module dependencies.
You can configure a deployable application to prevent implicit dependencies from being loaded. This is commonly done when the application includes a different version of a library or framework than the one that will be provided by the application server as an implicit dependency.

Prerequisites

  1. You must already have a working software project that you want to exclude an implicit dependency from.
  2. You must know the name of the module to exclude. Refer to Section 3.7.1, “Implicit Module Dependencies” for a list of implicit dependencies and their conditions.

Procedure 3.4. Add dependency exclusion configuration to jboss-deployment-structure.xml

  1. If the application has no jboss-deployment-structure.xml file, create a new file called jboss-deployment-structure.xml and add it to the project. This file is an XML file with the root element of <jboss-deployment-structure> .
    <jboss-deployment-structure>
    
    </jboss-deployment-structure>
    
    For a web application (WAR) add this file to the WEB-INF directory. For an EJB archive (JAR) add it to the META-INF directory.
  2. Create a <deployment> element within the document root and an <exclusions> element within that.
    <deployment>
       <exclusions>
       
       </exclusions>
    </deployment>
    
  3. Within the exclusions element, add a <module> element for each module to be excluded. Set the name attribute to the name of the module.
    <module name="org.javassist" />
    

Example 3.5. Excluding two modules

<jboss-deployment-structure>
   <deployment>
      <exclusions>
         <module name="org.javassist" />
         <module name="org.dom4j" />
      </exclusions>
   </deployment>
</jboss-deployment-structure>