OSGI:简述对OSGI的认识


一、OSGI的概念

OSGI(Open Service Gateway Initiative,直译为“开放服务网关”)实际上是一个由OSGi联盟(OSGi Alliance)发起的以Java为技术平台的动态模块化规范

OSGi联盟是由Sun Microsystems、IBM、Ericsson等公司于1999年3月成立的一个世界性的开放标准化组织,最初的名称为Connected Alliance。最初的OSGi规范也只是关注于嵌入式领域,前三个版本的OSGi规范主要满足诸如机顶盒、服务网关、手机等应用环境的模块化需求。从第四个版本开始,OSGi将主要关注点转向了Java SE和EE领域,并且在这些领域中获得了很大的发展,成为Java平台事实上的模块化规范。

随着OSGi技术的不断发展,OSGi联盟的成员数量已经由最开始的几个增长到目前超过100个,很多世界著名的IT企业都加入到OSGi的阵营之中,如Adobe、IBM、Oracle、SAP、RedHat和Siemens等。它们推出的许多产品都支持OSGi技术,甚至产品本身就使用了OSGi技术构建,例如IBM的WebSphere、Lotus和JAZZ,Oracle的GlassFish和Weblogic,RedHat的JBoss,Eclipse基金会的Eclipse IDE、Equinox及之下的众多子项目,Apache基金会的Karaf、Aries、Geronimo、Felix及之下的众多子项目等。这些IT巨头的踊跃参与,也从侧面证明了OSGi技术有着非常广阔的市场前景。

今天,OSGi的已经不再是原来Open Service Gateway Initiative的字面意义能涵盖的了,OSGi联盟给出的最新OSGi定义是The Dynamic Module System for Java,即面向Java的动态模块化系统

OSGI的架构图如下:

二、OSGI的功能

以一个简单开的开发场景作说明:假设我们使用SSM框架来开发我们的Web项目,我们做产品设计和开发的时候都是分模块的,我们分模块的目的就是实现模块之间的“解耦”,更进一步的目的是方便对一个项目的控制和管理。我们对一个项目进行模块化分解之后,我们就可以把不同模块交给不同的开发人员来完成开发,然后项目经理把大家完成的模块集中在一起,然后拼装成一个最终的产品。一般我们开发都是这样的基本情况。

在开发过程中,模块之间还要彼此保持联系,比如A模块要从B模块拿到一些数据,而B模块可能要调用C模块中的一些方法(除了公共底层的工具类之外)。

最后,我们要把最终的项目部署到tomcat或者jBoss的服务器中。那么我们启动服务器的时候,能不能关闭项目的某个模块或功能呢?很明显是做不到的,一旦服务器启动,所有模块就要一起启动,都要占用服务器资源,所以关闭不了模块,假设能强制拿掉,就会影响其它的功能。

以上就是我们传统模块式开发的一些局限性。

软件开发一直在追求一个境界,就是模块之间的真正“解耦”、“分离”,这样我们在软件的管理和开发上面就会更加的灵活,甚至包括给客户部署项目的时候都可以做到更加的灵活可控。但是我们以前使用SSM等架构模式进行产品开发的时候我们是达不到这种要求的。

所以OSGI的技术规范应运而生。现在的OSGI技术就可以满足我们之前所说的境界:在不同的模块中做到彻底的分离,而不是逻辑意义上的分离,是物理上的分离,也就是说在运行部署之后都可以在不停止服务器的时候直接把某些模块拿下来,其他模块的功能也不受影响。

现在主流的一些应用服务器,Oracle的weblogic服务器,IBM的WebSphere,JBoss,还有Sun公司的glassfish服务器,都对OSGI提供了强大的支持,都是在OSGI的技术基础上实现的。

简单点说,OSGI被设计专门用来开发可分解为功能模块的复杂的Java应用。 OSGI提供以下优势:

  1. 可以动态地安装、卸载、启动、停止不同的应用模块,而不需要重启容器。
  2. 在同一时刻可以跑多个同一个应用模块的实例。
  3. OSGI在SOA领域提供成熟的解决方案,包括嵌入式,移动设备和富客户端应用等。

参考:

  1. https://blog.csdn.net/u013851082/article/details/70214881
  2. https://www.cnblogs.com/zhaoxinshanwei/p/8376696.html

