OSGI的含义

2023-05-16

OSGI的定义为:The Dynamic Module System For Java,主要责任就是为了让开发者能够建立动态化,模块化的java系统

使用OSGI后,应用就可以像搭积木一样完成搭建,例如对于一个正在运行的系统,其中一个模块使用到了日志服务,

但是目前系统中没有提供日志服务的模块,就可以直接从网上下载实现了日志服务API的模块,然后动态的将此模块进行安装,

其他要使用日志服务的模块就可以使用了。


Declarative Service 通过Bundle的BundleActivator来注册服务,另外的Bundle通过BundleContext

来获取服务


4大Java OSGI框架( Knopflerfish, Apache Felix, Equinox, Spring DM)


基于OSGI实现的系统自然是符合SOA体系架构的,OSGI推崇系统采用Bundle的方式来划分,Bundle

由多个Component(组件)来实现,Component通过对外提供服务接口和引用其他Bundle的服务接口来实现

Component间的交互


在OSGI中,Module被命名为Bundle,Bundle中包含了java的类和其他的一些资源,Bundle之间通过

Import和Export来使用java的包,而且,在OSGI中,系统都是由Bundle组成的,Bundle是

OSGI中唯一可以进行部署的实体,Bundle中包含java的类文件,也可以包含一些其他的资源

比如一些HTML文件,图标文件,此外Bundle中可以再包含其他的一些jar文件,在Bundle中,

最重要的则是META-INF目录下的MANIFEST.MF文件了,这个文件中存储了Bundle的元数据信息

包含在MANIFEST.MF中的元数据信息


