找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3320|回复: 0

有朋友了解ACE的 ACE Serveice Configurator框架么?

[复制链接]
发表于 2009-12-25 16:59:16 | 显示全部楼层 |阅读模式
里面有3个比较重要的类
ACE_Service_Object
ACE_Service_Repository
ACE_Service_Config

其中第一个类是用于继承,然后自己写dll。

我做服务运行平台,需要用到后面两个类。
我现在的问题在于,如果单独使用第3个类,open或者reconfigure都没有问题。

但是第2个和第3个类配合使用,就有问题了。具体表现在,我使用ACE_Service_Repository中的insert后,再使用reconfigure会发现无法启动服务。

大概代码如下:
  1.     ACE_DLL handle;
  2.     handle.open(dll_path.c_str(), ACE_DEFAULT_SHLIB_MODE, false);  //dll_path是std::string,内容如:D:\\mydll.dll
  3.     ACE_Service_Type *service_type = new ACE_Service_Type(ACE_TEXT(ServiceName.c_str()), 0, handle, true);   //ServiceName是std::string,内容如:MyDynamicObj
  4.     int result = repository->insert(service_type);    //result的值为0,也就是说insert成功了的。repository的定义:ACE_Service_Repository  *repository = ACE_Service_Repository::instance();
复制代码
然后我修改了svc.conf,再使用ACE_Service_Config::reconfigure();,仅仅是在DOS窗口输出如下:

ACE (5364|2380) SG: open_i - this=003E9138, opened=0, loadstatics=1
ACE (5364|2380) SG::init_svc_conf_file_queue - this=003E9138, repo=003E9200
ACE (5364|2380) DLL_Handle: open ("D:\Mydlld.dll", 0x0) -> succeeded: 操作成功完成。
ACE (5364|2380) DLL_Handle: open - D:\Mydlld.dll (10158080), refcount=1
ACE (5364|2380) DLL_Handle: open - D:\Mydlld.dll (10158080), refcount=2
ACE (5364|2380) SR::insert - repo=003E9200 [0], name=MyDynamicObj (new) (type=00000000, object=00000000, active=1)
beginning reconfiguration at Fri Dec 25 16:57:48 2009

并没有调用我希望加载的服务。PS:我的服务加载后会不断打印字符串的。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-23 13:24 , Processed in 0.016507 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表