一 理论部分

(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

转载于:https://www.cnblogs.com/catkins/p/5270522.html

ICE BOX 配置,使用----第一篇相关推荐

  1. windows中MySQL主从配置【第一篇】

    前言:         windows系统配置MySQL主从复制,系统中需要安装两个MySQL服务.我本地用的是集成环境,集成环境已经有一个MySQL服务,那么就需要自己在单独下载安装一个MySQL服 ...

  2. 6个必须掌握的基础配置 - [webpack第一篇]

    webpack实战系列全目录 webpack6个常见的基础配置知识点 webpack 12个常见的实际场景 webpack15个常见的优化策略[敬请期待] webpack从0打造兼容ie8的脚手架[敬 ...

  3. 第一篇Mac上fluter开发环境配置

    第一篇Mac上fluter开发环境配置 一.安装Xcode 二.安装Android studio 1.下载并安装[下载android studio](https://developer.android ...

  4. SpringBoot SpringBoot 基础篇(第一篇) 第2章 SpringBoot 全局配置 2.2 yaml 文件

    SpringBoot [千锋教育java教程SpringBoot2全套,springboot快速入门到项目实战视频教程] SpringBoot 基础篇(第一篇) 第2章 SpringBoot 全局配置 ...

  5. 「个人第一篇博客」 UAP用友平台配置(NC65)

    笔记pdf文件下载:https://download.csdn.net/download/d_c_hao/10841598 1.配置ufjdk环境变量 将D:\nc_work\studio\UAP-S ...

  6. 第一篇 入门必备 (Android学习笔记)

    第一篇 入门必备 第1章 初识Android 第2章 搭建你的开发环境 第3章 创建第一个程序--HelloWorld 第4章 使用Android工具 ●Android之父 Android安迪·罗宾( ...

  7. Dialogue System for Unity文档中文对照版(简雨原创翻译)第一篇(我们开始仙剑demo的剧情)

         这篇文档本身有快300页,因为实在太多,所以不像前面的插件那样翻译的,很多地方直接用了机翻,因为文字量实在太大,如果翻译完全套,再加上讲解的话,估计要花几个月的时间,对于普通的程序来说,其实 ...

  8. 《Ansible权威指南 》一 第一篇 Part 1 基础入门篇

    本节书摘来自华章出版社<Ansible权威指南 >一书中的第1章,第1.1节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第一篇 ...

  9. Webpack系列-第一篇基础杂记

    系列文章 Webpack系列-第一篇基础杂记 Webpack系列-第二篇插件机制杂记 Webpack系列-第三篇流程杂记 前言 公司的前端项目基本都是用Webpack来做工程化的,而Webpack虽然 ...

最新文章

  1. linux编程取消wait函数,Linux编程基础之进程等待(wait()函数).pdf
  2. XR应用场景骤变,一场波及5亿人的新探索开始了
  3. javascript清除map所占内存_【原创.54期】 JavaScript的V8引擎初探
  4. boost::mp11::mp_copy_if相关用法的测试程序
  5. C# 运行时通过鼠标拖动改变控件的大小
  6. Codeforces 1005D Polycarp and Div 3
  7. php根据汉字首字母分组,利用PHP获取汉字首字母并且分组排序详解
  8. [BZOJ 5074]小B的数字
  9. 《小功能》python实现文本中的小写数字转大写
  10. 【数字信号处理】数字信号处理简介 ( 数字信号处理技术 | 傅里叶变换 )
  11. 教你制作专属个性二维码!将照片制作成二维码图片!给二维码添加背景图片!
  12. ITOP4412----Uboot2020移植记录
  13. 中职计算机创新杯说课比赛课件,2017年全国中等职业学校“创新杯”  教师信息化教学说课大赛总结...
  14. 他把科学,放进几代人的中二梦
  15. java 禁用迅雷_【Java】我擦!迅雷的代码结构竟然被扒了精光~
  16. 我的世界java怎么自制皮肤_我的世界手机版皮肤怎么做 自己做皮肤教程
  17. JAVA ImageIO图片处理后变色
  18. UVC(USB Video Class)协议讲解
  19. python继续教育_济宁市专业技术人员继续教育自动化观看课程工具
  20. 共享文件夹—— 一个实现Mac与PC互传文件,维护同一个文件夹简单的方法

热门文章

  1. is not a supported wheel on this platform pip安装报错
  2. 聊一聊Spring中的线程安全性
  3. TVM yolov3优化代码修改(编译运行OK)
  4. synopsys PCIE IP协议解析
  5. 汽车车灯灯具系统(下)
  6. AlexeyAB DarkNet YOLOv3框架解析与应用实践(四)
  7. Activity的四种启动模式
  8. 第二个Python程序:if,for,while,输出乘法口诀表
  9. Java 遍历map
  10. vue 搭建脚手架 的教程