关闭

ICE的属性设置

标签: stringpropertiesc
2589人阅读 评论(0) 收藏 举报
分类:
1、ICE的属性即"name=value"值,具体的name范畴可以见后续描述。可以在程序中设置属性值到ICE的运行环境中
   但一定要注意在Communicator::Initialize方法调用之前设置好值,在之后设置的值会被ICE的运行环境忽略
2、属性名不能包含如下前缀:Ice、IceBox、IceGrid、IcePatch2、IceSSL、IceStorm、Freeze、Glacier2
3、属性名称和属性值中开始和结束的空格或者tab字符会被忽略
4、有一个特殊的属性Ice.Warn.UnusedProperties,将其设置为非零值,那么在communicator析构时会检测是否有
   属性从未读取过,则会报告异常,可用来检测是否有哪些属性因为名字拼写错误从未读取
5、设置属性的方式有如下几种
   A、通过简单的命令行参数指定:./server --Ice.Trace.Protocol=1
   B、通过配置文件指定: ./server --Ice.Config=/data/home/server.conf
   C、通过程序实现属性设置:setProperty("Ice.Trace.Protocol", "1");
6、ice的属性配置文件需要遵循以下规则:
   A、配置文件中以#开始的行为注释行
   B、配置文件中的特殊字符'#'、'\'、'='可以通过转移字符'\'来标示
   C、缺省配置文件通过环境变量ICE_CONFIG指定
   D、可以通过命令行参数--Ice.Config特殊指定配置文件路径
   E、命令行上的参数优先级高于配置文件中的优先级
   F、可以通过--Ice.Config指定多个属性配置文件,文件路径间以','分割
   G、不管输属性配置文件还是命令参数,后面的属性值会覆盖前面定义的属性值
7、在命令行上设置属性有如下几种格式:
   A、--Ice.Trace.Protocol=1               //将属性设置为1
   B、--Ice.Trace.Protocol                 //未标示值的属性值为1
   C、--Ice.Trace.Protocol=                //清除默认属性
8、应用程序中可以通过设置Ice.ProgramName来修改运行程序的名称
9、ICE的运行时环境维护一个程序的属性集合PropertiesPtr,可以通过如下方式获取一个属性集合:
   A、调用Ice::createProperties创建一个属性集合
   B、调用Ice::CommunicatorI::getProperties获取系统当前环境的属性集合
   C、调用
10、属性集合Properties提供如下方法用于属性的读写操作:
   A、std::string getProperty(const std::string&);
   B、std::string getPropertyWithDefault(const std::string&, const std::string&);
   C、Ice::Int getPropertyAsInt(const std::string&);
   D、Ice::Int getPropertyAsIntWithDefault(const std::string&, Ice::Int);
   E、PropertyDict getPropertiesForPrefix(const std::string&);
   F、void setProperty(const std::string&, const std::string&);
   G、PropertiesPtr clone();                   // 深度拷贝属性集合
   H、void load(const std::string&);           // 从配置文件中加载属性集合
   I、StringSeq getCommandLineOptions();       // 将属性解析成命令行格式
   J、StringSeq parseCommandLineOptions(const std::string&, const StringSeq&); // 从StringSeq中匹配前缀的参数解析成属性,并移除对应值
   K、StringSeq parseIceCommandLineOptions(const StringSeq&); // 从StringSeq中解析ICE运行环境属性,并移除对应值
11、setProperty方法一般需要在调用Communicator::initialize之前调用,常用的调用格式如下:
    Ice::InitializationData id;
    id.properties = Ice::createProperties(args);
    id.properties->setProperty("MyProperties", "abcdefg");
    _communicator = Ice::initialize(id);
12、属性集合对象提供的方法好多是基于StringSeq的,但是有些时候我们需要的是argc、argv这样的参数,那么ICE提供方法在其间进行转换:
    StringSeq Ice::argsToStringSeq(int argc, char* argv[]);
void Ice::stringSeqToArgs(const StringSeq& args, int& argc, char* argv[]);
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:90428次
    • 积分:1189
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:3篇
    • 译文:0篇
    • 评论:23条
    文章分类
    最新评论