16.10. 置备
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 文件(或"功能存储库")描述了 feature1
和 feature2
功能:
<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/> ;
元素(< ;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/>
; 元素的内容是一组属性,遵循 key=value 标准。
16.10.11. 功能配置文件
一个功能可以指定 & lt;config
元素。
file/&
gt; 元素,而不是使用 <config/>
<configfile finalname="/etc/myfile.cfg" override="false">URL</configfile>
< config/> 元素不直接操作 Apache Karaf 配置层(就像使用 <
; config/>
; 元素时),<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:="(&(osgi.ee=JavaSE)(!(version>=1.8)))"</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 发送两种类型的通知(您可以在其中订阅和响应):
- 当功能存储库有变化(添加或删除)时。
- 当功能更改(安装或卸载)时。