16.10. Provisioning


Apache Karaf は、Karaf 機能の概念を使用してアプリケーションとモジュールのプロビジョニングをサポートします。

16.10.1. Application

アプリケーションをプロビジョニングすると、すべてのモジュール、設定、および推移的なアプリケーションがインストールされます。

16.10.2. OSGi

OSGi アプリケーションのデプロイメントをネイティブにサポートします。

OSGi アプリケーションは OSGi バンドルのセットです。OSGi バンドルは通常の jar ファイルで、jar MANIFEST に別のメタデータを追加します。

OSGi では、バンドルは他のバンドルに依存します。そのため、OSGi アプリケーションをデプロイする場合には通常、アプリケーションが必要とする他のバンドルを多数、先にデプロイする必要があります。

そのため、まずこれらのバンドルを見つけ、バンドルをインストールする必要があります。ここでも、これらの "dependency" バンドルは、独自の依存関係を満たすために他のバンドルを必要とする場合があります。

さらに、通常、アプリケーションには設定が必要です (ユーザーガイドの [Configuration section|configuration] を参照)。そのため、依存関係バンドルに加えてアプリケーションを起動する前に設定を作成またはデプロイする必要があります。

このように、アプリケーションのプロビジョニングは非常に時間がかかり、煩雑になります。

16.10.3. 機能とリゾルバー

Apache Karaf では、アプリケーションをシンプルで柔軟にプロビジョニングする方法をご利用いただけます。

Apache Karaf では、アプリケーションのプロビジョニングは Apache Karaf の "機能" です。

機能は、アプリケーションを次のように記述します。

  • 名前
  • バージョン
  • オプションの説明 (最終的に長い説明が含まれる)
  • バンドルのセット
  • 設定または設定ファイルのセット (任意)
  • 依存関係機能のセット (任意)

機能をインストールすると、Apache Karaf はその機能に記述されているすべてのリソースをインストールします。つまり、機能に記述されている全バンドル、設定、および依存関係機能を自動的に解決してインストールします。

機能リゾルバーはサービス要件をチェックし、要件に一致するサービスを提供するバンドルをインストールします。デフォルトモードでは、"新しいスタイル" の機能リポジトリー (基本的に、スキーマが 1.3.0 以上の機能リポジトリー XML) に対してのみこの動作が有効になります。"以前のスタイル" の機能リポジトリー (Karaf 2 または 3 から提供) には適用されません。

serviceRequirements プロパティーを使用して、etc/org.apache.karaf.features.cfg ファイルのサービス要件の強制モードを変更できます。

serviceRequirements=default

以下の値を使用できます。

  • disable: "古いスタイル" と "新しいスタイル" の両方の機能リポジトリーのサービス要件は完全に無視されます
  • default: "古いスタイル" の機能リポジトリーのサービス要件が無視され、"新しいスタイル" の機能リポジトリーのサービス要件が有効になります。
  • enforce: "古いスタイル" および "新しいスタイル" の機能リポジトリーのサービス要件が常に検証されます。

さらに、機能で要件を定義することもできます。その場合、Karaf は、要件を満たす機能を提供するバンドルまたは機能を自動的に追加できます。

機能には、インストール、開始、停止、更新、アンインストールの完全なライフサイクルがあります。

16.10.4. 機能リポジトリー

機能は、機能 XML 記述子で記述します。この XML ファイルには、一連の機能の記述が含まれています。

機能 XML 記述子は "機能リポジトリー" と呼ばれます。機能をインストールする前に、機能を提供する features リポジトリーを登録する必要があります (後で説明するように feature:repo-add コマンドまたは FeatureMBean を使用します)。

