IceBox介绍


IceBox就像一个Tomcat,我们只要写N个Ice服务代码,用一个装配文件定义需要加载的服务列表、服务器的启动参数、启动次序等必要信息,然后启动IceBox,我们的应用系统就能够正常运行了。IceBox采用的是UNIX上通用的方式-属性文件的方式,其可能的原因的可以省去复杂的XML解析和相关的lib库,并能快速加载和启动程序。


IceBox使用

        要将一个Ice服务纳入到IceBox中,我们需要引入IceBox.jar这个库,另外只需要让这个服务实现类继承IceBox定义的Service接口即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class MyServiceImpl extends _MyServiceDisp implements Service {
 
    private static final long serialVersionUID = 7114601588161119171L;
    private Ice.ObjectAdapter _adapter;
 
    @Override
    public String hello(Current __current) {
        return "Hello Jerome";
    }
 
    @Override
    public void start(String name, Communicator communicator, String[] args) {
        _adapter = communicator.createObjectAdapter(name);
        _adapter.add(this, communicator.stringToIdentity(name)); // 创建servant,
        _adapter.activate();
        System.out.println("log:" + name + "is started!");
    }
 
    @Override
    public void stop() {
        System.out.println("log:" this._adapter.getName() + "is stoped!");
        // 销毁adapter
        _adapter.destroy();
    }
     
}

在src下新建IceBox配置文件config.properties
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#service properties
IceBox.InstanceName=MyAppIceBox 1
IceBox.InheritProperties=1
#所有服务初始化完成之后打印 xxx ready
IceBox.PrintServicesReady=MyAppIceBox 1
#IceBox.serviceManager.Endpoints=tcp -p 9999 -h localhost
#performance properties
IceBox.ThreadPool.Server.Size=4
IceBox.ThreadPool.Server.SizeMax=100
IceBox.ThreadPool.Server.SizeWarn=40
IceBox.ThreadPool.Client.Size=4
IceBox.ThreadPool.Client.SizeMax=100
IceBox.ThreadPool.Client.SizeWarn=40
#for system stronger
Ice.ACM.Client=300
Ice.ACM.Server=300
#log and trace
#Ice.LogFile=iceserver.log
Ice.PrintStackTraces=1
Ice.Trace.Retry=2
Ice.Trace.Network=2
Ice.Trace.ThreadPool=1
Ice.Warn.Connections=1
Ice.Warn.Dispatch=1
Ice.Warn.Endpoints=1
#service define begin
#IceBox.Service.name=entry_point [--key=value] [args]
#name定义service的名字,作为start方法的name的参数,必须是唯一的
#entry_point是上面MyServie的完整类名
#[--key=value]:被作为property属性,用于构建该服务的communicator,
#用来更加精确的控制每个Ice服务的性能调优,这里也可以使用--Ice.Config=xxx.cfg的方式从具体的配置文件中加载参数。
#另外,也可以用IceBox.InheriProperties=1的属性让所以Ice服务实例都使用IceBox的配置属性
#[args]作为传入start方法的参数,作为服务启动初始化参数
IceBox.Service.MyService=service.MyServiceImpl prop1=1 prop2=2 prop3=3
#IceBox.Service.SMSService=com.SMSServiceI2
MyService.Endpoints=tcp -p 10001 -h localhost
#OnlineBook.Endpoints=tcp -p 10000 -h localhost
#service end
#service load order
#配置多个服务的先后顺序
IceBox.LoadOrder=MyService
IceBox.UseSharedCommunicator.MyService=1
IceBox.UseSharedCommunicator.SMSService=1

启动:在Eclipse右击项目Run As→Run Configuration,选择Project和Main class,和配置Arguments:--Ice.Config=config.properties
        
        


参考

        《ZeroC Ice 权威指南》3.2
 

资料
        参考:D:\ZeroC\Ice-3.5.1-demos\demoj\IceBox
        源码:链接:http://pan.baidu.com/s/1btCaIi 密码:edv0
        

参考

        《ZeroC Ice 权威指南》3.2
 

资料
        参考:D:\ZeroC\Ice-3.5.1-demos\demoj\IceBox
        源码:链接:http://pan.baidu.com/s/1btCaIi 密码:edv0

