osgi - 哪个在 SCR 运行时被称为第一个激活函数或绑定(bind)函数

标签 osgi equinox apache-felix knopflerfish

我对组件激活时调用哪个函数激活函数或绑定(bind)函数的顺序感到困惑。在我看来,激活函数函数将首先被调用,因为 Bind 函数用于绑定(bind)服务。但正如我们所知,所有目标服务都首先进入组件上下文,然后组件才会被激活。

请清除我的疑问。

最佳答案

在绑定(bind)所有静态引用之后,即在调用绑定(bind)方法之后,将调用 activate 方法。所以在激活过程中,您可以确定静态引用的值不会改变。

然而,对于动态引用,所有的赌注都是关闭的。事实上,在执行激活方法期间,动态引用的值可能会在不同线程中多次更改。

更新:您没有询问停用问题,但您可能会发现此信息同样有用。 deactivate 方法将在任何静态引用未绑定(bind)之前被调用。例如:如果您绑定(bind)到具有静态引用的服务并且您绑定(bind)的服务消失了,那么 SCR 将首先调用您的 deactivate,然后调用您的 unbind 方法,最后它会释放组件实例以用于垃圾收集。

关于osgi - 哪个在 SCR 运行时被称为第一个激活函数或绑定(bind)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15782740/

相关文章:

java - 尝试在 OSGI 中创建抽象包

java - Spring-DM OSGI 服务和 @Autowired 的问题

eclipse - Java 8 & 缺少所需的能力 Require-Capability : osgi. ee;过滤器 ="(&(osgi.ee=JavaSE)(version=1.8))"

java - 如何实例化多个 OSGi 服务?

java - Karaf 中未列出的服务,可能是什么原因?

java - 如何隐藏 OSGi Felix 组件属性中的密码?

java - "Unresolved requirement: Import-Package: javax.ws.rs"在 Tomcat 上为 Liferay 部署 OSGi 模块时

java - 用于在工作区更改时重新启动 osgi 包的 Eclipse 工具

osgi - 如何根据配置绑定(bind)动态引用?

spring - 在 Impala 和 OSGi 之间进行选择