OSGi R4服务平台核心规范 :第六章 Framework API(5)

 由  满江红开放技术研究组织 发布

版权说明

本文档版权归原作译者所有。 在免费、且无任何附加条件的前提下,可在网络媒体中自由传播。

如需部分或者全文引用,请事先征求作译者意见。

如果本文对您有些许帮助,表达谢意的最好方式,是将您发现的问题和文档改进意见及时反馈给作者。当然,倘若有时间和能力,能为技术群体无偿贡献自己的所学为最好的回馈。

本文档可从http://www.redsaga.com获取最新更新信息

6.1.8. public class BundleException extends Exception

用于指出发生了bundle生命周期问题的框架异常。

由框架来创建BundleException对象,用于标识在bundle生命周期中的异常状况。BundleExceptions不应该由bundle开发人员来创建。

为了和一般的异常链机制一致,可以对异常进行更新。

6.1.8.1.public BundleException( String msg, Throwable cause )

msg 相关消息
cause 异常的原因
创建一个封装了另一个异常的BundleExceptions对象。

6.1.8.2.public static final int STARTED = 22

msg 相关消息
创建一个指定了消息的BundleExceptions异常对象。

6.1.8.3.public Throwable getCause( )

返回异常的原因,或者如果创建时没有指定原因,返回null。
Returns 异常的原因,或者如果没有指定原因,返回null。
Since 1.3

6.1.8.4.public Throwable getNestedException( )

返回异常中任何嵌套的异常。
这个方法要比一般意义下的异常链机制产生时间早。现在更推荐使用getCause()方法来获得信息。
Returns 嵌套的异常,或者如果没有嵌套异常,返回null。

6.1.8.5.public Throwable initCause( Throwable cause )

cause 异常的原因
只有当构造的时候才可以设置异常的原因。
Returns 异常原因
Throws IllegalStateException – 通称这个方法将抛出异常,因为只有在构造的时候才可以设置原因。
Since 1.3

6.1.9. public interface BundleListener extends EventListener

bundle事件监听器。当发生了BundleEvent,将这个BundleEvent事件异步发送到bundle监听器(BundleListener)。

BundleListener是一个监听器接口,bundle开发人员可以实现这个接口。

框架可以使用BundleContext.addBundleListener[p.137] 方法来注册BundleListener对象。当安装、解析、启动、停止、更新、取消解析或者卸载bundle时,发生了Bundle事件,这时就会使用这个事件来调用BundleListener。

参阅:BundleEvent[p.148]。

6.1.9.1.public static final int STARTED = 22

event BundleEvent
收到bundle发生了生命周期改变的通知。

6.1.10. public final class BundlePermission extends BasicPermission

需要或者是提供一个bundle的权限,或者是接收或者附加一个片断的bundle权限。
bundle的符号名称定义了一个惟一的完全资格的名称。
例如:
org.osgi.example.bundle
BundlePermission权限有四种操作:PROVIDE,REQUIRE,HOST和FRAGMENT。
Since 1.3

6.1.10.1.public static final String FRAGMENT = “fragment”

操作“fragment”

6.1.10.2.public static final String HOST = “host”

操作“host”

6.1.10.3.public static final String PROVIDE = “provide”

操作“provide”

6.1.10.4.public static final String REQUIRE = “require”

操作“require”

6.1.10.5.public BundlePermission( String symbolicName, String actions )

symbolicName bundle符号名称
actions PROVIDE,REQUIRE,HOST,FRAGMENT(规范排序)
定义了提供而且/或者请求一个在OSGi框架中指定的符号名称的片断的权限。
将bundle的权限授予给bundle的所有的版本。需要提供bundle的一个bundle必须要具有相应的对符号名称的BundlePermission;而如果一个bundle请求其他bundle,则必须要有相应的对符号名称的BundlePermission;指定了片断附主的bundle必须要有相应的对符号名称的BundlePermission。

6.1.10.6.public boolean equals(object obj)

obj 和这个BundlePermission类进行比较的Object对象
检测两个BundlePermission对象是否相等。这个方法检测指定对象是否和这个BundlePermission具有相同的bundle符号名称和操作。
Returns 如果obj对象是一个BundlePermission对象,而且它们具有相同的bundle符号名称和操作,那么返回true;否则返回false。

6.1.10.7.public String getActions()

和这个BundlePermission类进行比较的Object对象
返回BundlePermission对象的操作,表示为一个范式字符串。
通常按照如下顺序返回:
PROVIDE,REQUIRE, HOST,FRAGMENT
Returns 表示BundlePermission对象操作的范式字符串

6.1.10.8.public int hashCode( )

