`

ICE笔记(07):Ice属性和配置

    博客分类:
  • Ice
阅读更多

colorado

 

按:摘编自DPWI第30章

 

通过配置文件可以设置Ice应用程序的各个方面,Ice运行时能够识别配置文件中规定的属性集。Ice只会在创建通信器时读入属性配置。也就是说,若要设置属性的话,必须在创建通讯器以前设置,否则不起作用。

1、配置文件:
以#开头部分为注释。属性单词之间可以有空格。属性前、后空格自动清除,中间的空格会保留。

属性格式:<应用程序名>.<类别名>[.<子类别名>]。
以Ice,IceBox,IceGrid,IcePatch2,IceSSL,IceStorm,Freeze,Glacier2 为前缀的属性专用于Ice运行时,不能用于用户程序和配置。

配置文件可通过环境变量ICE_CONFIG指定,也可以在命令行指定:
server --Ice.Config=/usr/local/server.config, ./server.config
属性也可以在命令行上指定:
server --Ice.MessageSizeMax=4096 --Ice.Config=/usr/local/server.config
无论命令行指定的属性在前,还是在后,命令行指定的属性总是会覆盖配置文件中的同名属性。

2、命令行分析、初始化
$ ./server --myoption --Ice.Config=server.config -x --Ice.Trace.Network=3 -y

当通讯器执行初始化语句:

// ...
Ice::CommunicatorPtr ic;
// ...
ic = Ice::initialize(argc, argv);
// ...


initialize返回时,argv中包含的形参向量为:--myoption –x –y;与Ice相关参数均被传给Ice运行时,并从形参向量中删除,留给应用程序的只是应用程序特定的参数向量。Ice:Application的run函数具有类似功能,传入run函数的参数向量只含有应用程序特定的形参向量。Ice相关形参
向量已在调用run函数前,由Ice:Application处理,并传给了Ice运行时。

Ice.ProgramName属性(argv[0])为应用程序名称。

3、编程操作属性
可以通过通讯器的属性方法操作属性。

3.1、读取属性
getProperty:返回指定属性的字符串值,属性未定义,返回空串。
getPropertyWithDefault:返回指定属性的字符串值,属性未定义,返回提供的缺省值。
getPropertyAsInt:类似getProperty,返回整数,若非有效数值,则返回0。
getPropertyAsIntWithDefault:类似getPropertyAsInt,若非有效数值,则返回缺省值。
getPropertiesForPrefix:返回指定前缀的属性集合,类型为PropertyDict。

// ...
Ice::CommunicatorPtr ic;
// ...
ic = Ice::initialize(argc, argv);
//
Ice::PropertiesPtr props = ic->getProperties();
Ice::Int maxSize
= props->getPropertyAsIntWithDefault("Filesystem.MaxFileSize",1024);
// ...

3.2、设置属性
setProperty可将属性设置为指定值。由于通讯器在调用Ice:initialize(argc,argv);时就会读取配置文件,之后不再重新读配置。因此本函数应该在初始化之前调用,初始化之后设置属性,在重启应用程序前是不起作用的。

设置属性集:
Ice::PropertiesPtr props = Ice::createProperties(argc, argv);
props->setProperty("Ice.Trace.Network", "0");
props->setProperty("Ice.Trace.Protocol", "0");

// ...
Ice::InitializationData id;
id.properties = props;
Ice::CommunicatorPtr ic = Ice::initialize(id);
// ...


3.3、分析属性
• getCommandLineOptions: 把属性集转换为命令行选项。
• parseCommandLineOptions:把命令行选项转换为属性集。

使用范例:
int main(int argc, char* argv[])
{
// 创建一个空属性集。
Ice::PropertiesPtr props = Ice::createProperties();

// 将argc/argv转换为字符串序列。
Ice::StringSeq args = Ice::argsToStringSeq(argc, argv);

//析出所有以 --Filesystem 开始的选项。
args = props->parseCommandLineOptions("Filesystem", args);

// args 现在只包含未析出的选项。所有以--Filesystem开头的选项被转换为属性,
// 存放在props对象中。现在,把剩余的参数转换回arg/argv向量。
Ice::stringSeqToArgs(args, argc, argv);

// 初始化通讯器。
Ice::InitializationData id;
id.properties = props;
Ice::CommunicatorPtr ic = Ice::initialize(argc, argv, id);
// 创建通讯器之后,argc/argv只包括与Ice属性和Filesystem属性无关的选项。
// ...
}

3.4、实用操作
.clone 创建一份属性集副本。
.load 从指定配置文件中装载属性集。

4、未用属性
Ice.Warn.UnusedProperties 设置为非零。若属性设置但未读过其值,在通讯器销毁时,会发出警告,用于检查拼写负荆请罪。缺省为零,表示禁用。

分享到:
评论

相关推荐

    ICE中间件资料大全

    2. **安装与配置**:指导读者如何在不同操作系统上安装和配置ICE环境。 3. **IDL语言**:深入讲解ICE的接口定义语言,包括基本类型、结构体、异常、接口等,并展示如何定义服务接口。 4. **客户端和服务端编程**:...

    JtagIce仿真器自制资料[电路和Firmware]

    JtagIce自制资料, 包括电路图和Firmware。经过亲自验证测试OK的。 其中电路图貌似支持JtagIce和STK500, 我验证过JtagIce没有问题,但是STK500的功能却不管用。不过我们也是主要使用JtagIce来仿真和通过Jtag口烧录...

    java ice资料

    8. **服务发现:** ICE可以通过目录服务或配置文件实现服务的自动发现,增强了系统的动态性和灵活性。 9. **线程模型:** 理解ICE的线程模型对于优化并发性能至关重要。 10. **调试工具:** ICE提供了丰富的诊断...

    开始玩ICE

    使用ICE进行开发时,通常需要配置ICE运行环境,包括设置环境变量,编译接口定义文件,然后编译和运行客户端和服务端程序。调试时,可以利用ICE提供的日志和调试工具来跟踪问题。 总之,“开始玩ICE”意味着开始...

    ice.rar_ICE_ICE 开发_ICE CORBA_corba_ice接口

    ICE的核心概念包括代理(Proxy)、骨架(Skeleton)、适配器(Adapter)和 Slice定义语言。代理是客户端对象,用于调用远程服务;骨架是服务器端对象,处理来自客户端的调用;适配器是网络通信层,负责在不同进程中...

    PlayWithSpringBoot::ice_cream:体验SpringBoot以及一些个人笔记(有时也写点不相关的)的仓库https://github.comxiaop1ngPlayWithSpringBoottreemasterdoc

    添加了mybatis-plus和Lombok 测试使用Guava 添加了JWT认证方式 升级springboot 2.1.6.RELEASE 添加了mq的入门 添加了redis的入门 记忆快取 添加了email的入门 添加了数据库连接池 添加了作动器(系统监控) 添加了...

    大数据知识仓库涉及到数据仓库建模、实时计算、大数据、数据中台、系统设计、Java、算法等代码

    5、Hadoop生态圈的学习笔记,主要记录HDFS、MapReduce、Yarn相关读书笔记及源码分析等 5.1 HDFS Hadoop快速入门 HDFSOverView Hadoop广义生态系统 Hadoop高可用配置 HadoopCommon分析 HDFS集群相关管理 HDFS Shell ...

    Icecream Password Manager(密码管理软件) v1.16 免费版.zip

    Icecream Password Manager功能介绍 1、主密码 唯一需要记住的密码。 2、安全笔记 在密码管理器的安全笔记中保护您的想法。 3、安全 领先的加密标准,保护您的隐私。 4、浏览器插件 从您最喜爱的浏览器即时...

    新型反激变换器准谐振控制器ICE1QS01及其应用电路与设计

    ICE1QS01是一种由英飞凌公司推出的准谐振控制器,专门用于设计和实现开关电源的反激变换器。这种控制器的特点在于支持低功率待机和功率因数校正(PFC),能够降低设备在待机状态下的功率消耗,并优化电源的功率因数...

    ICE3BS03LJG 英飞凌芯片 INFINEON 中文版规格书手册.pdf

    Infineon Technologies AG 提供了全面的技术支持,包括技术文档、应用笔记、设计指南和技术支持服务等。 七、法律免责声明 Infineon Technologies AG 对于本文档中的信息不承担任何保证或责任。 八、版权所有 ...

    ICE2QR0665G 英飞凌芯片 INFINEON 中文版规格书手册.pdf

    ICE2QR0665G是一款由英飞凌公司(INFINEON)研发的高性能、高效率的650V准谐振CoolSET™集成电路,适用于各种电源转换器和适配器。该芯片在设计上注重低待机功耗、高效能和可靠性的优化,广泛应用于LCD显示器、蓝光...

    ICE3AR10080JZ 英飞凌芯片 INFINEON 中文版规格书手册.pdf

    ICE3AR10080JZ 英飞凌芯片是 INFINEON 公司出品的一种功率 MOSFET 芯片,主要应用于电源管理和 DC-DC 转换器等领域。本手册是 INFINEON 公司提供的规格书手册,旨在为设计师和工程师提供详细的技术信息和使用指南。 ...

    ice_chen_linux_command

    标题中的“ice_chen_linux_command”暗示了这是一个关于Linux命令的学习资源,可能是由用户“ice_chen”整理的个人笔记或者教程。描述中提到“用于查询Linux下常用命令操作”,意味着这个压缩包可能包含了一个详细的...

    infineon-an基于ICE1HS01G的半桥式LLC谐振变流器设计.pdf

    Infineon Technologies发布的这份应用笔记(Application Note)详细介绍了如何使用ICE1HS01G器件来设计半桥式LLC谐振变流器。该文档版本为V1.0,发布日期为2009年8月12日。这份应用笔记对于那些希望了解或设计基于...

    ICE3AR10080CJZ 英飞凌芯片 INFINEON 中文版规格书手册.pdf

    ICE3AR10080CJZ 芯片具有高switching频率、低导通电阻和高效率等特点,适用于高频率开关电源、DC-DC转换器、电源模块等应用场景。该芯片还具有优秀的热性能和可靠性,能够满足各种苛刻的电源应用要求。 3. 安全警告...

    protege-owl

    例如,如果属性“hasTopping”的定义域是“Pizza”,那么将“hasTopping”应用于“IceCream”会推理出“IceCream”是“Pizza”。 此外,属性可以有子属性,例如“isParentOf”是“isAncestorOf”的子属性。 属性...

    传智播客安卓4.0笔记

    - `AndroidManifest.xml`:应用程序的清单文件,定义应用的基本属性和权限。 - `R.java`:编译资源文件后生成的类,提供资源ID。 4. **软件安装过程**: - APK文件生成后,被复制到系统指定目录 `/data/app/`。 ...

    关于嵌入式系统设计的笔记

    2. **配置开发主机**:设置MINICOM作为调试监视器和键盘输入工具,配置NFS网络文件系统。 3. **BOOTLOADER**:开发或修改BOOTLOADER程序,如U-Boot,用于引导操作系统。 4. **移植LINUX**:下载预移植的LINUX,添加...

    IAR for AVR学习笔记

    - **设置调试器**:连接适当的AVR调试器,如JTAGICE或USBasp,确保IDE能够识别并正确配置。 - **调试模式**:点击“Debug”启动调试会话,可以在代码中设置断点,使用单步执行、运行到光标、查看寄存器和内存值等...

Global site tag (gtag.js) - Google Analytics