gpt4 book ai didi

java - 在 Spring DM 中使用 ServiceReference 对象

转载 作者:行者123 更新时间:2023-12-01 05:47:57 25 4
gpt4 key购买 nike

我目前正在使用“标准 OSGi”中的 OSGi 和 Vaadin 移植一个非常好的模块化 Web 界面演示,以使用 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>

在引用文档中,我发现 addPersonListenerremovePersonListener 方法需要以下签名:

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){}

一如既往,我们非常感谢您的帮助!

最佳答案

如果问题仍未解决。

我对 Virgo 做了类似的事情(基于 Spring DM)。您不必使用 ServiceReference。这一切都取决于方法签名:

<osgi:list id="xyzzyList" interface="Xyzzy"
cardinality="0..N">
<osgi:listener ref="xyzzyRegistry" bind-method="onBind" unbind-method="onUnbind" />
</osgi:list>

Xyzzy 实现中的 onBind() 方法

public void onBind(Xyzzy xyzzy, Map<?, ?> properties) {
register(xyzzy);
}

问题当然是,你如何处理 map 。我真的什么也没做。

关于java - 在 Spring DM 中使用 ServiceReference 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com