今天仔细分析了一下jboss的发布的原理,当前看到了一部分,还没有完全看完,记录下当前的认识。
对于jboss来说,在每个domain下的conf/bindingservice.beans,conf/jboss-service.xml,deploy,deployers分别代表了不同的profile的类型,其中
conf/bindingservice.beans -- BasicProfileMetaData
,conf/jboss-service.xml -- BasicProfileMetaData
deployers -- PropertyProfileMetaData(不会热部署)
deploy -- HotDeploymentProfileMetaData
对于不同的类型jboss采用了一个类TypedProfileFactory进行根据情况生成Profile类,TypedProfileFactory类会根据系统的配置调用相应的工厂生成相应的配置对象,这个地方采用了conf/profile.xml进行定义,定义格式如下
首先定义TypedProfileFactory,同时定义回调函数
<bean name="TypedProfileFactory" class="org.jboss.profileservice.TypedProfileFactory">
<incallback method="addProfileFactory" />
<uncallback method="removeProfileFactory" />
</bean>
这样类型工厂在实例化的时候会在 TypedProfileFactory中进行注册,注册的类主要包括TypedProfileFactory,BootstrapProfileFactory,BasicProfileFactory,ScanningProfileFactory,这些类主要都在Profile.xml中进行的定义。
根据定义
conf/bindingservice.beans是有BasicProfileFactory来生成VirtualDeploymentProfile
conf/jboss-service.xml与上面相同
deployers 是有ScanningProfileFactory来生成MutableScanningProfile
deploy 是有ScanningProfileFactory来生成HDScanningProfile
(以上操作在发布应用的时候执行,在发布应用的创建上下文的时候执行,然后发布相应的类。)
未完待续。。。