首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OSGi简介

OSGi Enterprise主要包括组件模型、分布式服务、Web应用于HTTP Servlet、事件模型、管理与配置服务、名称与目录服务、数据访问、事务支持以及其它一些支持服务。...开发的角度来说,OSGi具有以下特点: ● 复杂性的降低:基于OSGi的组件模型bundle能够隐藏内部实现,bundle基于服务进行交互。...● 易于部署:OSGi定义了组件是如何安装和管理的,标准化的管理API使得OSGi能够和现有和将来的各种系统有机的集成。...(这在开发时也提供了很大的帮助) ● 快速:这得益于OSGi加载机制,和JAR包的线性加载不同,bundle委托式的加载机制,使得的加载无需进行搜索,这又能有效的加快系统的启动速度。...任何任务组织都可以申请成为Strategic 成员,不过年费也很高,一年得上交25000刀。像IBM、Oracle和Adobe这样的大公司都是strategic成员。

3.2K50

OSGi的模块化和动态模块的好处

7、透明性 软件包和服务OSGi环境中是最高级的。管理API不但提供了对软件包内部状态的访问而且也也提供了如何去和其他包做对接。...有很多简单的注解可以让程序在用运行期间知道一个特殊的如何使用动态性、配置和对其他服务的依赖。默认情况向是完全因此了动态性和OSGi的其他的特性,简单的模块会逐步使用一些高级特性。...11、快速 OSGi的一个主要功能就是软件包里加载。在传统的java程序中,jar包是清晰可见的,并线性的排列。搜索一个需要遍历整个列表(通常时间会很久)。...因此,这些开发者可以将某个OSGi框架包括在WAR文件中,并将软件包文件系统或通过网络装载到应用服务器中来运行。OSGi非常的灵活,这使得一个应用服务器上就可以容易地作为多个OSGi框架的宿主。...OSGi的最佳实践就是编写POJO(Plain Old Java Objects),并且由于这个原因,OSGi服务并不需要任何特殊的接口,甚至一个Java的String对象也可以充当一个OSGi服务

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

模块化服务规范——OSGI

基于这个框架定义了大量的OSGi服务:日志、配置管理、偏好,HTTP(运行servlet)、XML分析、设备访问、软件包管理、许可管理、星级、用户管理、IO连接、连线管理、Jini和 UPnP。...应用程序(称为bundle)无需重新引导可以被远程安装、启动、升级和卸载(其中Java包/的管理被详细定义)。API中还定义了运行远程下载管理政策的生命周期管理。...现在OSGi规范已经用于移动电话到开源的Eclipse(其中包括了与IBM的OSGi框架SMF兼容的开源版本)。...传统的开发和部署的局限性 1、java讲求的是面向接口编程,比如接口A有两个实现B和C,当在运行时需要将B转换成C的时候,就需要重新启动服务,否则是无法实现的,也就是说J2EE本身是不提供这种支持的。...很显然,这给维护工作带来挑战,毕竟升级或修改WAR包中的任何内容都可能会波及到整个WAR包。

1.5K30

OSGi 基本原理

OSGi联盟已经开发了例如像HTTP服务器、配置、日志、安全、用户管理、XML等很多公共功能标准组件接口。这些组件的兼容性插件实现可以进行了不同优化和使用代价的不同计算机服务提供商得到。...然而,服务接口能够基于专有权基础上开发。 OSGi的主要职责就是为了让开发者能够创建动态化、模块化的Java系统。 OSGi 框架 OSGi框架概念上可以分为三层:模块层、生命周期层和服务层。...模块层 模块层是 OSGi 框架中最基础的部分。 OSGi 的模块化,是通过为 Jar 包添加metadata 来定义哪些该暴露,哪些该隐藏,其控制单元叫做 Bundle(jar 包)。...如何定义 Bundle Bundle 是 OSGi 中的基本组件,其表现形式仍然为 Java 概念中传统的 Jar 包。...代码中的参数new LSE()是一个POJO,这个对象不需要实现任何OSGi类型或者使用标注,只要满足服务约定(这里就是接口)就可以了。

2.7K90

【原创】JVM 的加载机制?盘它!

该类对应的 java.lang.Class 对象没有任何地方被引用,无法在任何地方通过反射访问该类的方法。...8.加载器 虚拟机设计团队把加载动作放到 JVM 外部实现,以便让应用程序决定如何获取所需的,JVM 提供了 3 种类加载器: ?...1.动态改变构造 OSGi 服务平台提供在多种网络设备上无需重启的动态改变构造的功能。 为了最小化耦合度和促使这些耦合度可管理,OSGi 技术提供一种面向服务的架构,它能使这些组件动态地发现对方。...OSGi 描绘了一个很美好的模块化开发目标,而且定义了实现这个目标的所需服务与架构,同时也有成熟的框架进行实现支持。...现在主流的一些应用服务器,Oracle的weblogic服务器,IBM的WebSphere,JBoss,还有Sun公司的glassfish服务器,都对OSGI提供了强大的支持,都是在OSGI的技术基础上实现的

