OSGI入门(1)基本概念及使用DS来声明和引用服务

1.三个Bundle控制台命令
ss: 用于显示当前运行环境中安装的Bundle及其运行状态
start: 启动指定的Bundle
stop:停止指定的Bundle
2.配置界面对应的配置文件存放目录
工作空间所在目录下的“.metadata\.plugins\org.eclipse.debug.core\.launches”文件夹下的.launch文件
3.搭建最简单的发布环境
a)首先新建一个目录,比如我这里将其命名为“osgitest”,然后将你的Eclipse安装
目录下的plugins文件夹下的org.eclipse.osgi_XXXX.jar复制过来,比如我这里的是org.eclipse.osgi_3.3.2.R33x_v20080105.jar,然后新建一个批处理文件run.bat(在非DOS/Windows操作系统上则使用对应平台的批处理方式,比如在Unix下你可能需要新建一个run.sh),文件内容为java -Dosgi.console -Dosgi.configuration.area=configuration/ -jar
org.eclipse.osgi_3.3.2.R33x_v20080105.jar 这个内容保证一行
b)在osgitest下建立一个configuration文件夹,在该文件夹下新建一个名为
config.ini的文本文件,其内容为:
osgi.noShutdown=true
eclipse.ignoreApp=true
c)发布你自己的bundle
d)在上面建好的OSGi运行环境的目录下新建一个“plugins”文件夹,将
1.jar和2.jar复制到该文件夹下,1和2是你自己发布的bundle,然后将
configuration文件夹下的config.ini文件改成如下内容:
osgi.noShutdown=true
eclipse.ignoreApp=true
osgi.bundles=plugins/1.jar,\
plugins/2.jar
osgi.bundles的内容可以使用相对路径或绝对路径,一般我们使用样例中的相对路径方式
——相对org.eclipse.osgi_xxxx.jar文件所在的路径,可以使用“..”来表示上级目录,
如果需要发布多个bundle,可以使用“,”分隔,如需换行可以在行末使用“\”
4.声明服务
1)MANIFEST.MF,创建OSGI-INF/components.xml
2)<component name="SingASong">
<implementation class="C" />
<service>
<provide interface="B" />
</service>
</component>
如果需要将一个对象声明为多个服务,你可以在上面的配置文件中的service元素下
写多个provide子元素
5 声明一个使用服务的Component即引用服务
1). 在MANIFEST.MF中添加一行声明:
Service-Component: OSGI-INF/components.xml
注意冒号之后有一个空格,如果这是最后一行的话,在行末必须回车换行。
2). 在项目根目录新建一个名为OSGI-INF的文件夹,并创建一个名为components.xml的
XML文件(这个文件命名和第1步中的声明吻合即可),
<component name="XX">//需要声明的服务
<implementation class="A" />//其实现类
<reference name="Say" interface="B"//被引用服务的接口
bind="" unbind=""
cardinality="1..1"
policy="dynamic" />
</component>
3). 创建Component实现类A
a. 加载Component的实现类
b. 创建Component的实例和上下文
c. 绑定目标服务
d. 如果有activate方法的话就调用它(在卸载的时候也是,如果有deactivate方法的
存在,则会在卸载之前先调用它)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值