搜索

16.10. 置备

download PDF

Apache Karaf 支持使用 Karaf 功能的概念来置备应用程序和模块。

16.10.1. Application(应用程序)

通过置备应用程序,这意味着安装所有模块、配置和传输应用程序。

16.10.2. OSGi

它原生支持 OSGi 应用程序的部署。

OSGi 应用程序是一组 OSGi 捆绑包。OSGi 捆绑包是一个常规 jar 文件,它带有 jar MANIFEST 中的其他元数据。

在 OSGi 中,捆绑包可以依赖其他捆绑包。因此,这意味着大多数时候部署 OSGi 应用程序,您首先需要部署应用程序所需的许多其他捆绑包。

因此,您必须首先找到这些捆绑包,安装捆绑包。同样,这些"依赖项"捆绑包可能需要其他捆绑包来满足自己的依赖项。

通常,应用程序需要配置(请参阅用户指南中的 [Configuration 部分| 配置])。因此,在除了依赖捆绑包外,还需要创建或部署配置,然后才能启动您的应用程序。

正如我们看到的那样,应用程序的配置可能非常长且非常快。

16.10.3. 功能和解析程序

Apache Karaf 提供简单而灵活的方式来置备应用程序。

在 Apache Karaf 中,应用程序调配是一个 Apache Karaf "feature"。

功能描述了应用程序:

  • 一个名称
  • 一个版本
  • 可选描述(以长描述为事件)
  • 组捆绑包
  • (可选)设置配置或配置文件
  • (可选)依赖项功能集

安装功能时,Apache Karaf 安装功能中描述的所有资源。这意味着它将自动解析并安装功能中描述的所有捆绑包、配置和依赖项功能。

功能解析器检查服务要求,并安装提供与要求匹配的服务的捆绑包。默认模式只为"new 风格"功能存储库启用此行为(基本来说,模式的功能库 XML 等于 1.3.0)。它不适用于"旧风格"功能存储库(与 Karaf 2 或 3 起)。

您可以使用 serviceRequirements 属性在 etc/org.apache.karaf.features.cfg 文件中更改服务要求强制实施模式。

serviceRequirements=default

可能的值有:

  • Disable: 服务要求完全忽略,对于"旧风格"和"新风格"功能存储库,都会完全忽略
  • 默认值:对于"旧风格"功能存储库,会忽略服务要求,并为"新风格"功能存储库启用。
  • enforce:服务要求总是被验证,用于"旧风格"和"新风格的功能存储库。

另外,一个功能也可以定义要求。在这种情况下,Bill 可以自动进行额外的捆绑包或功能,从而满足要求。

功能具有完整的生命周期:安装、启动、停止、更新、卸载。

16.10.4. 功能软件仓库

功能在 XML 描述符中描述。这个 XML 文件包含一组功能的描述。

XML 描述符的名称为"功能存储库"。在安装功能前,您必须注册提供该功能的功能存储库(使用 feature:repo-add 命令或 FeatureMBean 所述)。

例如,以下 XML 文件(或"功能存储库")描述了 feature1feature2 功能:

<features xmlns="http://karaf.apache.org/xmlns/features/v1.3.0">
  <feature name="feature1" version="1.0.0">
    <bundle>...</bundle>
    <bundle>...</bundle>
  </feature>
  <feature name="feature2" version="1.1.0">
    <feature>feature1</feature>
    <bundle>...</bundle>
  </feature>
</features>

我们可能会注意到 XML 的功能带有 schema。查看详情的用户指南的 [Features XML Schema 部分|provisioning-schema]。feature1 功能在版本 1.0.0 中提供,它包含两个捆绑包。& lt;bundle /> 元素包含捆绑包工件的 URL(详情请参阅 [Artifacts repositories 和 URL 部分|urls])。如果您安装 feature1 功能(使用 feature:install 或 FeatureMBean),Apache Karaf 将自动安装两个捆绑包。feature2 功能在 1.1.0 版本中可用,包含对 feature1 功能和捆绑包的引用。& lt;feature/& gt; 元素包含功能的名称。可以使用 version 属性定义为 <feature/&gt ; 元素(&lt ;feature version="1.0.0">feature1</feature>)的特定功能版本。如果未指定 version 属性,Apache Karaf 将安装最新的可用版本。如果您安装 feature2 功能(使用 feature:install 或 FeatureMBean),Apache Karaf 将自动安装 feature1 (如果还没有安装)和捆绑包。