OSGI:简述对OSGI的认识相关推荐

  1. OSGi介绍及OSGi的Bundle应用

    http://blog.sina.com.cn/s/blog_50356fbb0100dytp.html 关键字: OSGi Bundle Plugin Eclipse 开放服务网关协议 (Open ...

  2. ServiceMix异常(1):missing requirement [262.0] osgi.wiring.package;osgi.wiring.package=org.apache.camel

    环境 servicemix :6.1.0 jdk:jdk1.8.0_191 项目中使用的camel版本:2.23.1 servicemix中安装的camel版本:2.16.1 起初小编在开发的时候就直 ...

  3. osgi.wiring.package; ((osgi.wiring.package=com.adobe.cq.sightly)(version=2.2.0)(!(version=3.0.0))

    err.log错误日志 10.10.2019 16:05:06.664 *ERROR* [qtp372893047-63] org.apache.felix.http.jetty %bundles.p ...

  4. osgi cxf_所有OSGi套件的通用CXF请求拦截器

    osgi cxf 几个月以来,我一直在研究Apache CXF,Karaf和Felix,我发现所有这些捆绑技术都非常有趣. 在处理一些用例时,我陷入一种情况,即我只需要一个Interceptor即可在 ...

  5. 【OSGI】Error osgi xx Invalid value for DynamicImport-Package dynamic.import.pack

    1.背景 git下载项目:siddhi-test-suite 然后运行里面的测试类报错 Error:osgi: [siddhi.test.suite] Invalid value for Dynami ...

  6. OSGI基础与OSGI框架

    OSGI(Open Service Gateway Initiative) 通过OSGI,可以进行模块化管理,模块之间真正的解藕,能实现硬件的"热插拔"功能.能够更加规范项目化管理 ...

  7. OSGI企业应用开发(二)Eclipse中搭建Felix运行环境

    上篇文章介绍了什么是OSGI以及使用OSGI构建应用的优点,接着介绍了两款常用的OSGI实现,分别为Apache Felix和Equinox,接下来开始介绍如何在Eclipse中使用Apache Fe ...

  8. java osgi web开发_基于 OSGi 和 Spring 开发 Web 应用

    开发一个简单的OSGi Web应用实例 一个简单的Web应用 我们写一个简单的 Web 应用 compute.html :计算两个数字的和或乘积.如下图所示: 图1.一个简单例子 一个简单例子.bmp ...

  9. OSGI动态加载删除Service bundle

    OSGi模块化框架是很早就出来的一个插件化框架,最早Eclipse用它而出名,但这些年也没有大热虽然OSGi已经发布了版本1到版本5.现在用的最多的,也是本文讲述基于的是Equinox的OSGi实现, ...

最新文章

  1. 轻松优化Jupyter Notebook:技巧、诀窍、魔法
  2. 8.16模拟:树上算法
  3. SpringBoot AutoConfiguration魔术如何工作?
  4. echarts词云图形状_词云图在自然语言中的应用,可以如此炫酷!
  5. [BlockChain]比特币交易快速上手(基于测试链)
  6. vue3中这几个变化你要注意了
  7. 光电整纬机(日本世联电子株式会社)
  8. 基于OpenCV全景图像拼接
  9. BZOJ1123: [POI2008]BLO
  10. 广州市出租车GPS数据(20210127)
  11. 新浪再传将被转手 盛大卖股TOM集团接盘?
  12. 微信小程序加签验签(wxapp_rsa,jsencrypt)和egg搭建的后端交互(jsrsasign,node_rsa)最全!!!
  13. 章泽天加入微软实习 网友:提升程序员整体形象
  14. VS2015 注释英文
  15. 官宣!博通将以 4100 亿收购 VMware!
  16. 2021-02-18-ctf-坚持60s-反编译
  17. 常见的几种云管理平台
  18. 【SQLite预习课1】SQLite简介——MySQL的简洁版
  19. 如何让android的屏幕保持常亮
  20. 单源最短路径(dijkstra)

热门文章

  1. Dofbot机械臂从零部署笔记(4)——ROS之Moveit下实现实机逆向运动学规划
  2. 北京网商服务平台评出首批重点企业 扶持力度大增
  3. 关于复习《网络经济与企业管理》的一点感受
  4. mybatis+pageHelper实现1多对查询,查询条件一方和多方都有
  5. Promise.then方法 返回值
  6. 机器/深度学习Milvus、Annoy、Vearch、sk-dist介绍
  7. 《吊打分析师》实战—经典重现,你会怎么选择?
  8. thiel熵计算_彼得·泰尔(Peter Thiel)的前参谋长现在有五百亿美元的五角大楼预算
  9. 声明式UI是否会成为Android开发的主流?
  10. Mac系列差评麦克风黄点一直去不掉怎么办?(已解决)