一 理论部分

(1) 为什么要使用icebox?

icebox server代替了通常的server.

icebox是为了方便集中管理多个ice服务而建立的。

它通过使用icebox服务器,把ice服务注册进去,从而建立联系。

所以它除了建立传统的ice服务器,ice客户端,主要是配置icebox服务器。

二 编写icebox配置文件

1 建立icebox服务器,主要是配置文件的编写

#file   icebox.config

//核心参数

//进入点的指定。要把服务配置进 IceBox 服务器中,只需使用一个属性,IceBox.Service.name=entry_point [args]

//这个属性的用途有好几个:它定义服务的名字Hello,它向服务管理器提供服务进入点,它还定义用于服务的属性和参数。

//属性值的第一个参数用于指定进入点。对于 C++ 服务,其形式必须是library:symbol。跟在 entry_point 后面的任何参数都会被检查。如果某个参数的形式是

--name=value,它就会被解释为属性定义,将会出现在传给服务的 start操作的通信器的属性集中。这些参数将被移除,剩下的参数会放在 args 参数中传给 start 操作。

IceBox.Service.Hello=HelloService:create  --Ice.Trace.Network=1 hello there

Hello.Endpoints=tcp -p 10000





三 建立icebox服务  

编写IceBox
服务接口

要编写 IceBox 服务,需要实现某个 IceBox 服务接口。(以下示例为基类,在IceBox.h中实现)

module IceBox {

local interface ServiceBase {

void stop();

};

local interface Service extends ServiceBase {

void start(string name,

Ice::Communicator communicator,

Ice::StringSeq args)

throws FailureException;

};

};

1 建立ice应用服务

头文件:

#include <IceBox/IceBox.h>

#if defined(_WIN32)

#

define HELLO_API __declspec(dllexport)

#else

#

define HELLO_API /**/

#endif

class HELLO_API HelloServiceI : public IceBox::Service {

public:

virtual void start(const std::string &,

const Ice::CommunicatorPtr &,

const Ice::StringSeq &);

virtual void stop();

private:

Ice::ObjectAdapterPtr _adapter;

};



成员文件:

首先,我们包括了 IceBox 头文件,以使我们能从 IceBox::Service派生我们的实现。

其次,那些预处理器定义是必需的,因为在 Windows 上,这个服务驻留在一个 Dynamic Link Library (DLL) 中,因此我们需要输出这个类,让服

务管理器能适当地加载它。

cpp文件定义同样直截了当:

#include <Ice/Ice.h>

#include <HelloServiceI.h>

#include <HelloI.h>

using namespace std;

extern "C" {

HELLO_API IceBox::Service *

create(Ice::CommunicatorPtr communicator)

{

return new HelloServiceI;

}

}

void

HelloServiceI::start(

const string & name,

const Ice::CommunicatorPtr & communicator,

const Ice::StringSeq & args)

{

_adapter = communicator->createObjectAdapter(name);

Ice::ObjectPtr object = new HelloI(communicator);

_adapter->add(object, Ice::stringToIdentity("hello"));

_adapter->activate();

}

void

HelloServiceI::stop()

