xuzhitong2010 发表于 2010-3-22 10:35:23

关于ACE的reconfigure为什么没有生效?

使用ACE动态服务配置类实现了几个动态库,加载的时候使用ACE_Service_config::open启动,通过-f指定了自定义的配置文件mysvc.conf, 该配置文件根据程序配置项去生成,重配置的时候根据修改后的配置项重新生成mysvc.conf,之后调用ACE_Service_config::reconfigure,生成的配置文件没有问题,先remove 服务名,再重新加载,但是却没有生效,因为即使删除了某个动态库的配置,还能查看到对应的服务存在,小弟怀疑是reconfigure的时候没有读mysvc.conf,看了半天ACE的代码也没什么头绪,望各位大侠帮忙解决!

winston 发表于 2010-3-22 11:56:18

什么操作系统环境?
linux?
windows?
机制是有差别的。

xuzhitong2010 发表于 2010-3-22 13:44:05

linux,是多线程,reconfigure没有在主线程调用,这个有没有问题?

modern 发表于 2010-3-22 13:48:43

是否运行了Reactor事件循环

xuzhitong2010 发表于 2010-3-22 13:54:52

运行了,已经开始执行了reconfigure函数,能看到ACE_DEBUG的日志,但是动态库的fini确实没有执行,证明没去执行那个mysvc.conf

xuzhitong2010 发表于 2010-3-22 14:06:28

2009-04-17 08:06:00  gg913488771
可以调用
ACE_Service_Config::reconfigure();
进行刷新,如何生成的配置文件变了,调用reconfigure();
另外也可以向ACE_Service_Manager发送刷新请求,它内部会调ACE_Service_Config::reconfigure();

如果是多线程,注意了要主线程才会具有刷新权力,其它的调用刷新没有效果的

这是google上搜索到的一位仁兄的帖子,有这么一说法吗?
页: [1]
查看完整版本: 关于ACE的reconfigure为什么没有生效?