OSGI技术简介

一、第一个OSGi 程序- HelloWorld

1、打开Eclipse File -> New -> Plug-in Project

2、输入Activitor的package名 可以参考Eclispe的提供的Templates,进行创建

 3、继承BundleActivator接口,可以在bundle启动start与停止stop时执行操作

4、Run Run configuration  或者 Debug Congfiguration,选择需要运行的Bundle 

5、配置Debug/Run Configuration 选择OSGi Framework -> New 在Bundles中选择如下bundle org.eclipse.osgi org.eclipse.equinox.console org.apache.felix.gogo.runtime org.apache.felix.gogo.command org.apache.felix.gogo.shell 点击 Debug/Run

二、How ? 创建HelloWorld Activator

1、有两个空的方法——start 和stop。其中,start 方法是在Bundle 被启动的时候调用的,stop 是在Bundle被停止的时候调用的

public class HelloWorld implements BundleActivator {

private static Log log = LogFactory.getLog(HelloWorld.class);

@Override
public void start(BundleContext arg0) throws Exception {
log.info("OSGi Platform: Hello World! ");
}

@Override
public void stop(BundleContext arg0) throws Exception {
	log.info("OSGi Platform : Bye!");
}
}

 三、What?: OSGi 概述—bundle

OSGi 并不是一个虚拟的概念, bundle 是OSGi 的物理实现, 形式是一个普通的JAR文件,只是其META-INF中manifest.mf中描述了一些标准的模块信息

OSGi 是什么?每个Bundle都是一个个体, 体现了模块化的概念. 每个bundle都包含了

Code,包括 Activator 类和其它一些接口以及实现,这个和普通的 Java 应用程序没有什么特殊的区别。

Resources,一个应用程序不可能没有资源文件,比如图片、properties 文件、XML 文件。这些资源可以随 bundle 一起存在,也可以以 fragment bundle 的方式加入

metadata.(manifest 文件中描述的所有特征),包括名字、输出的类或者包,导入的类或者包,版本号等等,参见Manifest.mf 文件 还有启动级别start level 的定义 每个Bundle 基于OSGi框架运行, OSGi为每个bundle 都创建一个ClassLoader Manifest文件:

还有启动级别start level 的定义

每个Bundle 基于OSGi框架运行, OSGi为每个bundle 都创建一个ClassLoader

Manifest文件:

四、What?: OSGi 概述—OSGi框架

自己开发的bundle 需要借助于OSGi 框架equinox才能运行,equinox 做了什么?

  1. 读入 bundle 的 headers 信息,即 MANIFEST.MF 文件;
  2. 装载相关的类和资源;
  3. 解析依赖的包;
  4. 调用其 Activator 的 start 方法,启动它;
  5. 为其提供框架事件、服务事件等服务;
  6. 调用其 Activator 的 stop 方法,停止它; 

五、What?: OSGi 概述—bundle 交互

 以Package方式交互

        通过Export-Package对外提供Package的代码

        通过Required-Bundle指定依赖的bundle

        通过Import-Package使用其它Package的代码

以服务方式交互

         底层的服务注册与发现服务机制(服务的发布,查收,绑定)

六、What? OSGi 应用

OSGi应用可以看作是由一系列相互依赖的Bundle构成的集合

 七、Why?传统开发带来的问题

 

 八、Why? Bundle 导入导出 package

九、Why? OSGI 体系结构

十、Why?—OSGi三层架构-生命周期管理

 十一、How? 使用Service(服务)-开发一个真正的应用

十二、How? Example : OSGiDemo

 十三、How? 应用部署

 十四、How? 应用部署-编写脚本并使用配置文件config.ini

十五、 Spring DM(Spring Dynamic Modules)

 

 十六、Spring DM Demo- Hello World

Java Archive | Oracle

 十七、Spring DM Demo-Service

 

 十八、Fragment bundle – 附属于某个bundle的片段bundle 

十九、Eclipse Project - Gemini.blueprint

Gemini Blueprint是OSGI Alliance借鉴了Spring Dynamic Modules 的思想,为OSGI制定的依赖注入(DI)规范,而Gemini Blueprint的前生是Spring DM,它即兼容之前的Spring DM,又实现了Blueprint规范

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值