Изменение адреса сервера, используемого ECF при поиске удаленных служб?
В моем приложении с расширенными возможностями есть настройка для изменения адреса сервера. Когда адрес сервера меняется, я хочу иметь возможность изменить, где ECF ищет удаленные службы (R-OSGI). Похоже, что ECF поддерживает два механизма поиска сервера ECF по глобальной сети: edef или zookeeper. Меня не волнует, какой из них я использую, пока он работает и позволяет мне менять серверы, не закрывая приложение.
Как изменить адрес сервера, используемый ECF при поиске удаленных служб?
1 ответ
Взгляните на 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
Я до сих пор не знаю, как сделать эту часть автоматически. Я все еще исследую в Администраторе конфигурации и Администраторе удаленных служб. Если вы, или другие, можете помочь, было бы неплохо;)
Меня также интересует ваш вопрос. Я думаю, что нет большого количества документации о распределенных сервисах в глобальных сетях.