ZeroC Ice IceBox使用的更多相关文章

  1. ZeroC Ice 暂记

    摘自: http://weibo.com/p/1001603869896789339575 原文地址: http://www.oschina.net/question/865233_242146 吴治 ...

  2. ZeroC Ice IceGrid Node和IceGrid

    IceGrid Node介绍 绝大多数分布式系统都有一个共同特点,即分布在各个主机上的节点进程并不是完全独立的,而是彼此之间有相互联系和通信的.集群对集群中的节点有一些控制指令,如部署.启停或者调整某 ...

  3. ZeroC Ice Ice Registry实现负载均衡

    Registry介绍         对于多个IceBox集群该怎么负载均衡?以服务注册表Registry为依托的Service Locator组件,以及依赖其而诞生的强大的分分布式框架-IceGri ...

  4. Zeroc Ice 发布订阅者之demo Icestorm之clock

    刚刚在服务端(192.168.0.113)和客户端跑通(192.168.0.188),在这里记录,作为备忘. 第一步:读readme,先用vs2010生成subscriber.exe和publishe ...

  5. zeroc ice log4net 多进程log文件问题

    使用zeroc ice 中的icebox 的时候多服务会有多个服务实例,每个实例都要写日志文件,所以要配置多个日志文件区分开来, 类似这样  orderservice_1_20160101.log   ...

  6. ZeroC Ice启用SSL通讯的配置

    Zeroc ICE ( Internet Communications Engine )中间件号称标准统一,开源,跨平台,跨语言,分布式,安全,服务透明,负载均衡,面向对象,性能优越,防火墙穿透,通讯 ...

  7. ZEROC ICE 跨平台间程序调用 java版

    前言: 本来建博客是为了和大家分享一些前端的开发经验和心得呢,但是阴差阳错,第一篇技术博客确实关于跨平台,跨语言服务端调用的解决方案---ZEROC ICE. 最近一个项目涉及到java.python ...

  8. Zeroc Ice Slice语言使用 HelloWorld

    Slice介绍         为了开发多语言支持的RPC服务,需要一种中立的新语言来定义这个服务接口,以便各个编程语言能够准确无误地理解和翻译接口,为此Ice设计了Slice语言.Ice开发的第一步 ...

  9. Zeroc Ice原理介绍

    Ice介绍         Ice(Internet Communications Engine)是ZeroC公司的杰作,继承了CORBA的血统,是新一代的面向对象的分布式系统中间件.Ice是RPC通 ...

随机推荐

  1. 在电脑上安装Linux操作系统

    1硬件需求 A 一台电脑 B 一个优盘 2软件需求 A制作优盘启动盘的软件PowerISO BLinux操作系统的镜像文件 3安装PowerISO,并使用PowerISO A安装PowerISO B插 ...

  2. emysql add_poop() 超时出错

    emysql add_poop() 超时出错(金庆的专栏)sample/a_hello.erl 连接本机更改为连接局域网内的MySql服务器:    emysql:add_pool(hello_poo ...

  3. require.js使用步骤

    以superagent为例 1.设置lib目录 requirejs.config({ baseUrl: 'libs' }); 2. 使用SuperAgent require(['superagent' ...

  4. linux的 压缩与解压 命令集

    bzip2压缩费时但效果好,而且支持hadoop的hdfs文件切分,gzip不行 bzip2 [-cdz] 文件名 -c :将压缩的过程输出到屏幕 -d :解压缩 -z :压缩 -# :压缩比的参数, ...

  5. C在控制台上实现鼠标画图功能

    #include <windows.h> #include <stdio.h> #include <string.h> HANDLE hOut; HANDLE hI ...

  6. win7下创建逻辑分区

    许多用户在安装Win7时都遇,安装程序创建的都是主分区,并没有创建逻辑分区的任何选项,这样的情况导致创建4个主分区后剩余的空间无法继续分配的情况,这使得许多用户情何以堪.很多用户都向小编反映该问题,有 ...

  7. matlab函数interp2及其c++代码

    最近将一个matlab程序转为c++,途中遇到interp2这个家伙,我是左查右查,发现网上没有人总结这个玩意,于是我来初探一下,还是别有洞天的,嘿嘿. 1.关于interp2 Vq = interp ...

  8. JAVA之旅(二十五)——文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine

    JAVA之旅(二十五)--文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine 我们继续IO上个篇 ...

  9. 海量数据挖掘MMDS week6: MapReduce算法(进阶)

    http://blog.csdn.net/pipisorry/article/details/49445519 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  10. 【Swift学习笔记00】——enumeration枚举类型遵循协议protocol

    Apple官方文档:The Swift Programming LanguageProtocols and Extensions一节的小节练习,要求自行定义一个enumeration枚举类型,并且遵循 ...