OSGi是什么
OSGi亦称做Java语言的动态模块系统,它为模块化应用的开发定义了一个基础架构。OSGi容器已有多家开源实现,比如Knoflerfish、Equinox和Apache的Felix。您可以通过这些容器,把您的应用程序劈分为多个模块单元,这样,您就可以更容易地管理这些模块单元之间的交叉依赖关系。
OSGi规范和Servlet规范及EJB规范类似,该规范定义了两种对象,一是容器对外提供的服务对象,另一个是容器和您的应用程序之间必须遵守的契约,其中,服务对象是容器要实现的。您如果想要在OSGi平台上进行开发,首先,您必须要使用OSGi API来创建您的应用,然后将之部署到OSGi容器中。从开发者的角度看,OSGi具有以下优点:
a) 您可以在不重启容器的情况下,动态地安装、卸载、启动和停止您的应用程序中的不同模块;
b) 对于您应用程序中的某一特定模块,容器可以同时运行该模块的多个版本;
c) OSGi为开发嵌入式应用、移动应用、富互联网应用(RIA)提供了非常优秀的基础架构
如果说您使用Servlet容器开发您的网络应用,使用EJB容器开发交易式应用,您可能会问,为什么我们还需要另外的容器呢?对这个问题的简短回答是,OSIG容器是专门为开发复杂的Java应用准备的,在这些应用的开发过程中,您非常需要将这些应用分割为一个个的模块。在本系列以后的文章中,我将针对这个问题进行展开并深入回答。
1. OSGi在企业开发中的应用
OSGi联盟(OSGiAlliance)于1999年3月开始着手制定OSGi规范,其主要目的就是要制定一套开放式标准,以便向局域网及其中的设备提供可管理的服务;其基本思路是,一旦您在网络设备(如服务器和嵌入式设备)上使用了OSGi服务平台,您就可以在网络上的任何地方管理这些设备上运行的软件组件的生命周期,可以在后台对这些组件进行安装、升级或卸载,但不需要打断该设备的正常运行。
近年来,OSGi技术在嵌入式系统及网络设备市场得到广泛应用。现在,由于Eclipse的成功,OSGi在企业开发中逐渐成为切实可行的、较有价值的一种技术。
1.1. 业界对OSGi的支持逐渐上升
2003年,Eclipse开发团队开始想办法提高Eclipse工具集的模块化,以便让它成为更加动态的富客户端平台。Eclipse团队最终选中OSGi框架作为其组件的运行时模型,2004年6月发布的Eclipse3.0就是第一个基于OSGi平台的版本。现在几乎所有的企业应用服务器都支持OSGi,Spring也通过一个叫“OSGi服务平台上的Spring动态模型(亦称之为OSGiSpring)”的项目来支持OSGi。该项目提供OSGi基础架构,以便我们在Spring的企业开发中更容易使用OSGi。
2. 开放源码的OSGi容器
从企业开发者的角度看,OSGi容器的要求很低,您可以很容易地把它嵌入到企业应用中,比如我们在开发Web应用时,我们可以把这个Web应用分为多个模块,一个模块负责视图层,另一个模块负责DAO层,第三个模块负责数据访问层,如果我们使用OSGi容器来管理这些模块之间的交叉依赖,我们就可以在不用重启该Web应用的前提下,将DAO层从速度较慢的升级到速度较快的DAO。
只要您的应用和OSGi规范兼容,您的应用就应该可以运行在任何OSGi容器中,现在比较流行的开放源码的OSGi容器有以下三种:
a) Equinox容器是参照OSGi规范第4版实现的,它构成了Eclipse IDE的核心—模块化的Java运行时;它实现了OSGi规范4中规定的必须强制实现的功能,同时,它也实现了OSGi规范中大部分的可选功能;
b) Knoflerfish是OSGi规范第3版和第4版的开源实现,它实现了OSGi规范规定的必须实现的功能及部分可选功能;
c) Apache的Felix是Apache软件基金会实现的OSGi开源容器,该容器和OSGi规范完全兼容。
3.类加载器
osgi只所以能够动态,是使用了java的类加载器,而不是所谓的进程。
现在基本上所有的java应用服务器都(或计划)构建于osgi上。
包括weblogic。
osgi现在可用的地方就是osgi,构建于osgi微内核上的程序将启动更快、热插拨
分享到:
相关推荐
pro_spring_dynamic_modules_for_osgi_service_platforms, OSGi In Action, Enterprise OSGi in Action, Instant OSGi Starter
在"ogsi eclipse环境jar"中,"jar"指的是Java Archive,它是Java平台的标准打包格式,用于收集多个类文件、相关的元数据和资源文件到一个单独的文件中。这些jar文件通常包含OSGi框架的核心库和其他必需的依赖,使...
介绍了OGSI 规范, 包括GWDSL 、服务数据、网格服务句柄、网格服务引用、服务生命周期管理、通告和服务群等重要概念或特性, 并结合一个例子说明这些概念和特性。还尝试把网格服务和Web Service 及分布式对象系统作...
OSGi(Java 语言的动态模块系统)是一种用于构建模块化应用程序的基础架构,它允许开发者在不中断系统运行的情况下安装、升级或卸载组件。这一技术最初是为嵌入式系统设计的,但现在已被广泛应用于企业级开发,尤其...
WSRF的出现是为了解决OGSI(Open Grid Service Infrastructure)的一些问题,并与OGSA(Open Grid Service Architecture)相辅相成,以实现更强大的状态管理和服务交互。 WSRF的产生原因主要是由于2004年Web服务...
OGSA(开放式格网服务体系结构)是一个概念框架,定义了网格服务的组织结构和交互方式,而OGSI(开放网格服务接口)则是OGSA的具体实现,规定了网格服务之间的通信接口,类似于Web服务中的WSDL。Globus是一个基于...
随着网格技术的发展,Globus Toolkit与IBM提出的OGSA(Open Grid Service Architecture)相结合,形成了Globus Toolkit 3.0(GT3),这是一个实现了OGSI(Open Grid Service Infrastructure)的完整开放网格服务平台...
网格服务基于开放网格服务架构(Open Grid Services Architecture,OGSA)和开放网格服务基础设施(Open Grid Services Infrastructure,OGSI)。OGSA定义了一种体系结构,用于在分布式、异构、动态的虚拟组织中集成...
后来,WSRF(Web Services Resource Framework)被提出,它在OGSI的基础上进行了改进,解决了OGSI的一些问题,并在服务状态的管理上提出了更清晰、更实用的解决方案。 GT4中的WSRF是一个重要的组件,它提供了一系列...
开放网格服务基础结构OGSI(OpenGridServicesInfrastrstructure)把Web服务工作流引入到网格任务描述中,给出了几种Web服务与网格技术相融合机制,但并没有界定如何进行网格服务组合。而BPEL4WS(BusinessProcess ...
6. OGSI(Open Grid Services Infrastructure):OGSI是网格计算的一种服务架构,它为网格环境下的服务提供标准化的接口和行为。通过OGSI,网格中的各种资源和服务可以被组织、发现和管理,从而提高了网格计算环境的...
根据OGSA(Open Grid Services Architecture)的规定,一切都可以用服务来表达,而定义在OGSI中的网格服务实际上就是一种具有特定接口规范的Web服务。 OGSI规范存在一定的局限性,如过于庞大且不易与现有的Web服务...
#JBehave OGSi JBehave OGSi 的创建是为了能够在任何 OSGi 环境中执行 JBehave BDD 之类的故事。 您可以使用它来测试需要在 OSGi 容器内作为 Eclipse RCP/SWT 应用程序、OSGi 服务等执行的任何类型的 OSGi 应用程序...
“ADC.pdsprj.DESKTOP-OGSI5GJ.郭星宇.workspace”看起来像是项目文件在郭星宇用户的桌面工作区的副本,可能包含了个人的设置、编译配置、调试信息等。工作区文件对于开发者来说是个性化的,通常包括了项目的全部...
OGSA本身没有提供实现细节,而是推出了两种主要的实现方式,即OGSI(Open Grid Services Infrastructure)和WSRF(Web Services Resource Framework)。 OGSI扩展了WSDL和XML Schema,目的是标准化WebService的状态...
这个小型网格原型系统是基于OGSA(开放网格服务架构)体系结构和Web 服务架构而构建的网格服务的基础平台,按照OGSI网格服务规范标准,用GT3(Globus Toolkit 3.0)网格开发工具包开发实现。程序设计符合通常的分布式...
2. **网格体系结构**:讲解Open Grid Computing Environment (OGF) 的标准,如OGSI(开放网格服务接口)和Globus Toolkit,这是构建网格计算系统的基础框架。 3. **资源管理**:讨论如何在网格环境中管理和调度...
2. **网格体系结构**:网格计算通常基于开放标准和协议,如Open Grid Forum (OGF)定义的开放网格服务接口(OGSI)和GridFTP等。这些协议确保了不同机构之间的资源能够无缝协作。 3. **资源管理层**:在网格计算中,...