Gemini Blueprint参考文档 第10章 与bundle一起工作

来源:互联网 发布:蚂蚁信息源码 编辑:程序博客网 时间:2024/05/21 06:39

10章 与bundle一起工作

Gemini Blueprint提供了专用的schema元素用于与已存在的bundle进行交互或者安装新的bundle。虽然它不是故意要替换OSGi服务,但是bundle元素提供了一个简单的方式,即基于应用上下文的生命周期来执行bundle的动作。

bundle element定义的bean类型为 org.osgi.framework.Bundle。它提供了一种简单的方式来直接与bundle一起工作,包括驱动它们的生命周期。最简单的场景中,你只需要指定bundlesymbolic-name

<bundle id="aBundle" symbolic-name="org.xyz.abundle"/>

现在bean aBundle可以被注入任何类型Bundle的属性。

如果需要的bundle还没有安装,你可以使用location属性来表明需要安装,利用action/destroy-action属性提供了声明式控制bundle的生命周期。location 属性用于指定bundle文件的URLAction属性指定了bundle对象的生命周期操作。支持的动作值包括installstartupdatestopuninstall。这些动作与Bundle接口中定义的名字具有相同的语义(参见OSGi服务平台核心规范),弱化前置条件允许抛出异常,例如为当前没有安装的bundle指定一个start动作(它将会首先进行安装)。

下表显示动作对Bundle状态的解释:

10.1. <bundle> action

Action

UNINSTALLED

INSTALLED/RESOLVED

ACTIVE

START

安装和启动bundle

启动bundle

无动作,bundle已经启动

UPDATE

安装和更新bundle (Bundle.update())

更新bundle

更新bundle

STOP

无动作

无动作

停止bundle

UNINSTALL

无动作

卸载bundle

停止bundle,然后卸载它

 

例如:

    <!-- ensure this bundle is installed and started -->

<bundleid="aBundle"symbolic-name="org.xyz.abundle"

   location="http://www.xyz.com/bundles/org.xyz.abundle.jar"   action="start"/>

下表列出了bundle元素的属性名,可能的值和简短描述:

10.2. <bundle>元素的属性

属性名

属性值

描述

symbolic-name

任意合法的symbolic-name字符串

Bundle对象的symbolic name。通常用于与已经安装的bundle交互

location

可以转换为URL的字符串

用于安装、更新、识别bundle的位置

action

start

stop

install

uninstall

update

驱动bundle的生命周期动作。这个动作在启动时执行

destroy-action

action名字相同

驱动bundle的生命周期动作。这个动作在关闭时执行

 

Gemini Blueprint工程包含进一步支持virtual-bundle元素,它可以用于在线创建和安装OSGiBundle

 

阅读全文
0 0
原创粉丝点击