博客内容参考文章:《Ice分布式程序设计》马维达 译.
一、 简介
IceBox服务器用于配置服务、并把对它们的管理集中在一起,服务被开发成可动态加载的组件,通过属性为IceBox服务配置它负责加载和管理的应用特有的服务。要把多个服务组合成一个应用,可以通过配置、而不是编译和链接来完成。这解除了服务和服务器的耦合,允许你按照需要组合服务或分离服务。
二、 服务管理器
除了应用服务所支持的对象,IceBox服务器还支持一个实现了IceBox.ServiceManager接口的管理对象。这个对象负责加载和初始化服务,并执行客户所要求的管理动作。为了保护这个对象的端点,不让它们受到未经授权的访问,IceBox服务器还会为这个对象创建一个对象适配器。目前,ServiceManager接口的管理能力相当有限:该接口只支持shutdown,用于终止服务、关闭IceBox服务器。
三、 端点配置
服务管理器的对象适配器的端点是用IceBox.ServiceManager.Endpoints配置属性定义的:IceBox.ServiceManager.Endpoints=tcp -p 10000因为有恶意的客户可能会向服务管理器发动 “拒绝服务”攻击,明智的做法是使用SSL端点,或用适当的防火墙配置来保护这些端点,或者两者都使用。
四、 客户配置
需要访问服务管理器的管理功能的客户可以使用属性所定义的端点来创建代理。服务管理器对象的缺省标识是ServiceManager,但你可以使用IceBox.ServiceManager.Identity属性来改变它。因此,使用缺省标识和端点的代理可以构造如下:
ServiceManager.Proxy=ServiceManager:tcp -p 10000
五、 开发服务
要编写IceBox服务,需要实现某个IceBox服务接口。下面给出的Java例子实现了IceBox.Service:
module IceBox {
local interface ServiceBase {
void stop();
};
local interface Service extends Servic