OSGI 实现 "即插即用" "热部署" "即删即无" 的功能

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OSGI的含义 的相关文章

  • 在 Osgi 中以编程方式注册 ServletContainer

    我正在使用 OSGI 开发 JAX RS 应用程序 其中资源是动态加载的 为此 我需要以编程方式注册 ServletContainer 然后我可以调用方法 ServletContainer reload ResourceConfig 我在支
  • Clojure 热代码交换 uberjars/.classes

    我希望在项目更新之间进行热代码交换 但我还没有找到有关如何动态加载 class 文件的任何信息 更具体地说 我想要这样的东西 Make lein uberjar 获得some client 0 0 0 standalone jar 运行它j
  • OSGi + 休眠

    数据库操作不是分散在四个 osgi 包中 而是全部执行略有不同的操作 我想创建一个 简单的 OSGi 包来负责所有持久性问题 我觉得这并不像听起来那么简单 因为 每个包都有唯一的类加载器 所以我真正感激的是如果有人知道此类问题的解决方案 我
  • 当存在多个实现时,优先考虑容器内的 OSGi 服务选择

    我正在玩 OSGi 并且有一些捆绑包 捆绑包 A 和 B 都包含实现单个接口的注册服务 第三个包 C 包括用于查找实现前面提到的接口的服务的代码 A 和 B 捆绑包具有不同的版本号 但 C 似乎从第一个启动的捆绑包中获取服务 我已经更改了启
  • OSGi/Felix声明式服务:如何过滤要绑定的服务?

    我正在使用 Apache Felix 及其声明性服务 SCR 来连接捆绑包之间的服务依赖关系 例如 如果我需要访问 java util Dictionary 我可以说以下内容让 SCR 提供一个 scr reference name pro
  • 如何使用 OSGi 和 EE6 模块化企业应用程序?

    我知道已经有一些与该主题相关的问题 但我还找不到真正的解决方案 目前我正在使用 EE6 JPA CDI JSF 开发应用程序 我想采用一种更加模块化的方法 而不是将所有内容打包到 WAR 或 EAR 中并将整个内容部署在应用程序服务器上 我
  • 访问另一个 osgi 包中的资源?

    我使用 eclipse 插件项目向导 使用 eclipse Helios 创建了两个 OSGI 包 A 和 B 在捆绑包 B 的清单文件中 我添加了捆绑包 A 作为依赖项 此外 我已导出 A 中的包 以便它们对 B 可见 我在捆绑包 A 中
  • 我应该使用 Eclipse 插件(或 OSGi Bundles)作为普通的依赖管理工具吗?

    它再次发生了 我加入了一个新项目 该项目由几个具有相互依赖性的普通 Eclipse Java 项目组成 所有项目都通过项目构建路径进行管理 我发现这一切有点混乱 当谈到运行配置时 你就进入了地狱 过去 我一直坚持创建插件项目 而不是普通的
  • Spring MVC 控制器的运行时加载和动态映射请求/URL

    我们正在使用 Spring MVC 启动一个新项目 并且我们希望摆脱注释驱动的请求 url 映射 我们希望实现以下用例 用例A 用户输入 URL 请求映射处理程序检索映射列表 例如 从数据库 并基于此动态映射列表 它调用相关控制器 这是因为
  • 使用 Felix 和 Maven 创建完整的 OSGi 应用程序

    我有一组使用 Maven 构建的 OSGi 包 我想知道是否有一个可用的 Maven 插件可以让我执行以下操作 指定要包含在发行版中的一组捆绑包和 或指定单个捆绑包并解决依赖关系 构建一个完整的分发框架 我的意思是一个包含所有需要的包的 z
  • 如何在 OSGi 中将 ManagedServiceFactory 正确实现为声明式服务?

    我有需要在每个配置基础上创建的服务 每个服务都依赖于外部资源 因此应该管理它自己的生命周期 即 取消 注册服务 因此 将这些实现为 DS 并让 SCR 生成多个实例是行不通的 人们可以实现一个注册 ManagedServiceFactory
  • 尝试在 Maven 中构建具有嵌入式依赖项的 OSGi 包。似乎无法从 BND 类路径中排除传递依赖项

    基本上 我的 Web 服务必须可部署为单个 OSGi jar 包 所以 该包必须包含所有编译和运行时 Maven 依赖项 它还必须包含依赖于这些依赖项的所有非可选依赖项 即传递依赖项 我正在尝试使用 maven bundle plugin
  • 注册服务并寻找服务

    我是 OSGI 新手 我想了解如何注册服务 总是通过吗BundleContext对象在Activator 有没有其他可用的方法 假设我有一个界面IService并且有两个实现ServiceImpl1 and ServiceImpl2在同一个
  • 通过 OSGI 运行时无法从已安装的扩展实例化类

    所以 我安装了一个扩展 请参阅http docs oracle com javase tutorial ext basics index html http docs oracle com javase tutorial ext basic
  • 何时使用 ServiceLoader 而不是 OSGi 之类的东西

    作为一个对依赖项过敏的人 我什么时候会使用 OSGi 之类的东西来代替内置的 java 6http java sun com javase 6 docs api java util ServiceLoader html http java
  • 包使用冲突:捆绑包启动时的导入包

    尝试安装 htmlunit 捆绑包时出现以下错误 com springsource com gargoylesoftware htmlunit 2 6 0 370 could not be resolved Reason Package u
  • 有没有办法查看 OSGi 应用程序中注册的服务?

    我有一个运行 Equinox 的 OSGi 应用程序 我想查看该应用程序提供的服务 我怎样才能做到这一点 从 gogo shell 类型 inspect cap service 这将显示所有捆绑包注册的所有服务 如果您想显示特定捆绑包的服务
  • maven 构建 OSGi 的问题(包括依赖项)

    我目前正在从 OSGi iPOJO 和 iPOJO Annotations 开始 并尝试构建一个要在 Felix 中部署的简单组件 不幸的是 我遇到了各种问题 这些问题需要我花几个小时才能解决 或者在浪费时间后我什至无法解决 如下所示 我想
  • Cq5.5 将 servlet 过滤器应用于特定路径

    我正在 cq5 5 中开发自定义表单处理程序 一切都很顺利 我现在正在努力锁定一些安全性 我的任务之一是对表单处理程序路径实施请求限制过滤器 目前我有类似的东西 Component immediate true metatype true
  • 如何在 Karaf 中运行 Vaadin 7 应用程序?

    我几天来一直在寻找这个问题的答案 进行了大量的实验 我需要做什么才能在 Karaf 内使用 Vaadin Web 框架版本 7 运行应用程序 有一些关于它的信息 但我读过的解决方案都不起作用 我在 SO 上发现的唯一相关问题 如何将 Vaa

