[8.5.5.4 或更高版本]

定制 blueprint 名称空间处理程序

Enterprise OSGi 规范 R5 中引入的 Blueprint Container 规范提供了一种简单易用的编程模型,用于在 OSGi 环境中创建动态应用程序而不必增加 Java™ 代码的复杂性。

有关 Enterprise OSGi 规范发行版的更多信息,请参阅 OSGi 规范下载

Blueprint Container 规范为 OSGi 定义依赖性注入框架。它旨在处理 OSGi 的动态性质,其中服务可随时变为可用和不可用。此规范同时旨在处理简单旧 Java 对象 (POJO),以便可在 OSGi 框架内部和外部使用相同对象。用于定义和描述应用程序的各种组件的 Blueprint XML 文件是 Blueprint 编程模型的关键。该规范描述这些组件如何实例化并连接到一起以形成正要运行的应用程序。有关更多信息,请参阅 OSGi Blueprint Container 规范

每个 blueprint 捆绑软件必须包含一个 blueprint XML 文件,以便 blueprint 运行时处理捆绑软件的 blueprint 组件。标准 blueprint 元素由 OSGi blueprint 规范定义,并且是每个 blueprint XML 文档中所必需的。它将缺省文档名称空间设置为 http://www.osgi.org/xmlns/blueprint/v1.0.0,例如:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
可使用标准 XML 规则将其他名称空间添加至 blueprint(作为带前缀条目或直接在定制 XML 元素中)。这些名称空间可添加到顶部,或直接插入到定制 XML 元素中。如果是有效 XML,那么会得到正确解析。例如,已在顶级 blueprint 元素中定义:
<blueprint
  xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
  xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0">
例如,直接插入到定制元素中:
<transaction method="*" value="Required"
  xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0"/>

Apache Aries 项目提供的 Blueprint 运行时实现用于支持 OSGi Liberty 应用程序中包含的 Blueprint 捆绑软件。有关更多信息,请参阅 Apache Aries。Aries Blueprint 运行时提供称为名称空间处理程序的扩展机制。名称空间处理程序为定制 blueprint 扩展或名称空间提供处理器。名称空间处理程序实现 org.apache.aries.blueprint.NamespaceHandler 接口,并且必须在 OSGi 服务注册表中使用关联 osgi.service.blueprint.namespace 服务属性注册。此属性表示此处理程序可处理的名称空间 URI。例如:http://aries.apache.org/xmlns/transactions/v1.0.0。服务属性值可为单个字符串URI集合或者一组字符串URI

blueprint 运行时对 blueprint 描述符进行两次解析。第一次很快,仅查找 blueprint 捆绑软件使用的每个名称空间。如果 blueprint 捆绑软件使用非标准名称空间,那么 Blueprint Container 尝试在 OSGi 服务注册表中查找每个定制名称空间的 NamespaceHandler 服务。NamespaceHandler 服务告知每个 XML 名称空间:它可通过使用 OSGi 服务属性进行处理。找到捆绑软件中使用的每个定制名称空间的 NamespaceHandler 服务之前,blueprint 运行时不会解析 blueprint XML。除非可找到每个定制名称空间的 NamespaceHandler 服务,否则 Blueprint Container 无法处理捆绑软件。此结果可能意味着 NamespaceHandler 不存在时 Blueprint Container 将无限期等待。如果遇到此情况,那么 Blueprint Container 会向日志发出警告。blueprint 解析器开始解析 blueprint XML 文件时,它会解析所有标准 blueprint 元素。如果解析器遇到定制元素,那么解析器会呼叫已告知对该定制元素的名称空间的支持的 NamespaceHandler。此处,NamespaceHandler 有机会处理定制元素中的信息、修改运行时 blueprint 模型或执行任何其他操作。如果任何名称空间定义中存在输入错误,那么 blueprint 几乎必然无法启动。

定制 NamespaceHandler 服务可由正在 Liberty 中运行的任何捆绑软件(包括 Liberty 功能部件捆绑软件OSGi 应用程序捆绑软件)提供。


用于指示主题类型的图标 参考主题

信息中心的条款和条件 | 反馈


时间戳记图标 最近一次更新时间: Wednesday, 2 September 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=rwlp_blueprint_namespace_handler
文件名:rwlp_blueprint_namespace_handler.html