私は現在、「標準 OSGi」から OSGi と Vaadin を使用して Spring DM を使用するモジュラー Web インターフェイスの非常に優れたデモを移植しています。
1 つの 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){}
あなたの助けはいつも最も感謝しています!