72920

Springboot Application 集成 OSGI 框架开发

java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.Class OSGI 加载器 OSGI 加载器并不遵循...和 servlet container 桥接起来,并且提供了一系列的 bundle 可以将 Equinox OSGI 应用嵌入到现有的 web 服务器中(eg..../index.html 总结 本文 Java 加载器说起,探讨了 OSGI加载器原理并对 Equinox 中的 Servletbridge 原理实现进行了详细的研究,同时扩展到使用这一原理如何在...Spring boot 应用中嵌入 OSGI 开发和 Spring boot 应用如何OSGI 插件之间进行相互调用。...并对它的实现方法做了进一步的探讨,这些探讨对于将 OSGI 应用嵌入到任何其他的系统中是一个启发和帮助,希望有兴趣的读者可以做进一步的了解和实现。

1.2K20

用Java的OSGi框架构建灵活模块化应用

OSGi框架的概念和特点并通过一个代码示例来演示如何使用OSGi构建一个模块化的Java应用程序。...一、OSGi框架概述OSGi是一种面向服务的模块化框架它将应用程序划分为多个独立的、可重用的模块每个模块被称为一个bundle每个bundle都有自己的生命周期、加载器和依赖管理机制OSGi框架提供了动态部署...、服务导向、加载隔离和生命周期管理等关键特性使得应用程序更具灵活性和可维护性。...二、OSGi代码示例为了演示OSGi框架的使用我们将创建一个简单的示例其中包含两个模块:一个模块提供Greeting服务另一个模块使用该服务进行输出。...小结本文介绍了Java的OSGi框架的概念和特点并通过一个简单的代码示例演示了如何使用OSGi构建一个模块化的Java应用程序,关注我回复资源获取源代码OSGi的模块化、动态部署、服务导向和加载隔离等特性使得应用程序更具灵活性和可维护性希望本文能帮助你进一步了解和探索

29840

CTK框架介绍

CTK插件通常值共享符号(和函数)来支持CTK的服务模型。 Services 一个在C++中的协作模型通常会使用工厂模式。不同的工具包使用不同的模式和API来访问这样的工厂。...尽管service registry接受任何基于QObject的对象作为服务,实现重用的最好的办法是使用标准接口注册这些对象客户端代码中实现解耦。...下面列表获取自使用OSGi的好处和使用CTK的上下文。 Reduced Complexity降低复杂度 用CTK插件框架开发意味着开发插件。它们其他插件隐藏内部并且通过定义好的服务交流。...Transparency 插件和服务是一等公民在CTK插件环境中。管理API提供了访问插件内部状态还有如何跟其他插件连接。部分应用程序可以被停止来调试一个特定的问题或者诊断被带来的插件。...她们可以使用任何功能没有框架限制它们。对CTK服务没有特殊的接口要求,每一个QObject可以充当一个服务并且每个都可以充当一个接口。

1.1K20

灵活的加载器OSGI

OSGi 里面,Bundle之间的依赖关系传统的上层模块依赖底层模块转变为平级模块之间的依赖,而且库的可见性能得到非常精确的控制,一个模块里只有被Export过的Package才可能被外界访问,其他的...OSGi之所以能有上述诱人的特点,必须要归功于它灵活的加载器架构。OSGi的Bundle加载器 之间只有规则,没有固定的委派关系。...另外,一个Bundle加载器为其他Bundle提供服务时,会根据Export-Package列表严格控制访问范 围。...实现 NBF(New-Retail Business Framework)是阿里巴巴供应链中台的基础技术团队打造的一个技术PaaS平台,—— 新零售服务开放框架NBF提供标准化业务定义 、 快捷服务开发和生态开放的能力...所谓标准化业务定义,就是比如一个商家交易到客户签收都会经历,付款,创单,配送,签收等流程。 所谓快捷开发就是只要接入默认实现,就已经拥有了标准流程。

61530

OSGI开发web应用

开发web的两种方式 基于OSGI开发B/S应用有两种方式: 1)在OSGI框架中嵌入Http服务器 2)在Servlet容器中嵌入OSGI框架 Http服务器嵌入到OSGI框架环境配置...是 Bundle生成周期管理,可以监听组件的启动和停止动作。...现在虽然HTML页面文件有了,包也配置好了,但是还不能通过HTTP访问相应的页面,如果现在测试运行访问http://localhost:8080服务,浏览器会提示找不到页面,我们需要将页面注册到OSGi...Http服务中 修改生成的Activator,注册加入HttpService服务,程序如下: package hellowebosgi; import org.osgi.framework.BundleActivator...; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import org.osgi.service.http.HttpService

