ICE box

这一篇我们试试IceBox的简单使用。

那先介绍一下 IceBox,IceBox 是一种简单的应用服务器,可用于协调许多应用组件的启动和停止。应用组件可以作为动态库、而不是进程进行部署。例如,你可以在单个Java 虚拟机中运行若干应用组件,而无需使用多个拥有自己的虚拟机的进程,从而减轻整个系统的负担。

具体应用可以参考官方文档。

首先,我们要改造一样Server类,以实现让IceBox服务接管你的应用。
文件名:ServerByBox.java
public class ServerByBox implements IceBox.Service {

    private Ice.ObjectAdapter _adapter;
    
    @Override
    public void start(String name, Communicator communicator, String[] args) {
        _adapter = communicator.createObjectAdapter(name);
        _adapter.add(new SpanLogicI(), Ice.Util.stringToIdentity("span"));
        _adapter.activate();
        //当然,这里你可以添加任意多的Servants。以实现一个VM统一管理一组服务。
    }

    @Override
    public void stop() {
        _adapter.destroy();
    }
}

改写好Service后,就要开始写配置文件了。

文件名:config.icebox
IceBox.InstanceName=DemoIceBox (这里定义IceBox实例的名字,也就是为IceBox服务启个名。)

IceBox.PrintServicesReady=DemoIceBox (在所有服务的初始化完成之后,服务管理器将打印"token ready"。如果有脚本想要等待所有服务准备就绪,这项特性很有用。)

IceBox.Service.Span=com.demo.ServerByBox --Ice.Config=config.server(定义IceBox要加载的服务,即你需要让IceBox托管的服务都罗列到这里。)语法如下:
IceBox.Service.name=entry_point [args]
属性键的name 部分是服务名。这个名字会传给服务的start 操作,在配置进同一个IceBox 服务器的所有服务中必须是唯一的。用不同的名字加载同一个服务的两个或多个实例是可能的,但是不建议这么做。

 

IceBox.LoadOrder=Span (确定服务加载的次序。服务管理器会按照服务在names 中出现的次序加载它们,在names 中,服务名用逗号或空格分隔。没有在names 中提到的服务都在后面加载,次序不确定。)

 

基本配置到这里先停一下。我们跑一下Demo,看看效果。
将工程导出为Jar包。将config.server config.icebox一起Copy出来。例如到C:\test.
打开Cmd,具体操作如下:
>cd c:\test
>set CLASSPATH=c:\test\DemoBox.jar;%CLASSPATH%
>java IceBox.Server --Ice.Config=config.icebox
new the SpanLogicI
KEYMAP init ...
{Alex=H, Demo=L, Fairy=O, Monster=M, 八月初十=O}
DemoIceBox  ready

启动了,运行一下Client试试。大功告成~


接下来,使用一下IceBoxAdmin管理工具。

在config.icebox中添加

IceBox.ServiceManager.Endpoints=tcp -p 9999 -h 127.0.0.1(定义IceBox 服务管理器接口的端点。以激活IceBox管理服务。服务管理器端点必须能被IceBox 管理工具访问到,以关闭IceBox 服务器。)

Ice.Admin.InstanceName=Box (定义IceBoxAdmin名称,默认是IceBox)
Ice.Admin.Endpoints=tcp -p 9998 -h 127.0.0.1 (定义IceBoxAdmin接入端口,这样用Ice.Admin时才能进入ServiceManager)

新建文件config.admin
IceBoxAdmin.ServiceManager.Proxy=Box/admin -f IceBox.ServiceManager:tcp -p 9998 -h 127.0.0.1 (这里的Box要和Ice.Admin.InstanceName对应。后面的端口要和Ice.Admin.Endpoints的配置相同)

到此,配置已经完成。


执行命令
java IceBox.Server --Ice.Config=config.icebox
停止服务
java IceBox.Admin --Ice.Config=config.admin stop Span
打开服务
java IceBox.Admin --Ice.Config=config.admin start Span
停止IceBox服务
java IceBox.Admin --Ice.Config=config.admin shutdown

 

 

http://zhaoningbo.iteye.com/blog/1168189

posted @ 2011-11-23 16:08  tangr206  阅读(962)  评论(0)    收藏  举报