たとえば、以下の XML ファイル (または "features リポジトリー") は、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 にはスキーマがあることに注意してください。詳細は、ユーザーガイドの [Features XML Schema section|provisioning-schema] を参照してください。feature1 機能はバージョン 1.0.0 で使用でき、2 つのバンドルが含まれます。<bundle/> 要素には、バンドルアーティファクトへの URL が含まれます (詳細はアーティファクトリーポジトリーおよび URL セクションを参照) 。feature1 機能をインストールする場合 (後で説明するように feature:install または FeatureMBean を使用)、Apache Karaf によって自動的に記述された 2 つのバンドルがインストールされます。feature2 機能はバージョン 1.1.0 で利用でき、feature1 機能およびバンドルへの参照が含まれます。<feature/> 要素には機能の名前が含まれます。特定の機能バージョンは、<feature/> 要素 (<feature version="1.0.0">feature1</feature>) の version 属性を使用して定義できます。version 属性が指定されていない場合、Apache Karaf は利用可能な最新バージョンをインストールします。feature2 機能をインストールする場合 (後で説明するように feature:install または FeatureMBean を使用)、Apache Karaf は feature1 (すでにインストールされていない場合) およびバンドルを自動的にインストールします。

機能リポジトリーは、機能 XML ファイルへの URL を使用して登録されます。

機能の状態は Apache Karaf キャッシュ (KARAF_DATA フォルダー内) に保存されます。Apache Karaf を再起動できます。以前にインストールされた機能はインストールされたままで、再起動後も使用できます。クリーンな再起動を行ったり、Apache Karaf キャッシュを削除する場合 (KARAF_DATA フォルダーを削除する)、以前に登録された features リポジトリーとインストールされた機能はすべて失われます。手作業で features リポジトリーを再度登録し、機能を再度インストールする必要があります。この動作を防ぐために、機能をブート機能として指定できます。

16.10.5. ブート機能

一部の機能は、ブート機能として記述できます。feature:install または FeatureMBean を使用して事前にインストールされていない場合でも、ブート機能は Apache Karaf によって自動的にインストールされます。

Apache Karaf の機能設定は etc/org.apache.karaf.features.cfg 設定ファイルにあります。

この設定ファイルには、ブート機能の定義に使用する 2 つのプロパティーが含まれています。

  • featuresRepositories には features リポジトリー (features XML) URL のリスト (コンマ区切り) が含まれます。
  • featuresBoot には起動時にインストールする機能のリスト (コンマ区切り) が含まれます。

16.10.6. 機能のアップグレード

同じ機能を (同じ SNAPSHOT バージョンまたは異なるバージョンで) インストールすることにより、リリースを更新できます。

機能のライフサイクルがあると、機能のステータス (開始、停止など) を制御できます。

シミュレーションを使用して更新の動作を確認することもできます。

16.10.7. オーバーライド

機能で定義されたバンドルは、ファイル etc/overrides.properties を使用してオーバーライドできます。ファイル内の各行で、オーバーライドを 1 つ定義します。構文は <bundle-uri>[;range="[min,max)"] です。上書きするバージョンが上書きされるバンドルのバージョンよりも大きく、範囲が同じ場合には、指定のバンドルは、シンボリック名が同じ機能定義にあるすべてのバンドルを上書きます。範囲が指定されていない場合には、マイクロバージョンレベルでの互換性を想定します。

たとえば、mvn:org.ops4j.pax.logging/pax-logging-service/1.8.5 の上書きは、1.8.6 または 1.7.0 ではなく、pax-logging-service 1.8.3 を上書きします。

16.10.8. 機能バンドル

16.10.8.1. 開始レベル

デフォルトでは、機能によってデプロイされるバンドルの開始レベルは、karaf.startlevel.bundle プロパティーの etc/config.properties 設定ファイルで定義された値と等しくなります。

この値を、features XML の <bundle/> 要素の start-level 属性で "オーバーライド" できます。

  <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/> 要素で dependency 属性を 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>

other 機能をインストールすると、my-project 機能も自動的にインストールされます。

依存機能のバージョン範囲を定義できます。

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

範囲内で利用可能な最高バージョンの機能がインストールされます。

1 つのバージョンを指定すると、範囲はそのバージョン以降とみなされます。

何も指定されていない場合は、利用可能な最大値がインストールされます。

正確なバージョンを指定するには、[3.1,3.1] のように範囲を指定します。

16.10.9.1. 機能の前提条件

必要な機能は、特別な種類の依存関係です。prerequisite 属性を依存する機能タグに追加する場合、実際の機能をインストールする前に、依存機能でのバンドルのインストールとアクティベーションが強制されます。これは、特定の機能に登録されたバンドルが wrapwar などの事前インストールされた URL を使用しない場合に便利です。

16.10.10. 機能設定

