BlazeDS运行期的配置

来源:互联网 发布:淘宝csgo皮肤 编辑:程序博客网 时间:2024/05/16 18:15

除了基于在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中的原因是由于我们必须手动启动这个配置文件。

原创粉丝点击