使用功能 XML 文件的 URL 注册功能存储库。

功能状态存储在 Apache Karaf 缓存中(在 KARAF_DATA 文件夹中)。您可以重启 Apache Karaf,之前安装的功能会在重启后保留安装且可用。如果您进行一个干净的重启,或者删除 Apache Karaf 缓存(删除 KARAF_DATA 文件夹),则之前安装的所有功能存储库都将丢失:您必须再次注册功能并再次安装功能。要防止这种行为,您可以将功能指定为引导功能。

16.10.5. 引导特性

您可以将一些功能描述为引导功能。即使之前还没有通过 feature:install 或 FeatureMBean 自动安装,它会被 Apache Karaf 自动安装。

Apache Karaf 功能配置位于 etc/org.apache.karaf.features.cfg 配置文件中。

这个配置文件包含两个属性来定义引导功能:

  • featuresRepositories 包含功能存储库(功能 XML) URL 的列表(以概述形式)。
  • featuresBoot 包含要在启动时安装的功能的列表(以空格分隔)。

16.10.6. 升级功能

您可以通过安装相同的功能(使用相同的 SNAPSHOT 或不同的版本)来更新发行版本。

由于功能生命周期,您可以控制功能的状态(启动、停止等)。

您还可以使用模拟来查看更新将做什么。

16.10.7. overrides

功能中定义的捆绑包可以使用文件 etc/overrides.properties 覆盖。文件的每一行都定义一个覆盖。语法为: <bundle-uri>[;range="[min,max)"]。如果覆盖版本大于覆盖捆绑包的版本和范围匹配,给定捆绑包中的功能定义中会覆盖的所有捆绑包和范围匹配。如果没有提供范围,则假设在微版本级别的兼容性。

例如,覆盖 mvn:org.ops4j.pax.logging/pax-logging-service/1.8.5 将 overide pax-logging-service 1.8.3 而不是 1.8.6 或 1.7.0。

16.10.8. 功能捆绑包

16.10.8.1. 开始级别

默认情况下,功能部署的捆绑包在 karaf.startlevel.bundle 属性中,对 etc/config.properties 配置文件中的 etc/config.properties 配置文件中的值具有开始级别。

此值可由功能 XML 中的 < bundle /> 元素的 开始级别 属性 "overrided"。

  <feature name="my-project" version="1.0.0">
    <bundle start-level="80">mvn:com.mycompany.myproject/myproject-dao</bundle>
    <bundle start-level="85">mvn:com.mycompany.myproject/myproject-service</bundle>
  </feature>

start-level 属性可确保在使用它的捆绑包之前启动 myproject-dao 捆绑包。

通过定义您需要的软件包或服务,一种更好的解决方案就是让 OSGi 框架了解您的依赖情况。它比设置开始级别更强大。

16.10.8.2. 模拟、启动和停止

您可以使用 -t 选项对 feature:install 命令模拟功能安装。

您可以在不启动捆绑包的情况下安装捆绑包。默认情况下,功能中的捆绑包会自动启动。

功能可以指定不应自动启动捆绑包(捆绑包处于已解析状态)。要做到这一点,功能可在 < bundle /> 元素中指定 start 属性为 false:

  <feature name="my-project" version="1.0.0">
    <bundle start-level="80" start="false">mvn:com.mycompany.myproject/myproject-dao</bundle>
    <bundle start-level="85" start="false">mvn:com.mycompany.myproject/myproject-service</bundle>
  </feature>

16.10.8.3. 依赖项

一个捆绑包可以被标记为依赖项,使用 < bundle /> 元素上的 dependencies 属性设置为 true。

解析器可以使用此信息来计算要安装的捆绑包的完整列表。

16.10.9. 依赖功能

功能可以依赖于一组其他功能:

  <feature name="my-project" version="1.0.0">
    <feature>other</feature>
    <bundle start-level="80" start="false">mvn:com.mycompany.myproject/myproject-dao</bundle>
    <bundle start-level="85" start="false">mvn:com.mycompany.myproject/myproject-service</bundle>
  </feature>

将安装 my-project 功能后,还会自动安装 其他功能

