• 开源协议:LGPL协议、OSGi协议


    本文介绍开源的协议。

    LGPL 是 GNU Lesser General Public License (GNU 宽通用公共许可证)的缩写形式,旧称 GNU Library General Public License (GNU 库通用公共许可证),译为:更加宽松的通用公共许可证。

    例如mq的5.4版本没有解决Investigate and resolve LGPL dependency via camel-web,所以被撤销。

    资料:http://www.oschina.net/question/12_2663

    -------------------------------------------------------------------华丽分割-------------------------------------------------------------------

    OSGi协议,是指Open Services Gateway initiative的缩写,叫做开放服务网关协议。

    OSGi已经被用于构建很多非常复杂的系统,比如IDE(Eclipse),应用服务器(GlassFish, IBM Websphere, Oracle/BEA Weblogic, Jonas, JBoss),应用框架(Spring,Guice),工业自动化等等。

    一、分层结构:

    安全层:基于Java2的安全机制增加了一些限制,并且弥补了Java标准的一些不足。

    服务层:为bundle开发者提供了一个动态、简明且并且统一的编程模型,通过解耦服务标准(即Java接口)和它的实现,能够简化服务bundle的开发和部署。

    生命周期层:为bundle 提供了生命周期管理API,为bundle提供了一个运行时模型,定义了一个bundle 如何启动、停止、安装和卸载。

    模块层:定义了一个模块化Java模型,对Java部署模式的一些缺点进行了改进,并对bundle)之间包的共享有严格的规定。

    二、提供功能

    OSGi框架本身提供了类加载,生命周期管理,服务注册和规范服务。

    1、类加载:OSGi 有它自身的类加载机制从而控制这些加载的Bundles 彼此之间的依赖关系。

    2、生命周期管理:是OSGi 的一大亮点,由于可动态的对这些加载的Bundles 进行安装、卸载、启动、停止等操作,所以可以动态的改变应用程序的运行状态。

    3、服务注册:当一系列的Bundles 存在于服务器中的时候,那么它们之间必然会存在通信协作的部分,比如说一个通过网页捕获用户输入的Bundle 执行的时候,它必须首先需要一个Web 服务器服务的支持,那么这个时候服务注册器就会从整个OSGi容器中寻找这个服务,如果能完成服务的匹配,那么相应的功能就会很自然的实现了。

    4、规范服务:OSGi 规范还规定了一组预设的服务,包括日志、服务管理等等,这些服务在主流的开源框架中都有实现。

    Bundle介绍

    OSGi 是以 Bundle 为程序模块单位组成的。每一个 Bundle 独立开发,各自成章,有自己分配的内存空间以及生命周期。

    一、Bundle分类

    Bundle 也分很多种类型,(1)有些 Bundle 只提供功能 Service;(2)有些 Bundle 消费 Service 并呈现给用户(比如 UI Bundle);(3)还有些 Bundle 自己不单独启动作为其他 Bundle 的 fragment Bundle 存在(比如资源文件 Bundle)。

    二、Bundle状态

    Bundle 有六种状态,分别是:(1)installed(安装完成,本地资源成功加载);(2)resolved(依赖关系满足,即该Bundle 要么是准备好运行了,要么是已经被停止了);(3)starting(Bundle 正在被启动);(4)stopping(Bundle 正在被停止);(5)active(Bundle 被激活,正在运行中);(6)uninstalled(Bundle 被卸载了)。

    三、Bundle间通讯

    Bundle 是 OSGi 的功能单元,服务提供者和消费者 Bundle 之间,功能包提供者和消费者之间需要进行相互通信。主要通讯方式有以下几种:

    1.Import Package 方式,在服务提供 Bundle 用 Export Package 导出。需要通过配置 MANIFEST.MF 来实现。

    2.Register Service 方式,在服务提供 Bundle 通过 BundleContext 进行 Service 注册,在消费者 Bundle 通过 ServiceTracker 取得 Service,需要通过写代码来实现。

    四、Bundle共享普通jar方式

    Bundle是OSGi的一个最小组织单元,表现形式和普通的Jar包文件一样,只不过是其对应的MANIFEST.MF文件中多了一些描述性的东西。Bundle共享第三方Jar包步骤:

    1、在bundle的根目录下创建文件夹folder;

    2、选中新创建的文件夹folder,右击 Import --> General --> File System,然后从location中选择需要的Jar包。

    3、打开现编辑bundle的MANIFEST.MF文件,并定位在Runtime页签上。选中需要的Jar包。

     

     

  • 相关阅读:
    第三次作业
    第二次作业
    第一次作业 2017.09.15
    WIN10共享
    当人类什么时候明白两点一线不是最近的距离的时候就是深入太空的时候
    世界的秘密:人族
    世界组成:世界如何演变
    用上了360免费云盘
    世界真相(内容偕为虚构,不用当真)
    找到一个新的超好用的U盘启动制作工具了
  • 原文地址:https://www.cnblogs.com/wanghongye/p/5058592.html
Copyright © 2020-2023  润新知