1.6K40

超越传统:用Java的OSGi框架构建灵活模块化应用

本文将介绍OSGi框架的概念和特点,并通过一个代码示例来演示如何使用OSGi构建一个模块化的Java应用程序。...一、OSGi框架概述 OSGi是一种面向服务的模块化框架,它将应用程序划分为多个独立的、可重用的模块,每个模块被称为一个bundle。每个bundle都有自己的生命周期、加载器和依赖管理机制。...OSGi框架提供了动态部署、服务导向、加载隔离和生命周期管理等关键特性,使得应用程序更具灵活性和可维护性。...小结 本文介绍了Java的OSGi框架的概念和特点,并通过一个简单的代码示例演示了如何使用OSGi构建一个模块化的Java应用程序。...OSGi的模块化、动态部署、服务导向和加载隔离等特性使得应用程序更具灵活性和可维护性。希望本文能帮助你进一步了解和探索Java的OSGi框架。 我是了不起 和我一起学习更多精彩知识!!!

82750

你们也在用osgi吗?

就是如何组成一个模块,然后哪些模块是给内部使用,哪些模块是给外部使用的。...OSGI就可以解决上面的问题,应用程序可以像搭积木一样完成搭建,例如对于一个正在运行的系统,压根日志服务,但目前系统中没有提供日志服务的模块,那么可以直接开发出相应的日志服务模块,然后动态的加载到系统中...•RESOLVED — 所有bundle需要的Java可用。这个状态标志着 bundle已经是启动就绪或者是已经停止。 •STARTING — 正在启动bundle。...调用了bundle激活器的start方法,而且还没有方法中返回。 •ACTIVE — bundle已经启动完毕,正在运行中。 •STOPPING — 正在停止bundle。...osgi中的service 定义了动态协作模型,该模型是一个发布、查找和绑定的模型。 Bundle可以注册服务、搜索服务、监听服务

1.7K40

架构设计 11-可扩展架构之微内核架构

导读:《架构设计》系列为极客时间李运华老师《0开始学架构》课程笔记。本文为第十一部分。主要介绍了如何面向功能拆分架构,首先介绍了微内核架构的基本架构设计,以及几种常见架构的实现与特点。...关注本公众号 回复 “架构设计” 获取架构设计笔记完整思维导图 基本架构 两组件 核心系统(core system) 负责和具体业务功能无关的通用功能: 模块加载 模块间通信 插件模块(plug-in...modules):负责实现具体的业务逻辑 核心系统设计 插件管理 核心系统需要知道当前有哪些插件可用,如何加载这些插件,什么时候加载插件。...生命周期层(Lifecycle 层) 生命周期层实现插件连接功能,提供了执行时模块管理、模块对底层 OSGi 框架的访问。...OSGi 提供了一个服务注册的功能,用于各个插件将自己能提供的服务注册到 OSGi 核心的服务注册中心,如果某个服务想用其他服务,则直接在服务注册中心搜索可用服务中心就可以了。

61520

初识OSGI

因为公司在全世界都有客户,而且客户又来自于各行各业,带来的问题就是如何抽离公共业务的同时,又能不影响客户的定制化需求开发?...但是在解决插件定制化这块,相对来说还是不太熟悉,然后OSGI进入眼帘了。 OSGI 简介 OSGI 是 Open Service Gateway Initiative(开发服务网关协议)。...官方联盟维护的基于JAVA语言的服务规范 该规范和核心部分是一个框架,其中定义了应用程序的生命周期模式和服务注册。...基于这个框架定义了大量的OSGi服务:日志、配置管理、偏好,HTTP(运行servlet)、XML分析、设备访问、软件包管理、许可管理、星级、用户管理、IO连接、连线管理、Jini和UPnP。...它本身提供的服务也是最全的,几乎涵盖了全部的OSGi 4.2的标准。除此之外还提供了一些非标准的功能,例如iPOJO。

1.1K20

JVM第八卷---加载与执行子系统的案例与实战

