Skip navigation

Module.xml is a file defining how JBoss Modules, part of the AS 7 core, will treat the content of the module.


JBoss Modules is mostly about classloading, so almost whole content of module.xml is for classloaders.

Here is the official info:

However the first is not complete, the comments in XSD are a bit uninformative, and the last is about classloading in general, so I 'll put a brief summary here.


Full module.xml example with comments

<?xml version="1.0" encoding="UTF-8"?>

<module xmlns="urn:jboss:module:1.1" name="org.jboss.msc">

    <!-- Main class to use when launched as a standalone jar. -->
    <main-class name="org.jboss.msc.Version"/>

    <!-- Properties readable through Modules API. Not to be confused with Java system properties. -->
        <!-- jboss.api=private means that the module is not part of the JBoss AS 7 public API - basically saying, "Don't use it's packages in your apps." -->
        <property name="jboss.api" value="private"/>

        <!-- Basically, list of jars to load classes and resources from. -->
        <resource-root path="jboss-msc-1.0.1.GA.jar"/>


        <!--  Export paths and packages from the class loader which loaded JBoss Modules (usually the system's application CL). -->
        <system export="true">
            <!-- List of exported paths. Mandatory. -->
               <path name="org/jboss/modules"/>
               <path name="org/jboss/modules/log"/>
            <!-- Optional limitation of what's exported. -->
                 <include path="META-INF/"/>

        <!-- Dependencies on other modules. Classloader of this module will have their classes visible. -->
        <module name="javax.api"/>
        <module name="org.jboss.logging"/>

        <!-- services="import/export/none" controls whether services defined in META-INF/services are also visible to/from this module.
               I.e. services="export" will make the services of this module visible to the dependency. Import will do the other way around.
               Defaults to "none". -->
        <!-- export="true" controls whether own exports of this dependency are visible. -->
        <module name="" services="export" export="true">
            <!-- You can limit what packages in dependency modules are allowed 
                   to be seen from this module's point of view (import), or vice versa (export).
                   By default, all are imported/exported. When you specify <imports> or <exports>, only those listed are. -->
               <include path="META-INF"/>
               <include path="dtd"/>
               <include path="schema"/>
                   <path name="org.jboss.example.tests"/>
                <include path="META-INF"/>
                <include path="dtd"/>
                <include path="schema"/>

        <!-- Optional deps -->
        <module name="javax.inject.api" optional="true"/>

Filter Blog

By date:
By tag: