首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPojo实例的创建和管理

iPojo实例的创建和管理
EN

Stack Overflow用户
提问于 2015-04-20 20:04:48
回答 1查看 111关注 0票数 0

由于我们忘记处理构造的实例,我目前在iPojo泄漏方面遇到了很多问题。我认为这是使用ipojo技术使用命令式实例化不可避免的缺点:基本上是通过调用factory.createComponentInstance(config)来说明何时需要服务,所以您有责任说明什么时候完成它。这迫使我保留两个引用,一个用于我想要使用的服务,另一个用于iPojo ComponentInstance,以便当使用者完成时,它可以调用componentInstance.dispose()。如果没有,就会有漏洞

在消费者不需要处理iPojo服务及其实例的生命周期的情况下,是否有更多的声明性方法来做到这一点?

为了简化我的用法,假设有一个带有按钮的UI,每次按下该按钮,我都需要一个新的、唯一的iPojo服务实例。理想情况下,当实例超出作用域时,该实例将是GC'd,而不需要使用者做任何事情

也许我的错误是使用服务作为实例,但我有三个理由使用服务而不是普通的类和调用new

  1. 服务的推动力应该是可替代的。
  2. 使用者应该依赖于一个接口,而不是一个实现/提供程序,这不仅是因为#1,还因为依赖于一个具体的驱动程序时所提取的更多的传递依赖关系。
  3. 服务impl本身有一些依赖项,我希望它能被iPojo (依赖注入)注入。

作为第二个请求,有没有人知道任何使用iPojo的开源(即不是虚拟的,演示)项目,我可以作为iPojo良好使用的例子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-21 06:59:38

与其创建组件实例,您可能应该使用自定义的“创建策略”。因此,您将只有一个组件实例,但是管理了几个“实现”实例(服务对象)。您可以决定何时创建和释放这些对象。关于http://felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/providing-osgi-services.html#service-serving-object-creation的更多信息。

关于使用iPOJO的项目,您可以查看Wisdom框架,它依赖于iPOJO:http://wisdom-framework.org (可用代码:github.com/智-框架/智/)

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

https://stackoverflow.com/questions/29757336

复制
相关文章

相似问题

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