在Apache Felix中声明@Reference Annotation的Target参数

时间:2012-08-07 12:21:07

标签: reference annotations apache-felix

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

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

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

如何声明此参数。

1 个答案:

答案 0 :(得分: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为我生成这些方法。