{

_adapter->deactivate();

四  启动 icebox 服务器

下面是用于我们的 C++ 服务例子的配置文件:

716

IceBox

IceBox.ServiceManager.Endpoints=tcp -p 10000

IceBox.Service.Hello=HelloService:create

Hello.Endpoints=tcp -p 10001

注意,我们为 Hello 服务创建的对象适配器定义了一个端点。

假定这些属性位于名为 config 的配置文件中,我们可以这样启动 C++

IceBox 服务器:

$ icebox --Ice.Config=config

参考;

// IceBox 提供了一个管理实用程序ServiceManager 。可选参数。貌似不设置的话是默认的。

//定义IceBox 服务管理器接口的端点。以激活IceBox管理服务。服务管理器端点必须能被IceBox 管理工具访问到,以关闭IceBox 服务器。

IceBox.ServiceManager.Endpoints=tcp -p 9998

Ice.Admin.InstanceName=Box (定义IceBoxAdmin名称,默认是IceBox)

Ice.Admin.Endpoints=tcp -p 9998 -h 127.0.0.1 (定义IceBoxAdmin接入端口,这样用Ice.Admin时才能进入ServiceManager)



参考:

一个完整的java版本的配置使用icebox示例。http://wenku.baidu.com/link?url=a2pRxEvi35hS1Kygb88Cg1MVs0OVUOLLTEdVxb09cE0rJZAW3GN0kH1fnc6eVi79lZGRZkqus7-FLCzaC-5u7yTmPkceYO5ihc3AXPISMcu

对icebox的管理   http://hi.baidu.com/monsterfairy/item/5a4dacc1a21f322646d5c09a

ICE BOX 配置,使用----第一篇的更多相关文章

  1. ice grid配置使用第二篇------实际使用

    一    首先,启动ice grid 1 修改配置文件 node.cfg,appication.xml 修改registry.cfg 配置注册表信息: IceGrid.Registry.Client. ...

  2. 微信应用号(小程序)开发IDE配置(第一篇)

    2016年9月22日凌晨,微信宣布“小程序”问世,当然只是开始内测了,微信公众平台对200个服务号发送了小程序内测邀请.那么什么是“小程序”呢,来看微信之父怎么说 看完之后,相信大家大概都有些明白了吧 ...

  3. Jmeter安装与配置(第一篇)

    Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动态资源,例如静态文 ...

  4. ice grid 第一篇

    关键点: (1)如果想提高并发的话,还是在一个node上对于同一个application开多个server instance. 1.名词解释 .Replica groups A replica gro ...

  5. 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)

    从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...

  6. 国内第一篇详细讲解hadoop2的automatic HA+Federation+Yarn配置的教程

    前言 hadoop是分布式系统,运行在linux之上,配置起来相对复杂.对于hadoop1,很多同学就因为不能搭建正确的运行环境,导致学习兴趣锐减.不过,我有免费的学习视频下载,请点击这里. hado ...

  7. 分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)——第一篇

    分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)--第一篇 简介 首先简单了解一下基础概念,FastDFS是一个开源的轻量级分布式文件系统,由 ...

  8. 第一篇 Windows 8 开发Windows Metro style app环境配置

    半   饱问 题 到 我 这 里 为 止! 第一篇 Windows 8 开发Windows Metro style app环境配置 2012-09-24 08:24 by 半饱, 1289 阅读, 3 ...

  9. 从零开始使用git第一篇:下载安装配置

    从零开始使用git 第一篇:下载安装配置 第一篇:从零开始使用git第一篇:下载安装配置 第二篇:从零开始使用git第二篇:git实践操作 第三篇:从零开始使用git第三篇:git撤销操作.分支操作和 ...

随机推荐

  1. 2.1 工具使用:xmind

    概念 心智图,又称脑图.思维导图.灵感触发图.概念地图或思维地图,是一种图像式思维的工具与及一种利用图像式思考辅助工具来表达思维的工具. 详细的可以查看这里(维基百科)还有这里(百度百科) 用了思维导 ...

  2. java的两种异常runtimeException和checkedException

    java异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字.   try 关键字后紧跟一个花括号括起来的代码块,简称try块.同理:下面的也被称为相应的块. ...

  3. html5利用websocket完成的推送功能

    利用websocket和java完成的消息推送功能,服务器用的是tomcat7.0,一些东西是自己琢磨的,也不知道恰不恰当,不恰当处,还请各位见谅,并指出. 程序简单来说,就是客户A可以发送消息给客户 ...

  4. android 中ImageButton按下改变背景图片的效果

    最近在做一个app的登陆界面,才发现原来认为很简单的UI效果,其实背后却蕴含的知识很多,积累一个算一个吧. 实现方法有两种:一种是添加代码,一种是配置xml文件. 方法一:代码添加 ImageButt ...

  5. linux 查看进程 和 杀死进程

    ps ax 显示当前系统进程的列表 PID TTY      STAT   TIME COMMAND ps aux 显示当前系统进程详细列表以及进程用户 USER       PID %CPU %ME ...

  6. U盘安装Centos后拔除U盘无法启动问题解决方法

    今天安装CentOS后发现把引导文件安装在U盘上了,所以不插U盘就无法进入CentOS系统,在网上找到这种方法成功摆脱U盘启动,避免重新用U盘做引导盘安装系统,简单省事,所以发个帖,留着以后备用. 1 ...

  7. maven学习笔记 1

    1    概述 1.1 Maven是什么 1.2 为什么要用Maven 2    怎么用Maven 2.1 Maven仓库 2.2 Maven安装 2.3 Eclipse插件 2.4 Maven常用命 ...

  8. mysql笔记6之数据类型

    1 区别一: varchar:可变长度的字符串.根据添加的数据长度决定占用的字符数 char:固定长度的字符串 2区别二 int:没有限制 int(4):限制为4 3 区别三: 日期: date    ...

  9. NPOI 2.0 教程(二):编辑既存的EXCEL文件

    NPOI 2.0 教程(二):编辑既存的EXCEL文件 分类: C#技术 2014-03-11 15:40 993人阅读 评论(3) 收藏 举报 c#excelNPOI 转载请注明出处 http:// ...

  10. 使用maven开发过程中,pom报的一些错的解决方法

    1.  maven-resources-plugin prior to 2.4 is not supported by m2e. Use maven-  resources-plugin versio ...