1

它定义了 felix SCR 注释的文档。 http://felix.apache.org/site/scr-annotations.html#SCRAnnotations-Reference

我想使用 @Reference Annotation 并且还想将目标服务设置为配置参数。

文档说:一个服务目标过滤器,用于选择要提供的特定服务。为了能够通过配置属性覆盖此值的值,必须声明此参数。如果不声明参数,则不会生成相应的声明属性

如何声明这个参数。

4

1 回答 1

1

有点晚了,但我在任何地方都找不到一个简单的例子,所以无论如何这可能对其他人有帮助。

例如,使用 Felix 注释过滤 DataSource:

@Reference(cardinality = OPTIONAL_UNARY, policy = DYNAMIC, name = "dataSource")
private DataSource dataSource;

生成此 XML:

<reference name="dataSource" interface="javax.sql.DataSource" cardinality="0..1" policy="dynamic" bind="bindDataSource" unbind="unbindDataSource"/>

根据OSGi 4.2 Compendium Spec的第 112.6 节,该属性需要附加.target

因此,在我的配置中,我将 LDAP 过滤器设置为:

dataSource.target = (some.key=some.value)

注意:我没有使用 un/bind 方法,而是让 DS 为我生成这些方法。

于 2012-10-18T11:16:15.993 回答