可以为依赖功能定义版本范围:

<feature name="spring-dm">
  <feature version="[2.5.6,4)">spring</feature>
  ...
</feature>

将安装范围中最高版本的功能。

如果指定了单个版本,则该范围将被视为开放范围。

如果未指定,则安装最高可用。

要指定准确版本,请使用 [3.1,3.1] 等封闭范围。

16.10.9.1. 功能先决条件

先决条件功能是特殊的依赖项类型。如果将 先决条件 属性添加到依赖的功能标签中,它将强制安装,并在安装实际功能前在依赖的功能中激活捆绑包。如果给定功能中的捆绑包没有使用预安装的 URL,如嵌套或 war,这可能很方便。

16.10.10. 功能配置

功能 XML 中的 <config /> 元素允许创建和/或填充配置(由配置 PID 识别)的功能。

<config name="com.foo.bar">
  myProperty = myValue
</config>

< config/> 元素的 name 属性与配置 PID 对应(详情请参阅 [Configuration 部分|configuration])。

该功能的安装将与丢弃 etc 文件夹中的名为 com.foo.bar.cfg 的文件具有同样的影响。

< config/&gt; 元素的内容是一组属性,遵循 key=value 标准。

16.10.11. 功能配置文件

一个功能可以指定 & lt;config file/& gt; 元素,而不是使用 <config/> 元素。

<configfile finalname="/etc/myfile.cfg" override="false">URL</configfile>

< config/> 元素不直接操作 Apache Karaf 配置层(就像使用 &lt; config/&gt; 元素时),<configfile/> 元素会直接获取一个 URL 指定的文件,并复制由 finalname 属性指定的位置的文件。

如果没有指定,则位置相对于 KARAF_BASE 变量。也可以使用如 ${karaf.home}、${karaf.base}、${karaf.etc} 甚至系统属性等变量。

例如:

<configfile finalname="${karaf.etc}/myfile.cfg" override="false">URL</configfile>

如果文件已存在于所需的位置,并且跳过了配置文件的部署,因为已有的文件可能会包含自定义。这种行为可通过覆盖设置为 true 来覆盖

文件 URL 是 Apache Karaf 支持的任何 URL(有关详细信息,请参阅用户指南的 [Artifacts repositories 和 URL|urls])。

16.10.11.1. 要求

功能也可以指定预期的要求。功能解析器将尝试满足要求。为此,它会检查功能和捆绑包功能,并将自动安装捆绑包以满足要求。

例如,一个功能可以包含以下内容:

<requirement>osgi.ee;filter:=&quot;(&amp;(osgi.ee=JavaSE)(!(version&gt;=1.8)))&quot;</requirement>

要求指定只有在 JDK 版本不是 1.8(因此基本上为 1.7)时,该功能才会正常工作。

当一个可选的依赖项满足时,功能解析器也可以刷新捆绑包,从而重新运行可选的导入。

16.10.12. 命令

16.10.12.1. feature:repo-list

feature:repo-list 命令列出所有注册的功能存储库:

karaf@root()> feature:repo-list
Repository               | URL
--------------------------------------------------------------------------------------
org.ops4j.pax.cdi-0.12.0 | mvn:org.ops4j.pax.cdi/pax-cdi-features/0.12.0/xml/features
org.ops4j.pax.web-4.1.4  | mvn:org.ops4j.pax.web/pax-web-features/4.1.4/xml/features
standard-4.0.0           | mvn:org.apache.karaf.features/standard/4.0.0/xml/features
enterprise-4.0.0         | mvn:org.apache.karaf.features/enterprise/4.0.0/xml/features
spring-4.0.0             | mvn:org.apache.karaf.features/spring/4.0.0/xml/features

每个仓库都有一个名称和功能 XML 的 URL。

当您注册功能存储库 URL(使用 feature:repo-add 命令或 FeatureMBean)时,Apache Karaf 解析功能 XML。如果要强制 Apache Karaf 重新加载功能存储库 URL(因此更新功能定义),您可以使用 -r 选项:

karaf@root()> feature:repo-list -r
Reloading all repositories from their urls

