在我的富客户端应用程序中,有一个更改服务器地址的设置。当服务器地址更改时,我希望能够更改 ECF 查找远程服务 (R-OSGI) 的位置。看起来 ECF 支持两种通过 WAN 查找 ECF 服务器的机制:edef 或 zookeeper。我可以不在乎我使用哪一个,只要它可以工作并且允许我在不关闭应用程序的情况下更改服务器。
如何更改 ECF 在查找远程服务时使用的服务器地址?
在我的富客户端应用程序中,有一个更改服务器地址的设置。当服务器地址更改时,我希望能够更改 ECF 查找远程服务 (R-OSGI) 的位置。看起来 ECF 支持两种通过 WAN 查找 ECF 服务器的机制:edef 或 zookeeper。我可以不在乎我使用哪一个,只要它可以工作并且允许我在不关闭应用程序的情况下更改服务器。
如何更改 ECF 在查找远程服务时使用的服务器地址?
查看 OSGi Configuration Admin,您可以在执行时修改组件属性(即,您可以修改 DS.xml 中存在的服务的属性,例如):
Configuration conf = configAdmin.getConfiguration("YourComponentName");
Dictionary dict = conf.getProperties();
//check things or whatever
dict = new Hashtable();
dict.put("service.exported.interfaces", "*");
dict.put("service.exported.configs", "ecf.generic.server");
dict.put("ecf.exported.containerfactoryargs", "ecftcp://localhost:3789/server");
conf.update(dict);
之后,我必须从命令行重新启动组件以让 ECF 创建容器:
disable yourComponentID
enable yourComponentID
我仍然不知道如何自动完成这部分。我仍在调查配置管理员和远程服务管理员。如果您或其他人可以提供帮助,那就太好了;)
我也对你的问题感兴趣。我认为没有太多关于 WAN 中的分布式服务的文档。