Я использую Apache Aries 0.2 в Servicemix 4.3.1 и создаю cm: managed-service-factory. Создание сервисов с файлами .cfg отлично работает (за исключением #ARIES-584), но свойства из файла .cfg не вводятся в объект службы. Они правильно устанавливаются в ConfigAdmin, только мои методы настройки компонента никогда не вызываются для значений в моем файле конфигурации.Оушен управляет-сервис-завод также управляет свойствами?
Я думал, что должен использовать свойства cm: managed-properties или что-то подобное в моей фабрике управляемых сервисов, но для этого потребуется отдельный pid, поэтому не кажется правильным.
Если я не помещаю тэг свойства, то значение никогда не будет установлено. С тегом свойства, тогда только значение по умолчанию устанавливается, но никогда не является фактическим значением файла конфигурации.
Я не могу найти документацию для использования подпроекта CMY Aries, за исключением blueprint-sample.xml, которая не отображает управляемые свойства внутри фабрики управляемых сервисов. Я действительно пытаюсь использовать Servicemix, но вокруг каждого угла отсутствует документация, сломанные или отсутствующие функции или ошибки, которые влияют на основные функции.
Как документация spring, так и gemini указывают, что их реализации на основе управляемых сервисов также должны функционировать как управляемые свойства.
foo.xml:
<blueprint>
<cm:managed-service-factory id="myfoo-msf" factory-pid="my.msf" interface="my.IFoo">
<cm:managed-component class="my.Foo">
<property name="name" value="default />
</cm:managed-component>
</cm:managed-service-factory>
</blueprint>
IFoo.java
package my;
public interface IFoo {
public String getName();
public void setName(String name);
}
Foo.java
package my;
public class Foo implements IFoo {
private String name;
public void setName(String name) {
this.name = name;
System.out.println("name set to: " + name);
}
public String getName() {
return name;
}
}
my.msf-1.cfg
name=name1
my.msf-2.cfg
name=name2
System.out
name set to default
name set to default
конфигурации: proplist
service.pid = my.msf.xxxxxxx-xx-xx-xxxxxxxxxxxxxxx
name = name1
service.factoryPid = my.msf
service.pid = my.msf.yyyyyyy-yy-yy-yyyyyyyyyyyyyyy
name = name2
service.factoryPid = my.msf
Я пробовал это с использованием Spring, и свойства были загружены должным образом из файла конфигурации в мою службу с использованием метода setter ... Мне даже не пришлось помещать тег свойства. Я бы использовал Spring, затем , но я не могу выполнять служебные свойства с помощью Spring :(... Spring # OSGI-747. Почему нет ни одной рабочей реализации этого. –
Я пробовал DS для этого, и, похоже, он работает. –