Repository               | URL
--------------------------------------------------------------------------------------
org.ops4j.pax.cdi-0.12.0 | mvn:org.ops4j.pax.cdi/pax-cdi-features/0.12.0/xml/features
org.ops4j.pax.web-4.1.4  | mvn:org.ops4j.pax.web/pax-web-features/4.1.4/xml/features
standard-4.0.0           | mvn:org.apache.karaf.features/standard/4.0.0/xml/features
enterprise-4.0.0         | mvn:org.apache.karaf.features/enterprise/4.0.0/xml/features
spring-4.0.0             | mvn:org.apache.karaf.features/spring/4.0.0/xml/features

16.10.12.2. feature:repo-add

要注册功能存储库(以及 Apache Karaf 中提供新功能),您必须使用 feature:repo-add 命令。

feature:repo-add 命令需要 name/url 参数。这个参数接受:

  • 功能存储库 URL。它是一个直接指向功能 XML 文件的 URL。支持用户指南的 [Artifacts 软件仓库和 URL 部分|urls] 中描述的 URL。
  • etc/org.apache.karaf.features.cfg 配置文件中定义的功能存储库名称。

etc/org.apache.karaf.features.repos.cfg 定义了 "pre-installed/available" 功能仓库的列表:

################################################################################
#
#    Licensed to the Apache Software Foundation (ASF) under one or more
#    contributor license agreements.  See the NOTICE file distributed with
#    this work for additional information regarding copyright ownership.
#    The ASF licenses this file to You under the Apache License, Version 2.0
#    (the "License"); you may not use this file except in compliance with
#    the License.  You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#
################################################################################

#
# This file describes the features repository URL
# It could be directly installed using feature:repo-add command
#
enterprise=mvn:org.apache.karaf.features/enterprise/LATEST/xml/features
spring=mvn:org.apache.karaf.features/spring/LATEST/xml/features
cellar=mvn:org.apache.karaf.cellar/apache-karaf-cellar/LATEST/xml/features
cave=mvn:org.apache.karaf.cave/apache-karaf-cave/LATEST/xml/features
camel=mvn:org.apache.camel.karaf/apache-camel/LATEST/xml/features
camel-extras=mvn:org.apache-extras.camel-extra.karaf/camel-extra/LATEST/xml/features
cxf=mvn:org.apache.cxf.karaf/apache-cxf/LATEST/xml/features
cxf-dosgi=mvn:org.apache.cxf.dosgi/cxf-dosgi/LATEST/xml/features
cxf-xkms=mvn:org.apache.cxf.services.xkms/cxf-services-xkms-features/LATEST/xml
activemq=mvn:org.apache.activemq/activemq-karaf/LATEST/xml/features
jclouds=mvn:org.apache.jclouds.karaf/jclouds-karaf/LATEST/xml/features
openejb=mvn:org.apache.openejb/openejb-feature/LATEST/xml/features
wicket=mvn:org.ops4j.pax.wicket/features/LATEST/xml/features
hawtio=mvn:io.hawt/hawtio-karaf/LATEST/xml/features
pax-cdi=mvn:org.ops4j.pax.cdi/pax-cdi-features/LATEST/xml/features
pax-jdbc=mvn:org.ops4j.pax.jdbc/pax-jdbc-features/LATEST/xml/features
pax-jpa=mvn:org.ops4j.pax.jpa/pax-jpa-features/LATEST/xml/features
pax-web=mvn:org.ops4j.pax.web/pax-web-features/LATEST/xml/features
pax-wicket=mvn:org.ops4j.pax.wicket/pax-wicket-features/LATEST/xml/features
ecf=http://download.eclipse.org/rt/ecf/latest/site.p2/karaf-features.xml
decanter=mvn:org.apache.karaf.decanter/apache-karaf-decanter/LATEST/xml/features

您可以直接向 feature:repo-add 命令提供功能存储库名称。要安装,您可以安装 PAX JDBC:

karaf@root()> feature:repo-add pax-jdbc
Adding feature url mvn:org.ops4j.pax.jdbc/pax-jdbc-features/LATEST/xml/features

当您不提供可选 版本 参数时,Apache Karaf 将安装最新的功能存储库版本。您可以使用 version 参数指定 目标版本

karaf@root()> feature:repo-add pax-jdbc 1.3.0
Adding feature url mvn:org.ops4j.pax.jdbc/pax-jdbc-features/1.3.0/xml/features

