加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

BlazeDS运行期的配置

发布时间:2020-12-15 01:36:37 所属栏目:百科 来源:网络整理
导读:除了基于在xml文件的静态配置外,还有两种方式的运行期配置,? 一种是 注册引导服务(bootstrap service), 在启动时动态配置;另一种是由 外部条件触发 ,在远程对象方法?内部动态配置组件。 ?1:? 使用Bootstrap Service进行动态配置 ? ??? public class Em

除了基于在xml文件的静态配置外,还有两种方式的运行期配置,? 一种是注册引导服务(bootstrap service),在启动时动态配置;另一种是由外部条件触发,在远程对象方法?内部动态配置组件。


?1:? 使用Bootstrap Service进行动态配置
?
??? public class EmployeeRuntimeRemotingDestination extends AbstractBootstrapService
{
?private RemotingService remotingService;
??? public void initialize(String id,ConfigMap properties)
??? {??
??????? String service = "remoting-service";
??????? MessageBroker mb = getMessageBroker();
??????? remotingService = (RemotingService) mb.getService("remoting-service");
??????? RemotingDestination destination = (RemotingDestination) remotingService.createDestination(id);
??????? destination.setSource("flex.samples.crm.employee.EmployeeDAO");

??? }
??? @Override
??? public void start()
??? {
??????? // No-op
??? }
??? @Override
??? public void stop()
??? {
??????? // No-op
??? }
}

上面类写完之后还要在service-config.xml中进行配置:
?????? <services>
??? ?<service class="com.flexbook.dao.DatabaseCheckService" id="hsqldb" />
??????? <service-include file-path="remoting-config.xml" />
??????? <service-include file-path="proxy-config.xml" />
??????? <service-include file-path="messaging-config.xml" />???????
?? ??? <service class="com.flexbook.dao.EmployeeRuntimeRemotingDestination" id="runtime-employee-ro" />
??? </services>
???
??? 上面的示例很简单,我们获取id为"remoting-service"的RemotingService实例,然后以"testDestination"为id创建一个Destination,并设置了它?的source属性。之所以选择在initialize方法中创建Destination,是因为这个方法由MessageBroker调用,

调用的时机是在所有静态组件都创建完毕但启动之前,并且在此方法内创建的组件会自动启动(如果在start方法内创建组件,那么必须

由我们自己负责启动这些组件)。
???
??? 2. 使用远程对象进行动态配置
?????? 使用远程对象动态配置BlazeDS比bootstrap service更加灵活,它可以接受来自外部的输入被动地进行配置,而不是仅仅在BlazeDS启动时主动读取外部数据进行配置。
?????? 示例代码:
?????????? public class DestinationBuilder{
?????????? ?? String sevice = "message-service";
?????????? ?? MessageBroker mb = MessageBroker.getMessageBroker(null);
?????????? ?? MessageService rs = (MessageService)mb.getService(service);
?????????? ?? if(null == rs.getDestination(destId)){
?????????? ?? ?MessageDestination md = (MessageDestination) rs.createDestination(destId);
?????????? ?? ?md.start();
?????????? ?? }
?????????? ?? return destId;
?????????? }
?????? ???上面传入的参数为"null"说明我们期望获得默认的MessageBroker实例。
?????? ???
?????? ???在 remoting-config.xml中DestinationBuilder的配置片段:
?????? ???<destination>
?????? ????<properties>
?????? ?????<source>com.flexbook.blazeds.DestinationBuilder</source>
?????? ????</properties>
?????? ???</destination>
?????? ???
?????? 定义在remoting-config.xml中的原因是由于我们必须手动启动这个配置文件。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读