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[]);
但一定要注意在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[]);