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的含义 的相关文章

  • 未找到 ID 为“osgi”的插件

    我正在尝试建立一个项目 https github com fge btf https github com fge btf 本地使用 gradle 有一个插件 osgi 正在使用 但每当我构建它时 我都会收到错误插件未找到 我尝试过提供不同
  • Clojure 热代码交换 uberjars/.classes

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

    我对 OSGi 平台非常陌生 拥有 OSGi 捆绑包B1依赖于另一个包B2 这很可能不是由容器提供的 我可以将两个包打包在同一个包中吗jar 如果是 该怎么做 如果jar已安装并且捆绑包已安装 是的 你可以这样做 有点 通常 OSGi 包是
  • Glassfish 作为 OSGi 容器

    我正在评估 OSGi 容器 主题是使用 Glassfish 来包含我的 OSGi 应用程序组件 我的问题是 Glassfish 对此有好处吗 有人有以这种方式使用它的经验吗 背景 该应用程序不是 Java EE 应用程序 而是 Spring
  • 在 Liferay 7 中创建自定义标签库

    我正在使用 Liferay 7 和 OSGi 模块编写一个应用程序 我需要创建一个跨所有模块 portlet 可用的自定义标签库 但我几乎不知道从哪里开始 你有什么主意吗 我应该将 taglib 定义 类和 JSP 存储在 OSGi 模块中
  • 如何从头开始对包使用 org.apache.felix.scr 注释?

    我已经开始为 apache felix 开发一个包 并使用 ops4j pax 插件来完成 我已经创建了项目结构pax create project在那里做了正常的pax create bundle 然后你就得到了用 Maven 构建整个项
  • OSGi/Felix声明式服务:如何过滤要绑定的服务?

    我正在使用 Apache Felix 及其声明性服务 SCR 来连接捆绑包之间的服务依赖关系 例如 如果我需要访问 java util Dictionary 我可以说以下内容让 SCR 提供一个 scr reference name pro
  • OSGI环境中单例的迁移解决方案

    我正在 Java EE 环境中工作 其中每个应用程序都位于其自己的 war 文件中 在每个应用程序 war 文件的 WEB INF lib 中 有一个由所有应用程序共享的公共 jar 这个公共 jar 包含几个可以从代码中的许多点访问的单例
  • Java 17 是否支持任何 OSGi 版本?

    我已经使用 Java17 运行了 OSGi 捆绑包 并在启动时得到了以下结果 Java 17 还不支持 OSGi 吗 org osgi util tracker ServiceTracker getServices 为空 None
  • 将 OSGi 包分组以形成一致的“应用程序”的最佳方式是什么

    OSGi 方式 是开发包含离散的 连贯的功能块的单独的包 有时这些包包含实用程序类 有时它们依赖于实用程序类并设置自己的 OSGi 服务 另一方面 用户不太可能接触到捆绑包 他们更关心的是应用 一个执行任务或解决问题的软件 通常 应用程序将
  • Karaf OSGi 中无法加载 ScriptEngineManager 和 ScriptEngine(未找到 Nashorn)

    我正在尝试使用ScriptEngineManager and ScriptEngine使用 Java 执行一些 JavaScript 代码 我使用 Java 8 在 Karaf OSGi 下执行此代码 我使用的示例在示例 Java 类中运行
  • OSGi 声明性服务的绑定顺序

    假设我使用 OSGi 声明性服务 并且我有一个服务 该服务具有多个带有策略 动态的引用 A 强制一元 B 强制一元 C 强制倍数 D 可选一元 E 可选的多个 当我的服务开始时 所有参考资料都可用 有没有办法控制bind的调用顺序 我想让
  • 尝试在 Maven 中构建具有嵌入式依赖项的 OSGi 包。似乎无法从 BND 类路径中排除传递依赖项

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

    我现在正在开发一个项目几个月 我们使用 p2 repositories 我知道我从他们那里得到了我的依赖 但现在我想更深入地研究这个主题 我想知道 p2 存储库到底是什么 定义 我认为这与 OSGi 和 Nexus 有关 但它从哪里来呢 当
  • OSGi 应用程序修补策略

    修补 OSGi 容器的适当机制是什么 1 Should the bundles binaries jars have the same name as the old ones then a Replace the bundle with
  • 在 Java 8 中使用 Java 7 比较器

    情况 我有一个 OSGi 项目 我正在尝试迁移到 Java 8 在我的项目中 我依赖于我 OSGi fied 的第三方库 只需添加MANIFEST MF文件并将元数据放入其中 这些库是从只读 SVN 存储库中签出的 因此我可以在需要时签出更
  • 有没有办法查看 OSGi 应用程序中注册的服务?

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

    我目前正在从 OSGi iPOJO 和 iPOJO Annotations 开始 并尝试构建一个要在 Felix 中部署的简单组件 不幸的是 我遇到了各种问题 这些问题需要我花几个小时才能解决 或者在浪费时间后我什至无法解决 如下所示 我想
  • XPage Osgi 插件开发中

    背景在过去一年左右的时间里 我设计了许多工具 旨在帮助我进行 XPages 编程 这些工具主要包括辅助 java 类 扩展日志记录 利用 OpenLogger 和我自己的东西 以及我个人认为没有我就无法工作的其他一些东西 已经与我的雇主讨论
  • ClassNotFoundException:在嵌入了 cxf 依赖项的 OSGi 包中找不到 org.glassfish.jersey.internal.RuntimeDelegateImpl

    这与jax rs 2 0 更改默认实现 https stackoverflow com questions 17366266 jax rs 2 0 change default implementation我有一个 OSGi 包 其中包含

随机推荐

  • 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 应用就可以像搭积木一样完成