В настоящее время я портирую очень хорошую демонстрацию модульного веб-интерфейса с использованием OSGi и Vaadin из «стандартной OSGi» для использования Spring DM.
Один файл конфигурации OSGi в списке:
<reference name="PersonListener"
interface="com.siemens.ct.pm.model.IPersonListener"
bind="addPersonListener"
unbind="removePersonListener"
cardinality="0..n"
policy="dynamic"/>
Я понимаю, что в Spring DM это должно быть сделано с использованием слушателей, следовательно, следующая конфигурация bean-компонента:
<osgi:list id="personListeners" interface="be.nnuytten.pm.model.IPersonListener" cardinality="0..N">
<osgi:listener ref="personManager" bind-method="addPersonListener" unbind-method="removePersonListener" />
</osgi:list>
В справочной документации я обнаружил, что методы addPersonListener и removePersonListener нуждаются в следующей подписи:
public void anyMethodName(ServiceReference ref);
Все сказано и сделано, но теперь возникает вопрос:как мне работать с этим объектом ServiceReference?В частности, как я могу добиться следующего с помощью ServiceReference?
public synchronized void addPersonListener(IPersonListener personListener) {
logger.info("add personListener: " + personListener);
personListeners.add(personListener);
}
Теперь те же функции должны быть реализованы
public void addPersonListener(ServiceReference ref){}
Ваша помощь, как всегда, наиболее ценится!