每个路径的库具备不同的访问范围和服务对象,话不多说我们来看 Tomcat 是怎么规划用户库结构和加载器的。...加载的 Spring 如何访问并不在其加载范围内的用户程序呢?...不改变原有服务端程序的部署,不依赖任何第三方库 不侵入原有程序,无需改动源程序的任何代码也不会对原有程序的运行带来任何的影响 临时代码需要直接支持 Java 语言 临时代码应当具备足够的自由度,...---- 思路 为实现以上程序,我们要解决三个问题: 如何编译提交到服务器的 Java 代码 如何执行编译后的 Java 代码 如何收集 Java 代码的执行结果 我的想法是: 如何编译提交到服务器的...该类的java.lang.Class 对象没有在任何地方被引用,如不能在任何地方通过反射访问该类的方法。

37320

CTK Plugin Framework简介

基于OSGI核心框架定义了大量的OSGi服务:日志、配置管理、HTTP(运行servlet)、XML分析、设备访问、软件包管理、许可管理、用户管理、IO连接、连线管理、Jini和UPnP。...通过接口和过滤表达式可以插件框架获得服务引用。框架发布服务生命周期事件。 服务可以通过ctkPluginContext对象注册到插件框架。服务的注册和注销可以在任何时候进行。...核心API足以编写插件、安装、启动、停止、更新和卸载,并且还包含了所有的监听。 CTK Plugin Framework不仅仅是组件的标准,还指定了如何安装和管理组件的API。...3.8、懒加载 OSGi技术有很多的机制来保证只有当真正需要的时候才开始加载插件。例如,插件可以用饿汉式启动,但是也可以被配置为仅当其它插件使用它们时才启动。服务可以被注册,但只有在使用时才创建。...插件可以使用任何设施,框架对此并无限制。CTK服务没有特殊的接口需求,每个QObject都可以作为一个服务,每个(包括非QObject)都可以作为一个接口。

2.4K20

微内核架构(Microkernel Architecture)二

2.2 OSGi 的两种含义 OSGi 一方面指 OSGi Alliance 组织,另一方面指 OSGi Alliance 制定的一个基于 Java 语言的服务规范——OSGi 服务平台。...基于这个框架定义了大量的 OSGi 服务:日志、配置管理、偏好,HTTP(运行 servlet)、XML 分析、设备访问、软件包管理、许可管理、星级、用户管理、IO 连接、连线管理、Jini 和 UPnP...2.3.3 生命周期(Lifecycle) 这一层实现了插件连接功能,提供执行时模块管理,以及模块对底层 OSGi 框架的访问。...OSGi 提供了一个服务注册的功能,用于各个插件将自己能提供的服务注册到 OSGi 核心的服务注册中心,如果某个服务想用其他服务,可以直接在服务注册中心搜索可用服务。...三 规则引擎架构 3.1 简析 规则引擎结构上来看,也属于微内核架构的一种具体实现,其中执行引擎可以看作是微内核,执行引擎解析配置好的业务流,执行其中的条件和规则,通过这种方式来支持业务的灵活多变。

73530

几种Java热插拔技术实现总结

在这篇文章中,我对Java如何实现热插拔技术进行了总结并编写了示例,对现有项目进行了分析,希望对您有帮助。...(开放服务网关规范),有两个层面的含义,一方面它指OSGi Alliance组织;另一方面指该组织制定的一个基于Java语言的服务(业务)规范——OSGi服务平台(Service Platform)。...一般Java开发人员所说的OSGI是指由OSGi Alliance组织制定的Java模块化规范,该规范的核心部分是一个框架,其中定义了应用程序的生命周期模式和服务注册。...基于这个框架定义了大量的OSGi服务:日志、配置管理,HTTP服务(运行Servlet)、XML解析、设备访问、软件包管理、许可管理、用户管理、IO连接、Jini和UPnP等。...支持文件、url或字符串中加载解析Groovy Class,实例化对象,反射调用指定方法。

1.7K10

【Java编程进阶之路 04】深入探索:Java加载器与双亲委派 & 打破双亲委派桎梏

返回Class对象:无论是由父加载器还是子类加载器加载的,最终都会返回对应的Class对象,这个对象可以被用来创建的实例或访问的静态成员。...这些加载器遵循双亲委派模型,以确保模块之间的隔离和安全性。 OSGiOSGi(Open Service Gateway initiative)是一个面向Java的模块化系统和服务平台。...下面是如何OSGi中打破双亲委派模型的一些步骤: 创建OSGi Bundle:首先,你需要使用适当的工具(如Maven的Bundle插件)创建一个OSGi bundle。...使用OSGi加载器:在OSGi环境中,你的代码将自动使用bundle的加载器来加载。...使用服务注册和查找:在OSGi中,服务是组件之间交互的主要方式。你可以注册服务(提供功能)和查找服务(使用功能)。这允许bundles之间的解耦和动态交互。

13310
领券