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:
- JBoss Modules docs: https://docs.jboss.org/author/display/MODULES/Module+descriptors
- Latest JBoss Modules XSD
- AS 7 docs: https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7
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. --> <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"/> </properties> <resources> <!-- Basically, list of jars to load classes and resources from. --> <resource-root path="jboss-msc-1.0.1.GA.jar"/> ... </resources> <dependencies> <!-- 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. --> <paths> <path name="org/jboss/modules"/> <path name="org/jboss/modules/log"/> </paths> <!-- Optional limitation of what's exported. --> <exports> <include path="META-INF/"/> </exports> </system> <!-- 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="org.jboss.ws.native.jbossws-native-core" 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. --> <imports> <include path="META-INF"/> <include path="dtd"/> <include path="schema"/> <exclude-set> <path name="org.jboss.example.tests"/> </exclude-set> </imports> <exports> <include path="META-INF"/> <include path="dtd"/> <include path="schema"/> </exports> </module> <!-- Optional deps --> <module name="javax.inject.api" optional="true"/> </dependencies> </module>
Comments