有朋友了解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]