【JBoss】2. 应用程序部署

在JBoss中部署应用程序

JBoss使用的是一种插件部署体系结构,独立的部署器负责部署不同类型的应用程序,使得部署体系结构模块化。


应用程序打包

需要部署的应用程序,既可以是存档文件,也可以是已解压的目录。

如果是存档文件,则会在server/xx/tmp/deploy下解压此存档文件。


部署器

部署应用程序的替换机制是使用jboss.system:service=MainDeployer这个MBean的deploy或redeploy操作;

通过该操作甚至可以部署不在deploy目录下的应用程序,但重启后失效(若想要永久使用非deploy下的应用程序,可通过profile-service.xml配置)。

【JBoss】2. 应用程序部署_第1张图片

部署器通过deployers.xml和profile.xml进行配置

<!-- deployers.xml --> 
<deployment xmlns="urn:jboss:bean-deployer:2.0">

   <!-- The MainDeployer -->
   <bean name="MainDeployer" class="org.jboss.deployers.plugins.main.MainDeployerImpl">
      <property name="structuralDeployers"><inject bean="StructuralDeployers"/></property>
      <property name="deployers"><inject bean="Deployers"/></property>
      <property name="mgtDeploymentCreator"><inject bean="ManagedDeploymentCreator"/></property>
      <property name="comparator"><inject bean="topContextComparator"/></property>
   </bean>


部署扫描仪

JBoss支持热部署,部署扫描仪会定期扫描deploy目录。

可以设置让部署扫描仪同时扫描其它非deploy目录:

<!-- profile-service.xml --> 
<deployment xmlns="urn:jboss:bean-deployer:2.0">

     <bean name="VFSDeployScanner" ...>
      <property name="URIList">
          <list elementClass="java.net.URI">
             <value>${jboss.server.home.url}deploy/ </value>
             <value>file:/opt/deploy/ </value>
          </list>
      </property>
   </bean>

——在哪个目录?


类加载器

JBoss5.0引入了一个基于新虚拟文件系统(VFS, Virtual File System)的类加载程序。

JBoss使用多个类加载器,每个类加载器加载一组特定类,这样可以分离各种被部署的应用程序。

——【例】场景:不同的应用程序依赖相同的第三方jar,但版本号不同。使用不同的类加载程序,就可以加载各自的类版本。


实际上,一个类加载器对应一个应用程序。JMX中名称以“jboss.classloader:id=”开始。

【JBoss】2. 应用程序部署_第2张图片


加载程序存储库

除了类加载器,JBoss还维护数个加载程序存储库,即JBoss可以从中加载类的位置

一个存储库可能被一个类加载器使用;而另一个存储库则可能被多个加载器使用。


用户可以为应用程序定义一个加载程序存储库,这样就会优先加载该库中的类。——【例】场景:不同的应用程序依赖相同的第三方jar,但版本号不同。

但其他应用程序则看不到这个存储库中的类(单面镜)。








你可能感兴趣的:(jboss)