Jboss AS7 模块介绍

  "Jboss AS7 模块介绍"

Posted by     "华恒" on Tuesday, January 13, 2015

TOC

相对于Jboss之前的版本,AS7的类加载机制完全不同,AS7的类加载是基于JBoss模块来设计的。

#什么是模块 模块是classes和resources的集合,每一个模块对应着一个classloader。模块之间可以存在依赖关系,如果一个模块里面的Jar包需要用到另一个模块Jar包里面的类,那么需要显式声明模块依赖,否则模块与模块之间是不可见的。同样,如果部署一个应用到JBoss AS7容器,应用需要依赖模块,也要显式声明模块依赖。

如果要深入了解JBoss AS7模块加载的机制,可以看:JBoss模块分析

#模块的好处 1. 相同版本的Jar包不会被重复加载。 2. 避免Jar包的版本冲突问题。 3. 提供了更加高效的类加载机制。

#JBoss AS7的模块 在JBoss AS7安装目录下面,有一个叫modules的文件夹,里面就内置了相当多的模块。

我们以org.apache.commons.beanutils这个模块为例,进入文件夹:/modules/org/apache/commons/beanutils/main/ 可以看到下面的文件列表:

total 232
-rw-r--r--. 1 root root 232019 Jan  2  2013 commons-beanutils-1.8.3.jar
-rw-r--r--. 1 root root   1540 Jan  2  2013 module.xml

其中module.xml为模块的描述文件, 里面的内容:

<module xmlns="urn:jboss:module:1.1" name="org.apache.commons.beanutils">
    <properties>
        <property name="jboss.api" value="private"/>
    </properties>

    <resources>
        <resource-root path="commons-beanutils-1.8.3.jar"/>
        <!-- Insert resources here -->
    </resources>

    <dependencies>
        <module name="org.apache.commons.logging"/>
        <module name="org.apache.commons.collections"/>
    </dependencies>
</module>

name=“org.apache.commons.beanutils”这个是模块的名称,也是模块的唯一标识符,模块之间就是通过指定该名字来添加依赖。

resources 描述了模块包含了那些Jar文件

dependencies 定义了该模块需要依赖的模块

#怎样将Jar配置成JBoss的模块 如果需要将一个第三方的Jar配置成JBoss的模块,也很简单,先定义好module.xml文件,根据name在JBoss的modules下建立对应的目录结构,最后将module.xml 和Jar包放到建好的main目录里头,这个Jar就变成了JBoss的一个模块。具体步骤网上很多,这里就不赘述。