存档

文章标签 ‘OSGi’

OSGi 4.2 发布

2009年10月7日 没有评论

OSGi 4.2 规范最终版已经发布.

OSGi 4.2 新版的一些内容:

  • 框架加载(Framework Launching)。虽然我们可以从Java应用中运行嵌入式OSGi引擎(比如Equinox的Servlet桥),但这种方式却将应用与具体的引擎绑定在了一起。借助于包装器(比如Pax Runner)可以通过相对简单的方式将特定于引擎的内容编码到引擎中来启动。现在可以通过一种透明的机制进行加载了,这意味着可以加载一个OSGi运行时而无需担心是哪个运行时。这样我们就可以通过替换启动类路径上的JAR文件在Equinox及Felix下测试应用了。
  • 远程服务(Remote Service。过去叫做分布式OSGi及RFC 119,现在称作远程服务的技术是用于连接多个OSGi VM的。远程服务采用了服务的概念(这对于动态OSGi应用来说非常关键)并提供了一种机制以将服务公开给远程使用者(使其可以在本地使用远程服务)。并不像其他方式(比如RMI)那样,远程服务无需实现不同的接口或是抛出受检查的异常。同时它也不会假设万物都会正常工作,而是认为OSGi服务是动态的,无论如何服务都能够在OSGi环境下抛出并处理异常。
  • Blueprint服务(Blueprint Service)。对于熟悉Spring IoC与DI的开发者来说会发现Blueprint服务与其有异曲同工之妙。客户端可以根据外部的配置文件来决定连接到哪些服务上,同时还会动态连接这些服务。就像声明式服务那样,你可以约束所用的服务类型(比如强制与否等),但与声明式服务不同的是,在缺少服务的情况下Blueprint服务会提供一个相应的代理。在客户端代码与服务进行交互时,客户端会被阻塞住直到定位到服务之后。最后,凭借Blueprint服务之类的特性,我们可以避免应用中出现特定于容器的代码,这样无论系统运行在OSGi运行时内部还是外部都是大有裨益的。
  • Bundle跟踪器(Bundle Tracker)。OSGi早就有了一个服务跟踪器(Service Tracker)用于监控进出的服务,Bundle跟踪器是对服务器跟踪器概念的一个延伸,用于监控bundle的信息。此前服务可以通过BundleListener来动态查看进出的bundle,而BundleTracker也达到了同样的高度,就像ServiceTracker之于ServiceListener一样。我们可以通过这个特性执行动态注册之类的功能,就好象是Blueprint服务或声明式服务读取或处理元数据一样。比如说,Web引擎可能会通过HttpService自动扫描新安装的bundle和自动注册的Servlet。
  • 服务钩子(Service Hook)。除了判定当前的服务外,我们还可以拦截服务之间的事件并对其进行过滤。这可用来实现基于角色的许可模型或是根据产品的不同而开启不同的功能集。此外还可以通过拦截另一个bundle的事件而提供代理(或是负载平衡)同时又隐藏这些事件,然后用另一种机制进行代理(比如说分布式服务)。监听器钩子可以按需实现这些功能而无需提前注册。
  • 条件许可(Conditional Permission)。OSGi 4.2中许可的一大变化是增加了DENY访问及允许访问的能力。通过与证书签名的结合,这种方式可以显式指定某个bundle的子集上都允许哪些许可权限。这有助于创建安全的OSGi平台,可以阻止安装那些未授权的bundle。

详细内容请见

分类: Architecture 标签:

在 Nokia N800 上运行 OSGi

2008年3月21日 没有评论

java-and-osgi-on-n800.jpg

作者通过简单的步骤就在 Nokia N800 上运行起了 OSGi, 这里的OSGi选用了 Eclipse Equinox.

有 Nokia N800 的朋友也可实验一下.

分类: Java, Mobile & Embedded 标签:

Eric Newcomer谈OSGi的未来

2007年7月28日 没有评论

IONA公司CTO Eric Newcomer, OSGi企业工作组的联合主席, 讲述了OSGi的变革以及它和SOA、ESB之间的关系, 并认为OSGi是一个普适于SOA架构的平台, 这一点已经在JBI V2和Eclipse的SOA Runtime Framework项目中体现出来。

Eric Newcomer同时也表示Sun应该在Java EE7中选择OSGi作为容器, Sun选择接受OSGi还是继续与之对立, 是关乎Java未来的一件大事。他希望Sun在OSGi的问题上, 能尽快回归理性。其实反过来看, 如果Sun真的继续与OSGi对立, OSGi的未来或许更为光明, 因为业界形势已经是今非昔比了。

全文

分类: Java, SOA & BPM & SaaS 标签: ,

了解 Eclipse 插件如何使用 OSGi

2006年9月23日 没有评论

Eclipse 集成开发环境(IDE)和 Eclipse Rich Client Platform(RCP)应用程序的核心由 Open Services Gateway Initiative(OSGi)规范的实现驱动。本文通过描述对 Eclipse 平台而言插件是什么,并跟踪从 Eclipse V2.1 到今天基于 OSGi 的实现中插件的发展,阐明了 Eclipse 与 OSGi 的关系。还解释了 OSGi manifest.mf 文件选项以及通过 Eclipse 提供的添加项。

Eclipse 已经从使用 OSGi 中大大受益,获得了以动态方式管理组件生命周期的一个健壮的系统。新的使用方法每天都在被发掘,比如服务器层特征 servlet、JavaServer Pages 以及 Eclipse 样式插件中的其他 HTTP 资源。

Eclipse Foundation 已经决定在驱动 OSGi 规范向前发展的过程中扮演关键角色,以便于自己和其他人利用 OSGi。在从专用 Eclipse 插件框架转换到 OSGi 的过程中,对 OSGi 规范进行了许多添加,这些添加成了 OSGi R4 规范发行版的一部分。因此,Eclipse Equinox 项目已经成为不断发展的 OSGi 参考实现。该实现以及用于管理发展 OSGi 的 Java Specification Request(JSR) 291 的创建,保证了 Eclipse/OSGi 合作伙伴关系将在未来几年里不断取得成功。

分类: NetBeans & Eclipse 标签: ,

Objectweb JOnAS 5 将采用 OSGi 作为其架构和服务的基础

2006年6月11日 没有评论

JOnAS 4.7.4 稳定版已经发布, JOnAS 5 也在规划和设计中, 在 JOnAS 5 的规划中, 一个重要的基础设施 OSGi 被引入. 出于以下原因, JOnAS 5 将采用 OSGi 作为其架构和服务的基础.

  • OSGi enforce modularity with the Bundle concept
  • OSGi provide standard mechanism for Classes isolation and versionning
  • OSGi help us for remote artifacts deployment
  • OSGi is lightweight
  • OSGi handle dependencies issues (services inter-linking)
  • OSGi have large industry support

Besides theses items, OSGi can still be used for component-like (bundles) introspection, giving us building blocks for Autonomic Computing (System cartography, …).

在 OSGi 中, 类似Component的bundles

此外, Eclipse 的基础架构也基于 OSGI 构建

分类: Java 标签: ,

利用 OSGi 解决 Eclipse 插件难题

2006年6月3日 1 条评论

本文介绍如何在代码中为其他插件编写扩展,而不是用 Eclipse V3.2 的动态扩展 API 创建对其他插件的依赖性。您可使用开放服务网关(Open Services Gateway Initiative,OSGi)服务 API 和动态 API 完成所有这些任务甚至更多任务。

Eclipse中的 OSGI 的实现是通过 Equinox 项目完成的, Equinox 实现了 OSGi R4 核心框架规范.

Figure 1. OSGi overview

Figure 2. Service orientation interaction

Eclipse V3.2 中的新特性是能够在运行时提供扩展。通过将此功能与 OSGi 框架结合,插件可以检查服务的存在性,如果存在,可从服务中定义的扩展点创建扩展。这在使用面向服务架构的原则同时,促进了真正动态的环境。Eclipse V3.2 中新公开的是 addContribution() 方法,该方法在 IExtensionRegistry 接口中定义。

分类: NetBeans & Eclipse 标签: ,