概述IT基础设施(IaaS)数据库(Oracle、MySQL、MSSQLServer)/数据文件中间件(Tomcat、Weblogic、WebSphere等)JXADF基础应用平台插件容器终端用户访问(浏览器、手机端)概述概述OSGi–Open Service Gatewayinitiative开放服务网关协议,是由OSGi Allinance制定的Java动态模块化规范现在的定义是TheDynamicModuleSystemForJava,OSGi提供了这些:—明确定义了什么是模块;—明确定义了模块之间的交互方式;—支持模块化部署。—···什么是OSGi概述OSGi定义了模块化的模型Bundle,围绕bundle的生命周期搭建一个动态运行、协作模型定义了Bundle模型,提供包之间的共享、隔离机制,保障相互独立性用于控制Bundle的安全和生命周期操作,包括安装、解析、启动、运行、停止、卸载等状态定义了动态协作模型,该模型是一个发布、查找和绑定的模型。
OSGi是目前动态模块系统的事实上的工业标准,虽然一开始只是作为嵌入式设备和家庭网关的框架来使用,但是实际上它适用于任何需要模块化、面向服务、面向组件的应用程序。而Equinox则是的Eclipse所使用的OSGi框架,是Eclipse强大的插件体系的基础,Eclipse的稳定可靠性也为该框架带来了声誉。本文章就将演示如何在Eclipse环境下利用Equinox框架进行OSGi应用开发。
OSGi的名称来源于其开源组织的名称Open Services Gateway initiative,OSGi是一个标准,它致力于提供给Java项目一个模块化的底层环境,以及一系列通用的服务(Service)。 和普通的JVM 程序相比的特点: 天生拥有动态模块的特点; 不同的模块(OSGi里称之为Bundle)有着独立的生命周期; 非常适合需要进行Plugin管理的项目 OSGi标准还规范了一系列我们常间的操作,日志、配置文件、事件队列、Web开发、JPA&JDBC等等,大部分部署 OSGi标准的框架都提供了这些服务,这样一方面规范了我们代码的结构,一方面节约了我们开发的时间。
BndTools为我们提供了一种使用Eclipse开发OSGibundles的方式。它没有通过直接编辑Manifest.MF的方式定义依赖关系,而是使用文件基于Bnd工具驱动工具链(toolchain)。
最近在研究osgi,在osgi里面里面有个很重要的东西,就是ClassLoader,所以,在网上搜集了一些资料,整理一下,并加入了自己的一些理解;(1)jvm的装载过程以及装载原理所谓装载就是寻找一个类或是一个接口的二进制形式并用该二进制形式来构造代表这个类或是这个接口的class对象的过程,其中类或接口的名称是给定了的。
什么是OSGi 呢?OSGi(Open Service Gateway Initiative)字面上的意思是一个公共的服务平台。1999年OSGi 联盟成立,它是一个非盈利的国际组织,旨在建立一个开放的服务规范,为通过网络向设备提供服务建立开放的标准,是开放业务网关的发起者。OSGi 联盟的初始目标是构建一个在广域网和局域网或设备上展开业务的基础平台。历史总是具有惊人的相似性,正如Java 诞生于一个嵌入式开发的项目中,却被应用于网络平台的开发,对OSGi 的最早设计也是针对嵌入式应用的,诸如机顶盒、服务网关、手机、汽车等都是其应用的主要环境。后来,由于OSGi 的诸多优秀特性(可动态改变系统行为,热插拔的插件体系结构,高可复用性,高效性等等),它被应用于许多PC 上的应用开发,因此逐步为开发者所知和钟爱。
ServiceTracker其实是对ServiceListener实现方式的封装,使得对service的获取更加简洁,同时也解决了不能监听到已经存在的Service的问题(其实就是在增加ServiceListener的同时调用BundleContext.getAllServiceReferences方法以获取现有的Service引用)。
OSGI 及其WEB开发
OSGi是轻量级的面向服务基于构件的框架,用来部署和执行面向服务构件化的应用,并提供了服务注册和服务获取的机制。首先,提高动态性,当构件需要更新和重新部署时无需重新启动系统,真正体现了热插拔和即插即用的特点。
首次接触OSGi这个概念,还是在做规则设计器的时候,那时只知道Eclipse插件,后来才知道,那时候做的其实只是一个OSGi的Bundle,自己做的bundle加上我们的bundle使用到的其他的大量的Bundles就构成了我们的规则设计器这么一个软件了。因此对OSGi这样的软件体系,有了挺大兴趣,也试着做了一些小demo。我个人理解,OSGi的优势体现在持续集成开发,模块化与层次化的视图清晰,Bundle之间耦合度低,仅仅通过发现服务来获得其他Bundle提供的服务(虽然不知道提供服务的Bundle是谁)。
软件的模块越来越插件化发展了,连硬件都处处热插拔,软件更当如此。记原来有个 JPF(Java Plugin Framework),也能实现动态插件化,但要是有个业界标准的东西一般来说会更好的。于是轮到 OSGI(Open Service Gateway Initiative) 登台,OSGI 出来也有好几个年头了,应用也轰轰烈烈的,比如 Eclipse 3 开始不再使用原来的插件体系,完全用 OSGI 搭建。WebSphere 6.1 也全面改用 OSGI;JBoss、WebLogic、Spring DM,甚至是 BMW 车的控制系统中都得到了很好的应用。
接触OSGi已经有两三年了,而真正运用OSGi于项目之中,也将近两年。这两年来,因为OSGi的不太成熟也让我饱受历练。<br> 如果你对OSGi这个名词有点陌生,那本系列教程就不太适合你了,如果你想学习本系列教程,请你先去了解OSGi的相关概念。
接触OSGi已经有两三年了,而真正运用OSGi于项目之中,也将近两年。这两年来,因为OSGi的不太成熟也让我饱受历练。 如果你对OSGi这个名词有点陌生,那本系列教程就不太适合你了,如果你想学习本系列教程,请你先去了解OSGi的相关概念。拽写本系列教程的目的在于给想要在企业应用中使用OSGi技术的同学朋友们以实际经验指导,希望能给你带来收获。名词解释:OSGi:OSGi是Open Service Gateway Initiative的简称,可以称是一种技术,也可以称是一个平台,亦可称之为一种规范。Bundle:OSGi中最重要的元素之一,也是OSGi中最小的物理元素。
本文介绍了OSGi是什么,以及OSGi容器的一些现状。OSGi亦称做Java语言的动态模块系统,它为模块化应用的开发定义了一个基础架构。
OSGi框架入门介绍大纲,简介OSGi介绍OSGi开源实现ApacheFelix介绍CodeOSGi为基于组件或服务的开发提供了一套通用和标准的规范集,通过OSGi可以轻松实现组件或服务之间信息的隐藏和共享,从而构建高度模块化和动态性的系统。
作为一个新的事实上的工业标准,OSGi已经受到了广泛的关注,其面向服务(接口)的基本思想和动态模块部署的能力,是企业级应用长期以来一直追求的目标。Spring是一个著名的轻量级J2EE开发框架,其特点是面向接口编程和非侵入式的依赖注入。将OSGi和Spring结合能充分发挥二者各自的特长,更好地满足企业级应用开发的需求。Spring开发组织在2008年发布了将OSGi和Spring结合的第一个版本:Spring-DM。dmServer是一个完全模块化部署的,基于OSGi的Java服务器,为运行企业Java应用和Spring应用提供更加强大的灵活性和可靠性。SpringSource应用平台是构建在Spring、OSGi和ApacheTomcat之上的应用服务器,这个新的应用服务器摒弃了原有的JavaEE服务器标准,自然而然地将Spring编程模型展现其中,随之而来的还有一套基于OSGi内核构建的全新部署和打包系统。
这个文档是Spring Dynamic Modules的手册。它定义了基于名字空间的OSGI服务平台的语法和语义,动态模块bundle和由动态模块定义的OSGI manifest header entries。通过在线指南和用户指南可以了解到使用Spring Dynamic Modules构造基于OSGI的应用。Spring Dynamic Modules使编写一个部署在OSGI执行环境中的Spring应用变得简单,它能利用OSGI框架提供的服务。Spring的osgi支持也使构建在Spring框架中的OSGI应用开发变得更简单,更高产。对于企业级应用,Spring动态模块与OSGI平台的整合能提供以下功能。