yangyunzhao 发表于 2009-12-25 16:59:16

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

里面有3个比较重要的类
ACE_Service_Object
ACE_Service_Repository
ACE_Service_Config

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

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

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

大概代码如下:    ACE_DLL handle;
    handle.open(dll_path.c_str(), ACE_DEFAULT_SHLIB_MODE, false);//dll_path是std::string,内容如:D:\\mydll.dll
    ACE_Service_Type *service_type = new ACE_Service_Type(ACE_TEXT(ServiceName.c_str()), 0, handle, true);   //ServiceName是std::string,内容如:MyDynamicObj
    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 , name=MyDynamicObj (new) (type=00000000, object=00000000, active=1)
beginning reconfiguration at Fri Dec 25 16:57:48 2009

并没有调用我希望加载的服务。PS:我的服务加载后会不断打印字符串的。
页: [1]
查看完整版本: 有朋友了解ACE的 ACE Serveice Configurator框架么?