原文地址:http://blog.csdn.net/youfly/archive/2009/02/12/3884077.aspx
Jboss拥有一个可扩展的部署体系结构,它充许将各种组件无封的部署到Jboss JMX的微内核中。MainDeployer是整个部署体系结构的入口,每一次组件的部署请求都会MainDeployer,并由它决定哪一个 SubDeployer可以处理当前的部署请求,如果找到可以处理当前部署请求的SubDeployer,MainDeployer将当前的请求委派给相 应的SubDeployer。Jboss提供了如下的一些部署器:
AbstractWebDeployer :该部署器处理web应用包(WARs)。它接受以war结尾的部 署包或者目录。WARs必须有一个WEB-INF/web.xml描述符文件,并且也可能有一个WEB-INF/jboss-web.xml描述符文件。
EARDeployer :该部署器部署企业应用包 (EARs). 它接受以ear结尾的部署包或者目录。EARs必须有一个META-INF/application.xml描述符文件,并且也可能有一个META- INF/jboss-app.xml描述符文件。
EJBDeployer : 该部署器部署EJB包。它接受以jar结尾的部署包或者目录。EJB jars必须具有一个META-INF/ejb-jar.xml描述符文件,并且也可能有一个META-INF/jboss.xml描述符文件。
JARDeployer : 该部署器部署jar包都库文件。该唯一的约束是它不能包含WEB-INF目录。
RARDeployer : 该部署器部署JCA资源包(RARs). 它接受以rar结尾的部署包或者目录。RARS必须具有一个META-INF/ra.xml的部署描述符文件。
SARDeployer : 该部署器部署JBoss MBean service包(SARs)。它接受以sar结尾的部署包或者目录,同时也接受以service.xml结属的一个xml文件。SARs的jar包里必 须包含META-INF/jboss-service.xml部署描述符。
XSLSubDeployer : 该处理器部署各种各样的xml文件。JBoss使用XSLSubDeployer来部署ds.xml,并且将它们转换成为service.xml给 SARDeployer使用。当然,它也不仅仅只是做这一个功能。
HARDeployer : 该部署器部署hibernate包(HARs)。它接受以har结属的部署包或者目录。HARs必须具有一个META-INF/hibernate- service.xml部署描述文件。
AspectDeployer : 该部署器部署AOP包。它接受以aop结尾的部署包或者目录,它同时也接受aop.xml文件。AOP包必须具有META-INF/jboss- aop.xml部署描述文件。
ClientDeployer : 该部署器部署J2EE应用客户端。它接受以jar结尾的部署包或者目录。J2EE clients必须具有META-INF/application-client.xml及META-INF/jboss-client.xml部署描述 文件。
BeanShellSubDeployer : 该部署器将bean shell脚本部署为一个MBeans。它接受以文件名bsh结尾的文件。
MainDeployer, JARDeployer及SARDeployer被硬编码的JBoss Server的核心里。其他所有的部署器作为MBean服务,通过调用MainDeployer的addDeployer(SubDeployer)方法 将它们自身注册到MainDeployer中。MainDepoyer通过DeploymentInfo对象和SubDeployer对象进行信息的通 讯。DeploymentInfo是一个封装了可部署的组件的状态信息的数据结构。
当MainDeployer接收到一个部署请求时,它迭代所有在它上面注册的SubDeployer,并依次调用SubDeployer上的 accepts(DeploymentInfo)方法,第一个返回true的Subdeployer将用当部署当前组件的部署器。 MainDeployer将委派init,create,start,stop,destroy部署生命周期操作到相应的Subdeployer。