【发布时间】:2015-07-11 08:13:50
【问题描述】:
我需要的是每次当一些消费者需要这个服务+使用 CDI 时获取新的服务实例。我已经阅读了很多文章,但我找不到我的 2 个问题的答案。
-
如果我们使用工厂,为什么在服务消费者中我们调用工厂(http://www.rpgnextgen.com/wiki/doku.php?id=component_factory)然后我们得到服务的引用。我是说
// get factory ComponentFactory factory = (ComponentFactory) context.getService(serviceReferences[0]); // get instance ComponentInstance instance = factory.newInstance(null);
osgi inside 调用工厂时,有没有办法在服务消费者调用服务时设置具有特定接口的工厂?
- 如果在服务消费者中我们调用工厂,那么为什么在事实上的工厂是组件时我们将服务标记为组件?
问题是没有工厂我做@Inject @OsgiService (javase) 或@OSGiService (javaee) 并且我可以使用不同的过滤器并且代码非常清晰。使用组件工厂我(据我所知)失去了这种能力。
【问题讨论】:
-
恐怕我不明白你的问题。
-
@BJ Hargrave 感谢您抽出宝贵时间。我会尽力解释。我们有三个实体:服务消费者、组件工厂和组件。据我了解,如果我想在服务消费者中获取组件,那么在服务消费者中我必须调用 factory.newInstance()。我无法理解其中的逻辑。例如,在 javafx 中,您只需使用某个接口设置 somefactory,然后忘记该工厂,因为它是“自动”使用的。我不明白为什么在 osgi 中我应该调用工厂,而不是通过 osgi 获取对组件的引用(它 osgi 必须调用工厂)。我能解释一下我的第一个问题吗?
-
不需要使用ComponentFactory。
-
@BJ Hargrave 你能告诉我应该读什么吗?
标签: java osgi apache-felix