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
属性を依存する機能タグに追加する場合、実際の機能をインストールする前に、依存機能でのバンドルのインストールとアクティベーションが強制されます。これは、特定の機能に登録されたバンドルが wrap
、war
などの事前インストールされた 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:="(&(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
コマンドは、登録されたすべての 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 レポジトリーの変更時 (追加または削除)
- 機能の変更時 (インストールまたはアンインストール)。