不是提供 etc/org.apache.karaf.features.cfg 配置文件中定义的功能 存储库名称,而是直接向 feature:repo-add 命令提供功能存储库 URL:

karaf@root()> feature:repo-add mvn:org.ops4j.pax.jdbc/pax-jdbc-features/1.3.0/xml/features
Adding feature url mvn:org.ops4j.pax.jdbc/pax-jdbc-features/1.3.0/xml/features

默认情况下,feature:repo-add 命令只注册 features 仓库,它并不安装任何功能。如果指定了 -i 选项,则 feature:repo-add 命令注册 features 仓库并安装此功能存储库:

karaf@root()> feature:repo-add -i pax-jdbc

16.10.12.3. feature:repo-refresh

Apache Karaf 当您注册时解析功能存储库 XML(使用 feature:repo-add 命令或 FeatureMBean)。如果功能存储库 XML 更改,您必须指示 Apache Karaf 刷新功能存储库,以加载更改。

feature:repo-refresh 命令刷新功能存储库。

如果不使用参数,命令会刷新所有功能仓库:

karaf@root()> feature:repo-refresh
Refreshing feature url mvn:org.ops4j.pax.cdi/pax-cdi-features/0.12.0/xml/features
Refreshing feature url mvn:org.ops4j.pax.web/pax-web-features/4.1.4/xml/features
Refreshing feature url mvn:org.apache.karaf.features/standard/4.0.0/xml/features
Refreshing feature url mvn:org.apache.karaf.features/enterprise/4.0.0/xml/features
Refreshing feature url mvn:org.apache.karaf.features/spring/4.0.0/xml/features

您可以通过提供 URL 或功能存储库(以及可选的版本)来指定要刷新的功能存储库,而不是刷新所有功能存储库存储库:

karaf@root()> feature:repo-refresh mvn:org.apache.karaf.features/standard/4.0.0/xml/features
Refreshing feature url mvn:org.apache.karaf.features/standard/4.0.0/xml/features
karaf@root()> feature:repo-refresh pax-jdbc
Refreshing feature url mvn:org.ops4j.pax.jdbc/pax-jdbc-features/LATEST/xml/features

16.10.12.4. feature:repo-remove

feature:repo-remove 命令从注册的命令中删除功能存储库。

feature:repo-remove 命令需要一个参数:

  • 功能仓库名称(如 feature:repo-list 命令输出的 repository 列中显示)
  • features repository URL(如 feature:repo-list 命令输出的 URL 列中显示)
karaf@root()> feature:repo-remove org.ops4j.pax.jdbc-1.3.0
karaf@root()> feature:repo-remove mvn:org.ops4j.pax.jdbc/pax-jdbc-features/1.3.0/xml/features

默认情况下,feature:repo-remove 命令只从注册的目录中删除:它不会卸载 features 存储库提供的功能。

如果使用 -u 选项,则 feature:repo-remove 命令卸载 features 软件仓库描述的所有功能:

karaf@root()> feature:repo-remove -u org.ops4j.pax.jdbc-1.3.0

16.10.12.5. 功能:list

feature:list 命令列出所有可用功能(由不同注册的功能存储库提供):

Name                          | Version                          | Required | State       | Repository               | Description
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
pax-cdi                       | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Provide CDI support
pax-cdi-1.1                   | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Provide CDI 1.1 support
pax-cdi-1.2                   | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Provide CDI 1.2 support
pax-cdi-weld                  | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Weld CDI support
pax-cdi-1.1-weld              | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Weld CDI 1.1 support
pax-cdi-1.2-weld              | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Weld CDI 1.2 support
pax-cdi-openwebbeans          | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | OpenWebBeans CDI support
pax-cdi-web                   | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Web CDI support
pax-cdi-1.1-web               | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Web CDI 1.1 support
...

如果要按字母顺序排列功能,可以使用 -o 选项:

karaf@root()> feature:list -o
Name                          | Version                          | Required | State       | Repository               | Description
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
deltaspike-core               | 1.2.1                            |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Apache Deltaspike core support
deltaspike-data               | 1.2.1                            |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Apache Deltaspike data support
deltaspike-jpa                | 1.2.1                            |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Apache Deltaspike jpa support
deltaspike-partial-bean       | 1.2.1                            |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Apache Deltaspike partial bean support
pax-cdi                       | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Provide CDI support
pax-cdi-1.1                   | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Provide CDI 1.1 support
pax-cdi-1.1-web               | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Web CDI 1.1 support
pax-cdi-1.1-web-weld          | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Weld Web CDI 1.1 support
pax-cdi-1.1-weld              | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Weld CDI 1.1 support
pax-cdi-1.2                   | 0.12.0                           |          | Uninstalled | org.ops4j.pax.cdi-0.12.0 | Provide CDI 1.2 support
...

默认情况下,feature:list 命令显示所有功能,无论其当前状态(已安装或未安装)。

使用 -i 选项只显示安装的功能:

karaf@root()> feature:list -i
Name            | Version | Required | State   | Repository     | Description
-------------------------------------------------------------------------------------------------------------------
aries-proxy     | 4.0.0   |          | Started | standard-4.0.0 | Aries Proxy
aries-blueprint | 4.0.0   | x        | Started | standard-4.0.0 | Aries Blueprint
feature         | 4.0.0   | x        | Started | standard-4.0.0 | Features Support
shell           | 4.0.0   | x        | Started | standard-4.0.0 | Karaf Shell
shell-compat    | 4.0.0   | x        | Started | standard-4.0.0 | Karaf Shell Compatibility
deployer        | 4.0.0   | x        | Started | standard-4.0.0 | Karaf Deployer
bundle          | 4.0.0   | x        | Started | standard-4.0.0 | Provide Bundle support
config          | 4.0.0   | x        | Started | standard-4.0.0 | Provide OSGi ConfigAdmin support
diagnostic      | 4.0.0   | x        | Started | standard-4.0.0 | Provide Diagnostic support
instance        | 4.0.0   | x        | Started | standard-4.0.0 | Provide Instance support
jaas            | 4.0.0   | x        | Started | standard-4.0.0 | Provide JAAS support
log             | 4.0.0   | x        | Started | standard-4.0.0 | Provide Log support
package         | 4.0.0   | x        | Started | standard-4.0.0 | Package commands and mbeans
service         | 4.0.0   | x        | Started | standard-4.0.0 | Provide Service support
system          | 4.0.0   | x        | Started | standard-4.0.0 | Provide System support
kar             | 4.0.0   | x        | Started | standard-4.0.0 | Provide KAR (KARaf archive) support
ssh             | 4.0.0   | x        | Started | standard-4.0.0 | Provide a SSHd server on Karaf
management      | 4.0.0   | x        | Started | standard-4.0.0 | Provide a JMX MBeanServer and a set of MBeans in
wrap            | 0.0.0   | x        | Started | standard-4.0.0 | Wrap URL handler

16.10.12.6. 功能:install

feature:install 命令安装一个功能。

它需要 feature 参数。feature 参数是功能的名称,或者功能的名称/版本。如果只提供功能的名称(而非版本),则会安装最新版本。

karaf@root()> feature:install eventadmin

我们可以使用 -t--imulate 选项模拟 安装:它只显示其用途,但不能显示它:

karaf@root()> feature:install -t -v eventadmin
Adding features: eventadmin/[4.0.0,4.0.0]
No deployment change.
  Managing bundle:
    org.apache.felix.metatype / 1.0.12

您可以指定要安装的功能版本:

karaf@root()> feature:install eventadmin/4.0.0

默认情况下,feature:install 命令不详细。如果要提供有关 feature:install 命令执行的一些操作详情,您可以使用 -v 选项:

karaf@root()> feature:install -v eventadmin
Adding features: eventadmin/[4.0.0,4.0.0]
No deployment change.
Done.

如果功能包含已安装捆绑包(默认情况下,Apache Karaf)将刷新此捆绑包。现在,这个刷新可能会导致其他正在运行的应用程序出现问题。如果要禁用已安装的捆绑包的自动刷新,您可以使用 -r 选项:

karaf@root()> feature:install -v -r eventadmin
Adding features: eventadmin/[4.0.0,4.0.0]
No deployment change.
Done.

您可以使用 -s--no-auto-start 选项决定不启动功能安装的捆绑包:

karaf@root()> feature:install -s eventadmin

16.10.12.7. 功能:start