返回这个对象的哈希码
Returns 这个对象的哈希码

6.1.10.9.public boolean implies( Permission p )

p 待查询的目标权限
判断这个BundlePermission对象是否蕴含了指定的权限。在这个方法中,检测对象的符号名称中是否蕴含了目标的符号名称。BundlePermission的操作列表必须要么匹配目标对象的列表,要么是允许目标对象的权限列表的,这样,才可以说是蕴含了目标BundlePermission操作。
如果bundle需要隐含权限,那么对权限描述应该使用符号名称描述。
x.y.*,”provide” -> x.y.z,”provide” is true
*,”require” -> x.y, “require” is true
*,”provide” -> x.y, “require” is true
x.y,”provide” -> x.y.z, “provide” is false
Returns 如果这个对象隐含了指定的bundle权限操作,那么返回true;
否则返回false。

6.1.10.10.public PermissionCollection newPermissionCollection( )

返回一个新的PermissionCollection对象,这样就可以对BundlePermission进行排序。
Returns 一个新的PermissionCollection对象

6.1.11. public interface Configurable

支持可配置的对象。
Configurable是一个接口,bundle的开发人员使用这个接口来开发一个可配置的服务。如果一个bundle需要配置一个服务,那么需要测试这个服务对象是否为Configurable的一个实例对象。
Deprecated 从1.2后废弃,请使用配置管理服务

6.1.11.1.public Object getConfigurationObject( )

返回这个服务的配置对象。
实现了Configurable的服务在返回一个服务的Configurable对象时应该小心,因为这个对象是易变的。
如果Java运行环境支持权限,那么强烈建议在返回一个Configurable对象之前对调用者的权限进行检查。
Returns 从这个服务的Configurable对象
Throws SecurityException – 如果Java运行环境支持权限,而调用者没有相应的权限。
Deprecated 从1.2后开始废弃,请使用配置管理服务(Configuration Admin service)。

6.1.12. public interface Constants

定义了OSGi环境特性、服务特性和清单标记的标准名称。
如果没有特别说明,这些键的值的类型均为java.lang.String。
Since 1.1

6.1.12.1.public static final String BUNDLE_ACTIVATOR = “Bundle-Activator”

清单标记(Bundle-Activator)的属性,标识这个bundle的启动类。
如果有这个属性,那么也就指定了当启动和停止bundle时框架所调用的start方法和stop方法的来源,来自于指定的bundle资源实现了BundleActivator接口的类。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。

6.1.12.2.public static final String BUNDLE_CATEGORY = “Bundle-Category”

清单标记(Bundle-Category)的属性,标识这个bundle的分类。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。

6.1.12.3.public static final String BUNDLE_CLASSPATH = “Bundle-ClassPath”

清单标记(Bundle-ClassPath)的属性,标识这个JAR文件中的目录列表,表示用于扩展bundle类路径的bundle资源。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。

6.1.12.4.public static final String BUNDLE_CONTACTADDRESS = “Bundle-ContactAddress”

清单标记(Bundle-ContactAddress)的属性,标识bundle发生问题之后报送的地址;例如,一个Email地址。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。
清单标记(Bundle-Copyright)的属性,标识bundle的版权信息。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。

6.1.12.6.public static final String BUNDLE_DESCRIPTION = “Bundle-Description”

清单标记(Bundle-Description)的属性,包含了bundle功能的简单说明。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。

6.1.12.7.public static final String BUNDLE_DOCURL = “Bundle-DocURL”

清单标记(Bundle-DocURL)的属性,标识bundle文档说明的URL地址,从这个地址可以获得更多的信息。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。

6.1.12.8.public static final String BUNDLE_LOCALIZATION = “Bundle-Localization”

清单标记(Bundle-Localization)的属性,标识bundle本地化条目的基准名称。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。
See Also BUNDLE_LOCALIZATION_DEFAULT_BASENAME[p.154]
Since 1.3

6.1.12.9.public static final String BUNDLELOCALIZATIONDEFAULT_BASENAME = “OSGI-INF/l10n/bundle”

清单标记Bundle-Localization的默认值
See Also BUNDLE_LOCALIZATION[p.154]
Since 1.3

6.1.12.10.public static final String BUNDLE_MANIFESTVERSION = “Bundle-ManifestVersion”

清单标记(Bundle-ManifestVersion)的属性,标识bundle的清单版本。bundle的清单的版本表示了这个清单文件是采用了某一个特定的bundle清单版本所完成的。在OSGi R4中,或者是以后开发的bundle中,必须要指明bundle的清单文件版本号码。bundle清单版本由OSGi R4定义,或者更高级别。例如V1.3的OSGi框架规范表示为“2”
Since 1.3
清单标记(Bundle-Name)的属性,标识bundle的名称。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。