feature XML の <config/> 要素を使用すると、機能は設定を作成したり入力したりできます (設定 PID によって識別)。

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

<config/> 要素の name 属性は、設定 PID に対応します (詳細は設定セクションを参照してください)。

この機能のインストールは、com.foo.bar.cfg という名前のファイルを etc フォルダーにドロップするのと同じ効果があります。

<config/> 要素の内容は、key=value 標準に従ったプロパティーのセットになります。

16.10.11. 機能設定ファイル

この機能は、<config/> 要素を使用する代わりに <configfile/> 要素を指定できます。

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

(<config/> 要素を使用する場合のように) Apache Karaf 設定レイヤーを直接操作する代わりに、<configfile/> 要素は URL で指定されたファイルを直接取得し、finalname 属性で指定された場所にファイルをコピーします。

指定しない場合、場所は KARAF_BASE 変数からの相対位置になります。${karaf.home}、${karaf.base}、${karaf.etc} などの変数やシステムプロパティーを使用することもできます。

以下に例を示します。

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

ファイルが任意の場所にすでにあった場合には、その既存のファイルにカスタマイズが含まれる可能性があるので、ファイルはそのまま保持されて、設定ファイルのデプロイメントがスキップされます。この動作は、override を true に設定してオーバーライドできます。

ファイル URL は、Apache Karaf でサポートされている任意の URL です (詳細は、ユーザーガイドの [Artifacts repositories and URLs|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 コマンドは、登録されたすべての features リポジトリーをリスト表示します。

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 があります。

Apache Karaf は、features リポジトリーの URL を登録する際に機能 XML を解析します (後ほど説明する feature:repo-add コマンドまたは FeatureMBean を使用します)。Apache Karaf が features リポジトリーの 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

features リポジトリーを登録する (Apache Karaf で新しい機能を利用できるようにする) には、feature:repo-add コマンドを使用する必要があります。

feature:repo-add コマンドには、name/url 引数が必要です。この引数では、以下が可能です。

  • 機能リポジトリーの URL。これは、機能 XML ファイルへの直接の URL です。ユーザーガイドの [Artifacts repositories and URLs section|urls] に記載されている URL はすべてサポートされます。
  • etc/org.apache.karaf.features.repos.cfg 設定ファイルで定義されている機能リポジトリー名。

etc/org.apache.karaf.features.repos.cfg は、"プリインストールされた/利用可能な" 機能リポジトリーのリストを定義します。

################################################################################
#
#    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

オプションの version 引数を指定しないと、Apache Karaf は利用可能な features リポジトリーの最新バージョンをインストールします。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.repos.cfg 設定ファイルで定義された features リポジトリー名を提供する代わりに、features リポジトリーの URL を feature:repo-add コマンドに直接指定できます。

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 コマンドは機能リポジトリーを登録するだけで、機能はインストールされません。-i オプションを指定すると、feature:repo-add コマンドは features リポジトリーを登録し、この features リポジトリーに記述されているすべての機能をインストールします。

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

16.10.12.3. feature:repo-refresh

Apache Karaf は、登録時に features リポジトリー 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 コマンドは、登録した features リポジトリーから features リポジトリーを削除します。

feature:repo-remove コマンドには引数が必要です。

  • features リポジトリー名 (feature:repo-list コマンド出力のリポジトリーの列に表示)
  • features リポジトリー 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 リポジトリーを削除します。これは、features リポジトリーによって提供される機能をアンインストールしません。

-u オプションを使用すると、feature:repo-remove コマンドは features リポジトリーによって記述されたすべての機能をアンインストールします。

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

16.10.12.5. feature:list

feature:list コマンドは、利用可能なすべての機能をリスト表示します (登録された異なる features リポジトリーによって提供) 。

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. feature:install

feature:install コマンドは、機能をインストールします。

feature 引数が必要です。feature 引数は、機能の名前または機能の名前/バージョンです。(バージョンではなく) 機能の名前のみが提供されている場合に、使用可能な最新バージョンがインストールされます。

karaf@root()> feature:install eventadmin

-t または --simulate オプションを使用してインストールをシミュレートできます。これは、何が行われるかを表示するだけで、実行はされません。

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. feature:start

デフォルトでは、機能をインストールすると、その機能は自動的にインストールされます。ただし、-s オプションを feature:install コマンドに指定できます。

機能をインストールすると (開始されているかどうかに関係なく)、機能で定義されているバンドルによって提供されるすべてのパッケージが使用可能になり、他のバンドルの設定に使用できるようになります。

機能を開始すると、すべてのバンドルが開始されるため、機能はサービスも公開します。

16.10.12.8. feature:stop

機能を停止することもできるので、機能によって提供されるすべてのサービスが停止され、サービスレジストリーから削除されます。ただし、パッケージはワイヤリングで引き続き利用できます (バンドルは解決済み状態です)。

16.10.12.9. feature:uninstall

feature:uninstall コマンドは、機能をアンインストールします。feature:install コマンドとして、feature:uninstall コマンドには feature 引数が必要です。feature 引数は、機能の名前または機能の名前/バージョンです。(バージョンではなく) 機能の名前のみが提供されている場合に、使用可能な最新バージョンがインストールされます。

karaf@root()> feature:uninstall eventadmin

機能リゾルバーは、機能のアンインストール中に使用されます。アンインストールされた機能でインストールされた一時的な機能は、他の機能によって使用されていない場合には、自分でアンインストールできます。

16.10.13. Deployer

deploy フォルダーに直接ファイルをドロップすることで features XML を "ホットデプロイ" できます。

Apache Karaf には、機能デプロイヤーが同梱されています。

デプロイフォルダーに features XML をドロップすると、機能デプロイヤー次を行います: * features XML を features リポジトリーとして登録。* 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 である Feature MBean があります。

FeatureMBean オブジェクト名は org.apache.karaf:type=feature,name=* です。

16.10.14.1. 属性

FeatureMBean は、次の 2 つの属性を提供します。

  • Features は、利用可能なすべての機能の表形式のデータセットです。
  • Repositories は、すべての登録済み features リポジトリーの表形式のデータセットです。

Repositories 属性は、以下の情報を提供します。

  • Name は features リポジトリーの名前です。
  • Uri はこのリポジトリーの機能 XML に対する URI です。
  • Features は、この feature リポジトリーによって提供されるすべての機能 (名前およびバージョン) の表形式のデータセットです。
  • Repositories は、この feature リポジトリーに "インポート" された features リポジトリーの表形式のデータセットです。

Features 属性は、以下の情報を提供します。

  • Name は、機能の名前です。
  • Version は、機能のバージョンです。
  • Installed は、ブール値です。true の場合、機能が現在インストールされていることを意味します。
  • Bundles は、機能に記述されている全バンドル (バンドル URL) の表形式のデータセットです。
  • Configurations は、機能に記述されているすべての設定の表形式のデータセットです。
  • Configuration Files は、機能に記述されているすべての設定ファイルの表形式のデータセットです。
  • Dependencies は、機能に記述されているすべての依存する機能の表形式のデータセットです。

16.10.14.2. 操作

  • addRepository(url) は、url で features リポジトリーを追加します。url は、feature:repo-add コマンドのように name にすることができます。
  • addRepository(url, install)url で features リポジトリーを追加し、install が true の場合はすべてのバンドルを自動的にインストールします。url は、feature:repo-add コマンドのように name にすることができます。
  • removeRepository(url) は、url で features リポジトリーを削除します。url は、feature:repo-remove コマンドのように name にすることができます。
  • installFeature(name) は、name の feature をインストールします。
  • installFeature(name, version) は、name および version の feature をインストールします。
  • installFeature(name, noClean, noRefresh) は、障害発生時にバンドルを消去せず、バンドルをクリーニングせずに name で機能をインストールします。
  • installFeature(name, version, noClean, noRefresh) ` は、障害発生時にバンドルを消去せず、バンドルをクリーニングせずに `name および version で機能をインストールします。
  • uninstallFeature(name) は、name の feature をアンインストールします。
  • uninstallFeature(name, version) は、name および version の feature をアンインストールします。

16.10.14.3. 通知

FeatureMBean は、次の 2 種類の通知を送信します (サブスクライプおよび対応)。

  • feature レポジトリーの変更時 (追加または削除)
  • 機能の変更時 (インストールまたはアンインストール)。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.