随机推荐

  • C语言字符串拼接的两种方法

    strcat include lt stdio h gt include lt stdlib h gt include lt string h gt int main char firstName 61 34 Hello 34 char l
  • 安装Anaconda的问题,在cmd中输入conda指令却显示不存在该指令

    安装Anaconda后配好了环境 xff0c 但在cmd中输入conda指令却显示不存在该指令 之前自己安装过几次Anconda xff0c 都比较成功 xff0c 但这次在新买的电脑里安装Anaconda却出现conda指令不存在的错误
  • AGC005 A - STring(括号匹配)

    题意 xff1a 解法 xff1a 将S看作左括号 span class token punctuation span T看作右括号 span class token punctuation span 由于每次都优先消去左边的ST span
  • 云计算学习之路——Nginx流量控制

    Nginx流量控制 文章目录 Nginx流量控制一 流量控制概念二 Nginx流量限制实战1 普通的nginx流量限制2 基于代理的nginx流量限制 三 Nginx流量限制实战 xff08 基于代理的白名单的流量限制 xff09 一 流量
  • 一键批量将mathtype公式转换成word自带公式-vba/vbnet

    文章目录 实现效果一 mathtype与word自带公式omaths1 mathtype在word中的表现形式2 实现原理3 为什么要将mathtype转换成word自带公式 xff1f 二 代码实现方式1 word自带vba实现2 vbn
  • 二进制字节码的左移、右移、逻辑右移运算

    目录 1 机器码2 lt lt 左移运算符3 gt gt 右移运算符4 gt gt gt 无符号右移 xff08 逻辑右移 xff09 运算符 1 机器码 机器码就是cpu能够直接读取并运行的代码 xff0c 用二进制编码表示 xff0c
  • 1.Ansible的安装及部署

    一 Ansible安装 1 使用epel源 软件仓库配置好官方拓展的epel源后直接安装 dnf span class token function install span ansible y ansible viersion span
  • python输入语句

    python输入语句 python2 python2当中有两种常见的输入语句方法 input 和raw input 1 xff0c input 函数 可以接收不同类型的参数 xff0c 并且返回输入的参数的类型 比如 你输入的数据是int类
  • JS 跨域设置和取Cookie

    Cookie 每当用户计算机通过浏览器请求某个页面时 xff0c 服务器端通过response进行返回 xff0c 客户端将cookie的值保存下来 xff0c Cookie不设定时间的话 xff0c 默认他的生命周期为浏览器会话的期间 x
  • python + selenium 爬取携程飞机航班

    python 43 selenium 驱动谷歌浏览器 实现模拟人工爬取航班数据 xff0c 特别注意 谷歌版本和驱动器版本 驱动获取地址 xff1a https blog csdn net weixin 44186072 article d
  • node app.js 需要注意的启动方式

    很久之前就整过node xff0c 但是后来由于各种原因又给搁置了 xff0c 但是vue和react开发项目都得用到node xff0c 所以还是决定给它从头来一遍学完 首先能搜索出来的文章也好 xff0c 官网也好 xff0c 提到 n
  • 搭建 Prometheus+Grafana 的云平台监控系统

    1 1 1 Prometheus 概述 Prometheus xff08 普罗米修斯 xff09 是一套开源的监控 amp 报警 amp 时间序列数据库的组合 xff0c 起始是由 SoundCloud 公司开发的 现在最常见的 Docke
  • 阿里巴巴矢量图标库踩坑

    今天在写一个login html的网页的时候 xff0c 图标无法显示 代码 xff1a 解决 xff1a 1 将你的项目图标下载到本地 2 在你的编辑器中 xff0c 引用就行了 效果 xff1a 这样就显示出来了 第二种方法 xff1a
  • etcd重启

    k8s启动etcd数据库 在这个主机上面 systemctl stop etcd k8s lib systemd system etcd k8s service 修改配置new修改为existing xff0c 其他不改动并保存清理数据 r
  • harbor搭建与使用

    二 harbor基础操作 1 创建用户 如下 系统管理 gt 用户管理 点击创建用户按钮 点击确定 查看用户已经创建完成 如下 可以设置该用户为管理员 如下 选中用户 点击设置为管理员 再次查看该用户 角色已经变为管理员 修改用户密码 如下
  • Docker 镜像构建入门实战指南

    Docker 镜像构建入门实战指南 一 概述 Dockerfile 是一个用来构建镜像的文本文件 文本内容包含了一条条构建镜像所需的指令和说明 官方文档 https docs docker com engine reference buil
  • 系统优化脚本支持Ubuntu和CentOS

    系统优化脚本支持Ubuntu和CentOS span class token shebang important bin bash span span class token assign left variable os span spa
  • K3S 部署

    K3S 部署 1 ubuntu安装docker span class token comment 更新系统 span span class token function sudo span span class token function
  • 运维常用系统工作命令

    1 xff0e echo命令 echo命令用于在终端输出字符串或变量提取后的值 xff0c 格式为 echo 字符串 变量 例如 xff0c 使用 变量的方式提取变量SHELL的值 xff0c 并将其输出到屏幕上 xff1a root 64
  • OSGI的含义

    OSGI的定义为 xff1a The Dynamic Module System For Java xff0c 主要责任就是为了让开发者能够建立动态化 xff0c 模块化的java系统 使用OSGI后 xff0c 应用就可以像搭积木一样完成