OSGi Service 和 Bundle扩展点 的区别,谢谢大家

2019-03-25 13:43|来源: 网路

我在看OSGi进阶的文章时一事不太明白,有一个留言板的实例。写一个HibernateModule模块,对外通过OSGi的DS方式对外提供commonDAO和SessionFactory的Service,

<component name="CommonDaoComponent">
<implementation class="cn.org.osgi.module.hibernate.service.impl.CommonDaoComponent"/>
<reference name="SessionService" interface="cn.org.osgi.module.hibernate.service.SessionService" bind="setSessionService" unbind="unsetSessionService" policy="dynamic"/>
<service>
<provide interface="cn.org.osgi.module.hibernate.service.CommonDaoService"/>
</service>
</component>

而HibernateModule还对外提供了一个扩展点是:
<plugin>
   <extension-point id="HibernateExtension" name="cn.org.osgi.hibernate.extension" schema="schema/hibernateExtension.exsd"/>
</plugin>

我想问一下,这OSGi对外提供的Service 和 这个bundle对外提供的扩展点性质一样么?
可不可以把这个扩展点写成Service的形式,对外提供服务呢?

十分感谢,大家~~:)

相关问答

更多
  • 嗯,对我来说,如果发生错误,应该抛出异常似乎是合乎逻辑的。 基本上,你正在做的是模拟启动方法中BundleActivator的行为。 当start方法返回时没有异常(否则它保持在RESOLVED),该包进入ACTIVE状态。 我在DS规范中找到了一个有点合适的段落(我突出了有趣的部分): 组件实例必须在可以停用之前完成激活。 一旦组件配置被取消激活或由于异常而无法激活 ,SCR必须解除绑定所有组件的绑定服务,并放弃对与激活关联的组件实例的所有引用。 OSGi 4.2 cmpn规范中的第112.5.6节P.3 ...
  • 在2年前对这个问题进行了长时间的努力思考后,我发现建议的解决方案,即作为工厂的服务,是最好的解决方案。 原因是相关的类型安全。 声明式服务确实有内置的可能性,使用组件工厂可以创建组件实例,它的使用并不像安全工厂那么容易。 我也考虑将这个概念放在框架中,但也缺乏简单的工厂服务。 所以是的,你的想法是我所知道的最佳解决方案。 After thinking long and hard about this issue 2 years ago I found that the proposed solution, ...
  • 我在我的博客上描述了http://tomsondev.bestsolution.at/2012/12/10/my-recommended-project-structure-for-javafx-e4-projects/我们建议遵循的结构,向导正是产生的这个结构,它不是强制性的,所以如果你认为没有意义,那么你可以自由地提出不同的东西,工具或其他任何东西都取决于设置! I've described on my blog http://tomsondev.bestsolution.at/2012/12/10/m ...
  • 我想你会谈论felix注释。 您可以在任何方法或成员变量前面使用@Property。 但是,这并不意味着将调用该方法或设置变量。 唯一的好处是,如果你有一个特定的变量来保存属性的值(通过在activate方法中赋值),你的类可以根据注释更自我解释。 另一方面,您可以列出@Properties注释中的属性。 我更喜欢这种方式,因为在这种情况下,我可以准确定义属性的顺序,它们应该如何出现在生成的元类型xml文件中(以及webconsole上)。 也可能发生,配置属性未分配给任何成员变量,它仅在activate方 ...
  • 任何可以进入清单文件的头文件都可以作为一个元素进入bundle插件的配置中。 例如, org.apache.felix maven-bundle-plugin 2.2.0 true ...
  • 你可以看看我的使用Apache Aries的OSGi上的JPA教程,如Holly推荐的。 You can take a look at my tutorial for JPA on OSGi using Apache Aries like Holly recommends.
  • Apache ServiceMix使用Apache Karaf作为其内核,支持可插拔部署单元。 虽然OSGi是主要单位。 您可以部署JBI工件(例如,JBI用作Apache ServiceMix 3.x的部署单元)。 因此,我们提供了作为在SMX 4.x中运行JBI的迁移路径。 也可以部署普通的WAR文件。 例如,您可以在deploy目录中删除.war文件。 如果从shell部署,则需要在部署程序前加上war,因此它知道使用war deployer。 这里有一些关于各种可插拔部署器的文档http://fus ...
  • 您可以使用ComponentFactory来创建组件的实例。 请参阅Vogella的这篇文章 。 在想要以编程方式创建的组件上使用它: @Component(factory="fipro.oneshot.factory") 然后在另一个组件中,您可以获得ComponentFactory: @Reference(target = "(component.factory=fipro.oneshot.factory)") private ComponentFactory factory; 并从中创建一 ...
  • PAX考试和PAX亚军不会一起使用。 很久以前PAX考试过去依赖于PAX Runner,但自从PAX考试的第2版(当前版本为4)以来,情况就不再如此。 因此,请坚持使用PAX考试的官方文档,因为您将PAX Web添加为问题的另一个标签,只需看看PAX Web本身如何使用PaX Exam进行集成测试。 Pax Web的迭代有很多资源可供使用 PAX Exam and PAX Runner won't work together. A long long time ago PAX Exam used to re ...
  • 上面的代码将使用相同的接口注册两个不同的服务。 这是对的。 问题是通过接口绑定服务的消费者将获得这些服务之一,并且无法确定哪个服务是正确的。 解决此问题的一种方法是为每个服务注册添加属性。 例如,您可以在pdf上设置一个proerty type = pdf。 然后客户端可以通过接口和类似(type = pdf)的ldap过滤器绑定服务。 然后它只匹配pdf ExportService服务。 The code above will register two different services with th ...