K 的博客

记录精彩的程序人生 开始使用

OSGi 0 篇文章

一种基于 OSGi 和 Docker 的 SaaS 平台热插拔系统设计方案【转载】

一种基于 OSGi 和 Docker 的 SaaS 平台热插拔系统设计方案【转载】

引言软件即服务(SaaS)是软件服务业的一个重要发展方向,它使得软件业转向一个运营和服务的模式。大部分的 SaaS 研究集中于独立软件开发商多租户模型上,本文基于另一种业务模型:单核心软件开发商-多插件软件开发商多租户(Kernel-Plugins)模型。核心软件开发商提供核心的软件服务(Kernel)。插件软件开发商可以基于核心软件开发商提供的 API,开发额外的插件服务(Plugin)。私有云平台运营

OSGi 6:OSGi 的配置管理:ConfigAdmin【转载】

动态的 OSGI 配置在 OSGI 语境下,很多元素都脱离不了动态的特征,配置也不例外。我们期望修改配置时可以在不重启 OSGIFramework 的情况下就能生效,OSGI 为此提供了一个 ConfigAdmin 的机制。首先,看看 demo8 的代码,demo8 里只有一个 java 类 com.ponder.Demo.demo8.configurator,这个类实现了 org.osgi.service.cm.ManagedS
OSGi 5:初次接触 OSGI Blueprint【转载】

OSGi 5:初次接触 OSGI Blueprint【转载】

Blueprint 简介看了《动态的 OSGi 服务》后,我们知道,由于 OSGI 服务的动态性,引用 OSGI 服务需要大量的代码才可以确保正常。可以想象,如果应用使用了大量的 OSGI 服务的话,直接使用 OSGIAPI 开发 OSGI 应用的方式显然是不合适的。幸好,OSGI 规范里为我们提供了很多方便的方式去使用这些 OSGI 服务,包括 DeclarativeService(声明式服务 DS)、Blueprint、iPojo

OSGi 4:动态的 OSGi 服务【转载】

OSGI 服务的动态性我们对 OSGi 服务已经有了初步了解,接上一个例子,我们再次清空/deploy 文件夹,并删除/data 文件夹;只将 demo3-1.0.jar 复制到/deploy 文件夹下;用 list 命令可以看到 demo3bundle 的状态是[installed]然后我们再将 demo2-1.0.jar 复制到/deploy 文件夹下;用 list 命令可以看到 demo3bundle 的状态变成了[Active]
OSGi 3:OSGi 中 Bundle 间的耦合:Export/Import Package 与服务【转载】

OSGi 3:OSGi 中 Bundle 间的耦合:Export/Import Package 与服务【转载】

创建 OSGiHelloWorld 工程里,我们提到 OSGI 通过不同的 classloader 来加载不同的 bundle,达到隔离 bundle 的目的,我们也提到通过 Import/ExportPackage 的方式来控制 bundle 之间“有限地”访问对方的类。这里我们只有一个 bundle(demo1-1.0.jar),但我们在这个 bundle 的 manifest.mf 里,可以看到设置了 Import-Package
OSGi 2:创建 OSGi Hello World 工程【转载】

OSGi 2:创建 OSGi Hello World 工程【转载】

OSGIbundle 工程在学完《走近 Java 模块化系统 OSGi》后我们已对 osgi 有初步的印象,今天我们将从一个 helloworld 来具体地接触 osgi。我们将采用 maven 来构建一个简单的 bundle,不熟悉 maven 的同学请先了解一下再继续。我们还会使用 servicemix 来做运行时平台,至于 IDE,则不限。首先是 maven 项目的 pom.xml,如下:<?xmlversion="1.0"enco
OSGi 1:走近 Java 模块化系统 OSGi【转载】

OSGi 1:走近 Java 模块化系统 OSGi【转载】

OSGI 是什么?刚入软件开发行业的初哥可能会觉得到处都是值得顶礼膜拜的大神,到处都是复杂到自已无法把握的代码,惊叹这些大神怎样能写出如此神奇的程序出来?!其实真正好的软件的代码,应该是结构清晰,简单易懂的代码(别提 linux 内核代码,那是另类)。说到底,软件设计就不外乎复用、内聚、藕合三个主题。OSGI 作为 Java 的模块化规范,也是为了更好地解决 java 在这三个主题的问题。要理解 OSGI,首先要知道