osgi小笔记

 

简介

Osgi是一个插件管理体系,Equinox是OsgiR4的开源实现,其最成功的产品就是Eclipse3.x。

MANIFEST.MF

META-INF/ MANIFEST.MF文件中描述所有信息。

1.Export-Package: service,导出其他Bundle或者Service需要使用的包。

2.Import-Package: service,导入其他Bundle或者Service提供的包。

3.Bundle-ClassPath:…,Bundle或者Service使用的CLASSPATH定义,其中要添加【.

Manifest-Version: 1.0

Bundle-ManifestVersion: 2

Bundle-Name: com.greatbit.service Plug-in

Bundle-SymbolicName: com.greatbit.service

Bundle-Version: 1.0.0

Import-Package: org.osgi.framework;version="1.3.0"

Export-Package: com.greatbit.service

Bundle-ClassPath>: lib/jakarta-oro-2.0.8.jar,

 lib/jakarta-regexp-1.5.jar,

 .                    //ClassPath设置,必须加入.号 

build.properties

source.. = src/

output.. = bin/

bin.includes = META-INF/,/      //属性文件

               lib/jakarta-oro-2.0.8.jar,/   //ClassPath列表,必须加入.号

               lib/jakarta-regexp-1.5.jar,/

               . 

Bundle

1.每个Bundle是一个jar包;

2.Bundle之间通过Import package和Required-Bundle共享;

3.每个Bundle使用自己的Classloader

Service

1.服务注册和注销

ServiceRegistration serviceReg;

//注册服务

serviceReg=context.registerService(服务标识名,服务实例,服务实例属性);

//注销服务

serviceReg.unregister();

//获取服务

ServiceReference serviceRef=context.getServiceReference(服务标识名);

Object service=context.getService(serviceRef);

 

2.监听服务的状态

实现ServiceListener接口

//加入服务监听器

context.addServiceListener(ServiceListener实例,”(objectClass=服务标识名)”);

 

Osgi系统发布

第一种方法:

1.创建${Base}目录、并在其中建立plugins、configuration两个目录。

2.在configuration目录中建立config.ini文件

#Configuration File

#Mon Jun 12 21:04:30 CST 2006

//绑定的bundles

osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start,com.greatbit.service@4:start,com.greatbit.http@5:start

#eclipse.ignoreApp=true

#osgi.noShutdown=true

//设置context中可读取的属性

log4j.conf=e:/Source/OSGI/demo/configuration/log4j.properties

spring.conf=file:///e:/Source/OSGI/demo/configuration/applicationContext*.xml

3.复制以下三个文件org.eclipse.osgi_*.jar、org.eclipse.equinox.common_*.jar、org.eclipse.update.configurator_*.jar包到根目录${Base},创建run.bat文件

Java –jar org.eclipse.osgi_*.jar –console

第二种方法

1.建立configuration目录,并在configuration目录下建立config.ini,编辑config.ini文件 

osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start
eclipse.ignoreApp=true
osgi.noShutdown=true

2.复制以下jar和目录包到plugins目录,

org.eclipse.equinox.launcher.win32.win32.x86_*

org.eclipse.equinox.common_*.jar

org.eclipse.equinox.launcher_*.jar

org.eclipse.osgi_*.jar

org.eclipse.update.configurator_*.jar

【开发的Bundle JAR包】

3.复制eclipse.exe(如果是Linux系统需要复制eclipse.sh)到根目录,结构类似如图:

4.使用命令启动OSGI控制台:

eclipse –console

 

OSGI命令

ss  

help

 

Knopflerfish

Knopflerfish是OSGI的另一个优秀的开源实现。

官方站点:http://www.knopflerfish.org/

下载最新的Release包。

安装:

Java –jar knopflerfish_osgi_2.1.0.jar

启动:

java –jar ${base.dir}/knopflerfish.osgi/osgi/framework.jar

目前缺省Knopflerfish需要图形界面的支持,使用linux则需要安装vncserver服务,或者使用其他的图形桌面。

 

Felix

Felix是Apache的一个顶级项目,是OSGI的开源实现。

官方站点:http://felix.apache.org

运行:

java –jar bin/felix.jar

 

Spring OSGI

1.要遵循接口与实现分离规则,将所有interface发布在一个Service中。(待查)

2.使用Spring OSGI的Bundle或者ServiceImport包含发布interfaceService

3.注册Service

使用osgi:service 必须按照Spring OSGI 文档中6.2.1.3章节。

 

4.使用Service

使用osgi:reference  osgi:list  osgi:listener  参照文档。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值