首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Felix SCR @Reference备忘表

Apache Felix SCR @Reference备忘表
EN

Stack Overflow用户
提问于 2015-05-25 17:31:00
回答 1查看 3.5K关注 0票数 10

我在我的应用程序中使用Apache声明性服务,我正在寻找一个备忘单,它描述了可以提供给@Reference注释的参数。有一次,我看到一个网页,里面有一张关于它的信息非常丰富的备忘单(或表格),但我似乎找不到。我认为这对很多Felix用户是有用的。我说的参数是:

  • 基数MANDATORY_UNARY, MANDATORY_MULTIPLE, OPTIONAL_UNARY, OPTIONAL_MULTIPLE
  • 策略EVENT, LOOKUP
  • 策略DYNAMIC, STATIC
  • policyOptionGREEDY, RELUCTANT

基数相当直截了当,但其他方面对我来说并不清楚。他们是做什么的,他们是如何工作的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-26 09:01:14

从官方OSGI R5简编第281页起。

参考基数

引用的基数可以指定为四种选择之一:

  • 0..1 -可选和一元。
  • 1.1-强制性和一元制(违约)。
  • 0..n -可选和多个。
  • 1.n-强制性和多重性。

战略

  • 事件策略- SCR在服务绑定、服务解除绑定或属性更新时调用组件实例上的方法。这些方法是引用指定的绑定、更新和取消绑定方法。如果需要将绑定服务的更改通知组件以进行动态引用,则事件策略非常有用。
  • 查找策略-组件实例可以使用ComponentContext的locateService方法之一来定位绑定服务。这些方法将引用的名称作为参数。如果引用具有动态策略,那么重要的是不要存储返回的服务对象,而是在每次需要时查找它。

策略

  • 静态策略是最简单的策略,也是默认策略。组件实例从未看到任何动态。在具有静态策略的引用的任何绑定服务变得不可用之前,组件配置将被停用。如果目标服务可用以替换已变得不可用的绑定服务,则必须重新激活组件配置并将其绑定到替换服务。
  • 动态策略稍微复杂一些,因为组件实现必须正确处理任何线程上可能发生的绑定服务集合中的更改。使用动态策略,SCR可以更改绑定服务的集合,而无需禁用组件配置。如果组件使用事件策略访问服务,那么将通过调用bind和unbind方法通知组件实例绑定服务集中的更改。

策略选项

  • 不情愿的-最小化重新绑定和重新激活。
  • 贪婪-通过禁用静态引用或重新绑定动态引用,最大限度地利用最佳服务。

其他felix专用资源

Felic SCR注解

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30443306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档