默认情况下,当您安装某个功能时,它会被自动安装。但是,您可以在 feature:install 命令中指定 -s 选项。

安装功能(启动或未启动)后,功能中定义的捆绑包提供的所有软件包都将可用,并可用于其他捆绑包中的 wiring。

启动功能时,会启动所有捆绑包,因此该功能也会公开服务。

16.10.12.8. 功能:stop

您还可以停止某个功能:这意味着功能提供的所有服务都将停止并从服务 registry 中删除。但是,软件包仍可用于 wiring(捆绑包处于已解析状态)。

16.10.12.9. 功能:uninstall

feature:uninstall 命令卸载一个功能。作为 feature:install 命令,feature:uninstall 命令需要 feature 参数。feature 参数是功能的名称,或者功能的名称/版本。如果只提供功能的名称(而非版本),则会安装最新版本。

karaf@root()> feature:uninstall eventadmin

功能解析程序在功能卸载过程中涉及到:如果其他功能没有使用,则可以卸载卸载功能所安装的功能。

16.10.13. deployer

您可以通过直接将文件拖放 在部署 文件夹中,"热部署"功能 XML。

Apache Karaf 提供了功能部署器。

当您丢弃部署文件夹中的功能 XML 时,功能部署器会发生:* 将功能 XML 注册为功能仓库。把 install 属性设置为 "auto" 的功能由功能部署器自动安装。

例如,在部署文件夹中丢弃以下 XML 将自动安装 feature1 和 feature2,但不安装 feature3:

<?xml version="1.0" encoding="UTF-8"?>
<features name="my-features" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0">

    <feature name="feature1" version="1.0" install="auto">
        ...
    </feature>

    <feature name="feature2" version="1.0" install="auto">
        ...
    </feature>

    <feature name="feature3" version="1.0">
        ...
    </feature>

</features>

16.10.14. JMX FeatureMBean

在 JMX 层上,您将有一个 MBean 专门用于管理特性和功能存储库: FeatureMBean。

FeatureMBean 对象名称为: org.apache.karaf:type=feature,name=*.

16.10.14.1. 属性

FeatureMBean 提供两个属性:

  • 功能是所有可用功能的表格数据集合。
  • repositories 是所有注册的功能存储库的表格数据集合。

Repositories 属性提供以下信息:

  • name 是功能存储库的名称。
  • URI 是此存储库的功能 XML 的 URI。
  • 功能是 功能 存储库提供的所有功能(名称和版本)的表格数据集。
  • 软件仓库 是功能存储库中"导入"的功能存储库集合。

Features 属性提供以下信息:

  • name 是功能的名称。
  • 版本是该功能的版本。
  • 安装为布尔值。如果为 true,代表当前安装该功能。
  • 捆绑包 (bundles)是功能中描述的所有捆绑包(bundles URL)的表格数据集。
  • 配置 是功能中描述的所有配置的表格数据集。
  • 配置文件是 功能中描述的所有配置文件的表格数据集合。
  • 依赖项是 功能中描述的所有依赖功能的表格数据集合。

16.10.14.2. 操作

  • addRepository(url) 使用 url 添加 features 存储库。url 可以是在 feature:repo-add 命令中的 名称
  • addRepository(url, install ) 添加带有 url 的 features 存储库,并在安装为 true 时自动安装所有捆绑包。url 可以是 feature:repo-add 命令中的 名称
  • 删除Repository(url) 将使用 url 删除 features 存储库。url 可以是在 feature:repo-remove 命令中的 名称
  • installFeature( name ) 使用名称 来安装功能。
  • installFeature( name, version) 使用名称和版本 来安装 该功能
  • installFeature(name, noClean, noRefresh) 安装带有 名称 而不在失败时清理捆绑包的功能,且没有刷新已安装的捆绑包。
  • installFeature(name, version, noClean, noRefresh)' 安装带有 'name 和 version 的功能,而不清理捆绑包(如果失败),而没有刷新已安装的捆绑包。
  • uninstallFeature(name) 使用名称 来卸载 该功能
  • uninstallFeature( name, version) 使用名称和版本 来卸载 该功能

16.10.14.3. 通知

FeatureMBean 发送两种类型的通知(您可以在其中订阅和响应):

  • 当功能存储库有变化(添加或删除)时。
  • 当功能更改(安装或卸载)时。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.