OSGi 中为什么还有Eclipse Extension point的方式?

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

各位Java高手们,咨询大家一个问题

我现在学习OSGi的问题,看了两个资料:OSGi实战和OSGi进阶。但在看到OSGi进阶的时候,里面有好多例子,都是用到了Extension Point的开发方式,我不太明白是说必须这样第一扩展点,才能达到动态扩展的效果么?

难道不可以使用Declarative Services方式么?

在OSGi中使用Extension point有什么好处,或者有什么作用么?



谢谢大家:)
问题补充:
谢谢lggege的回答,那也就是说:OSGi中提供Service的方式 和 Plugin中使用Extension Posint方式是同一级别的了?两种使用哪个都行是么?

还有那就是说Bundle和Plugin是同一个概念楼?:)

万分感谢~

相关问答

更多
  • 我会考虑Apache Felix Http桥 。 对我来说,它比古代的Equinox桥更好(我搞砸了一段时间,但从来没有让它工作得很好),在我转向Felix之后,我得到了很快的工作。 如果我理解正确,那么您希望创建一个可以在任何Java EE服务器中部署的“纯文本”war文件。 如果是这样的话,你的战争档案中没有OSGi,所以我不认为Bnd会为你做任何事情。 I'd consider the Apache Felix Http bridge. It worked a lot better for me th ...
  • 官方下载在OSGi Alliance网站上 。 在此页面上,您将查找“OSGi Core Release 6注释代码”。 The official download is on the OSGi Alliance website. On this page you are looking for "OSGi Core Release 6 Annotation Code".
  • 有时候就像添加清单头文件一样简单,以便在OSGi沙箱中发挥很好的jar功能。 有时罐子/图书馆在OSGi的背景下做“调皮”的事情。 一条黄金法则是避免使用“Class.forName()”,因为OSGi使用类加载器的方式,否则在单个类加载器环境中完全有效。 我将源代码拖放到SnakeYaml,它们是基于bean的加载器使用Class.forName。 好消息是看起来有一个构造函数CustomClassLoaderConstructor让你使用自己的类加载器,并且当你制作核心Yaml解析器对象时使用它。 关键 ...
  • 我认为在设置notes.ini变量后,您需要重新启动服务器,而不仅仅是重新启动HTTP。 另外, tell http restart不会重新加载JVM。 您需要restart task http才能完全重启HTTP。 All though I had signed the content of the update site with my ID the problem was that this was a new server install and the Security settings in t ...
  • OSGi是一个通用的模块系统。 它试图不偏向某个领域。 虽然它起源于嵌入式领域,但我认为现在使用OSGi的开发人员中有很小一部分属于该领域。 我认为任何具有合理复杂性的代码都会受益于某种模块化框架,OSGi是一个非常好的选择,尽管存在一些障碍: OSGi是基于Java的,所以非java项目已经不在了。 (除非你喜欢冒险,并且想尝试像Apache Celix那样的东西) 一些执行某些类加载技巧的库可能不适合用于OSGi(例如Hibernate) OSGi有一点学习曲线,所以准备投入一些时间和精力。 OSGi ...
  • 有一个称为远程服务(以前称为分布式OSGi)的RFC,它完全符合您的要求。 RFC几乎已经完成,Apache CXF和Eclipse ECF已经分别提供了2个实现。 这两种实现都允许对OSGi服务进行透明远程处理。 您只需像往常一样定义OSGi服务,并添加一些配置参数以使其成为远程服务。 检查: http://cxf.apache.org/distributed-osgi.html There is a RFC called Remote Services (formerly Distributed OSG ...
  • 你的类路径上是否有jersey-container-servlet模块(这个模块应该用于Servlet 3.x支持)? 你遇到这个问题的原因是Jersey无法找到合适的AsyncContextDelegateProvider (来自jersey-container-servlet模块),它使用jersey-container-servlet-core模块(Servlet 2.x支持)的实现,这种方式失败了。 The error was that the jersey modules were initiat ...
  • 东铭, 刚刚来自一个非常相似且成功的项目,请让我与您分享我的经验,为您节省一些时间和公司一些钱。 首先,ESB是8年前提出时的一个非常好的主意。 而且,他们解决了一个重要问题:您如何定义一个业务问题,以便那些讨厌的编码员能够理解? 我们的目标是开发一个系统,让商业人士创建一个软件解决方案,不需要很少讨厌的开发人员交互,从而消耗更多花在管理奖金上的资金。 为了回答这个问题,许多组织的好人提出了JBI,BPMN和其他一系列解决方案,让业务人员对他们想要“数字化”的业务流程进行建模。 但实际上,它们在一个非常关键 ...
  • 您无法设置该属性。 该属性是告诉您它支持bootclasspath扩展的框架。 大多数常用框架不支持它,因为它需要特殊的编码才能与JVM集成。 设置bootclasspath不是JVM上的标准选项,也不是如何重新启动JVM以使更改生效。 因此,它需要为特定的JVM和部署定制框架实现。 You can't set that property. That property is the framework telling you that it support bootclasspath extension. ...
  • 是。 上下文根需要是唯一的。 我在com.ibm.pvc.webcontainer.application扩展点上找不到任何有用的文档。 正如我在评论中提到的,我建议您改为使用org.eclipse.equinox.http.registry.servlets扩展点。 这就是DAS插件如何实现servlet(参见DAS plugin.xml )。 两个扩展点都是由从其他地方继承的OSGi插件定义的。 这就是为什么Domino文档没有涵盖它们,但我认为你会找到更多关于equinox扩展点的文档。 例如,请参阅 ...