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

浙公网安备 33010602011771号