6.1.12.12.public static final String BUNDLE_NATIVECODE = “Bundle-NativeCode”

清单标记(Bundle-NativeCode)的属性,标识硬件环境的编号和bundle在每一个环境下的本地代码库。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。

6.1.12.13.public static final String BUNDLENATIVECODELANGUAGE = “language”

清单标记属性(language),标识编写bundle本地代码所使用的语言。参考ISO 639中关于语言的规定。
属性值在Bundle-NativeCode中描述,例如: Bundle-NativeCode: http.so ; language=nl_be ...

6.1.12.14.public static final String BUNDLENATIVECODEOSNAME = “osname”

清单标记属性(osname),标识运行Bundle-NativeCode中指定的本地代码需要的操作系统名称。
属性值在Bundle-NativeCode中描述,例如: Bundle-NativeCode: http.so ; osname=Linux ...

6.1.12.15.public static final String BUNDLENATIVECODEOSVERSION = “osversion”

清单标记属性(osversion),标识运行Bundle-NativeCode中指定的本地代码的操作系统版本。
属性值在Bundle-NativeCode中描述,例如:
Bundle-NativeCode: http.so ; osversion=”2.34” ...

6.1.12.16.public static final String BUNDLENATIVECODEPROCESSOR = “processor”

清单标记属性(processor),标识运行Bundle-NativeCode中指定的本地代码的处理器。
属性值在Bundle-NativeCode中描述,例如:
Bundle-NativeCode: http.so ; processor=x86 ...

6.1.12.17.public static final String BUNDLE_REQUIREDEXECUTIONENVIRONMENT = “Bundle-RequiredExecutionEnvironment”

清单文件标记(Bundle-RequiredExecutionEnvironment),标识bundle需要的执行环境。如果在这个标记中的执行环境和bundle实现的一个执行环境匹配,那么服务平台就会运行这个bundle。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。
Since 1.2

6.1.12.18.public static final String BUNDLE_SYMBOLICNAME = “Bundle-SymbolicName”

清单文件标记(Bundle-SymbolicName),标识bundle的符号名称。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。
Since 1.3

6.1.12.19.public static final String BUNDLESYMBOLICNAMEATTRIBUTE = “bundle-symbolic-name”

清单标记属性(bundle-symbolic-name),标识导出了在Import-Package中指定的导入包的bundle的符号名称。
属性值在Import-Package中描述,例如:
Import-Package: org.osgi.framework; bundle-symbolicname=
”com.acme.module.test”
Since 1.3

6.1.12.20.public static final String BUNDLE_UPDATELOCATION = “Bundle-UpdateLocation”

清单文件标记(Bundle-UpdateLocation),标识在更新bundle时,新版本的bundle的下载位置。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。

6.1.12.21.public static final String BUNDLE_VENDOR = “Bundle-Vendor”

清单文件标记(Bundle-Vendor),标识bundle的供应商。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。

6.1.12.22.public static final String BUNDLE_VERSION = “Bundle-Version”

清单文件标记(Bundle-Version),标识bundle的版本。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。

6.1.12.23.public static final String BUNDLEVERSIONATTRIBUTE = “bundle-version”

清单标记属性(bundle-version),标识在Require-Bundle或者Fragment-Host中指定的bundle的版本范围。缺省值为0.0.0。
属性值在Require-Bundle中描述,例如:
Require-Bundle: com.acme.module.test; bundle-version=”1.1”
Require-Bundle: com.acme.module.test; bundle-version=”[1.0,2.0)”
这个属性值使用一种点分十进制数字来表示bundle版本的范围。如果一个bundle-version属性值为一个版本号而不是版本范围,那么就表示大于或者等于这个版本值的所有版本。
Since 1.3

6.1.12.24.public static final String DYNAMICIMPORT_PACKAGE = “DynamicImport-Package”

清单文件标记(DynamicImport-Package),标识在执行过程中可能会动态导入的包。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。
Since 1.2

6.1.12.25.public static final String EXCLUDE_DIRECTIVE = “exclude”

清单文件指令(exclude),列出了在Export-Package中的导出包中不允许导出的类或者资源的列表。
属性值在Export-Package中描述,例如: Export-Package: org.osgi.framework; exclude:=”MyStuff*”
Since 1.3

6.1.12.26.public static final String EXPORT_PACKAGE = “Export-Package”

清单文件标记(Export-Package),标识bundle提供给框架的导出包。
可以通过Bundle.getHeaders方法获得的Dictionary对象获得这个属性的值。
查看评论