16.10. 프로비저닝
Apache Karaf는 Karaf 기능의 개념을 사용하여 애플리케이션 및 모듈 프로비저닝을 지원합니다.
16.10.1. 애플리케이션
애플리케이션을 프로비저닝하면 모든 모듈, 구성 및 전송 애플리케이션을 설치합니다.
16.10.2. OSGi
기본적으로 OSGi 애플리케이션 배포를 지원합니다.
OSGi 애플리케이션은 OSGi 번들 세트입니다. OSGi 번들은 일반 Cryostat 파일로, 추가 메타데이터가 MANIFEST에 있습니다.
OSGi에서 번들은 다른 번들에 따라 달라질 수 있습니다. 따라서 OSGi 애플리케이션을 배포하려면 대부분의 경우 애플리케이션에 필요한 많은 다른 번들을 먼저 배포해야 합니다.
따라서 먼저 이러한 번들을 찾아서 번들을 설치해야 합니다. 다시 말하지만 이러한 "종속성" 번들은 자체 종속성을 충족하기 위해 다른 번들이 필요할 수 있습니다.
일반적으로 애플리케이션에는 구성이 필요합니다(사용자 가이드의 [구성 섹션|구성] 참조). 따라서 애플리케이션을 시작하기 전에 종속성 번들을 추가하거나 구성을 생성해야 합니다.
우리가 볼 수 있듯이 애플리케이션 프로비저닝은 매우 길고 단단할 수 있습니다.
16.10.3. 기능 및 해결 방법
Apache Karaf는 애플리케이션을 프로비저닝할 수 있는 간단하고 유연한 방법을 제공합니다.
Apache Karaf에서 애플리케이션 프로비저닝은 Apache Karaf "기능"입니다.
기능은 다음과 같이 애플리케이션을 설명합니다.
- 이름
- 버전
- 선택적 설명(연장 설명 포함)
- 번들 세트
- 선택 사항으로 설정된 구성 또는 구성 파일
- 필요한 경우 종속성 기능 세트
기능을 설치하면 Apache Karaf가 기능에 설명된 모든 리소스를 설치합니다. 즉, 기능에 설명된 모든 번들, 구성 및 종속성 기능을 자동으로 확인하고 설치합니다.
기능 확인자는 서비스 요구 사항을 확인하고 요구 사항과 일치하는 서비스를 제공하는 번들을 설치합니다. 기본 모드는 "새 스타일"에 대해서만 이 동작을 활성화합니다(기본적으로 스키마가 1.3.0) 이상인 기능 XML이 있습니다. "기존 스타일" 기능 리포지토리(카르프 2 또는 3)에는 적용되지 않습니다.
serviceRequirements
속성을 사용하여 etc/org.apache.karaf.features.cfg
파일에서 서비스 요구 사항 적용 모드를 변경할 수 있습니다.
serviceRequirements=default
가능한 값은 다음과 같습니다.
- 비활성화: "오래된 스타일" 및 "새 스타일" 기능 리포지토리 모두에 대해 서비스 요구 사항이 완전히 무시됩니다.
- 기본값: "old style" 기능 리포지토리는 서비스 요구 사항이 무시되고 "새 스타일" 기능 리포지토리에 대해 활성화됩니다.
- 적용: "기존 스타일" 및 "새 스타일" 기능 리포지토리에 대해 서비스 요구 사항을 항상 확인합니다.
또한 기능은 요구 사항을 정의할 수도 있습니다. 이 경우 Karaf는 요구 사항을 충족하기 위해 기능을 제공하는 번들 또는 기능을 자동으로 추가할 수 있습니다.
기능에는 설치, 시작, 중지, 업데이트, 제거 등 전체 라이프사이클이 있습니다.
16.10.4. 리포지토리 기능
기능은 기능 XML 설명자에 설명되어 있습니다. 이 XML 파일에는 기능 집합에 대한 설명이 포함되어 있습니다.
기능 XML 설명자의 이름은 "features repository"입니다. 기능을 설치하려면 기능을 제공하는 기능 리포지토리를 등록해야 합니다(후에 설명된 대로 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 섹션|provisioning-schema]을 참조하십시오. feature1
기능은 버전 1.0.0
에서 사용할 수 있으며 두 개의 번들을 포함합니다. < bundle/
> 요소에는 번들 아티팩트에 대한 URL이 포함되어 있습니다(자세한 내용은 [Artifacts 리포지토리 및 URL 섹션|urls] 참조). feature1
기능( feature:install
또는 later에 설명된 대로 FeatureMBean 사용)을 설치하는 경우 Apache Karaf는 설명된 두 개의 번들을 자동으로 설치합니다. feature2
기능은 버전 1.1.0
에서 사용할 수 있으며 feature1
기능과 번들에 대한 참조가 포함되어 있습니다. & lt;feature/&
gt; 요소에는 기능 이름이 포함되어 있습니다. 특정 기능 버전은 <feature /
> 요소의 version
속성을 사용하여 정의할 수 있습니다( <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. 덮어쓰기
기능에 정의된 번들은 etc/overrides.properties 파일을 사용하여 재정의할 수 있습니다. 파일의 각 행은 하나의 덮어쓰기를 정의합니다. 구문은 <bundle-uri>[;range="[min,max"] 지정된 번들이 재정의된 번들의 버전 및 범위가 일치하는 경우, 동일한 심볼릭 이름으로 기능 정의의 모든 번들을 재정의합니다. 범위를 지정하지 않으면 마이크로 버전 수준에서의 호환성이 가정됩니다.
예를 들어 재정의 mvn:org.ops4j.pax.logging/pax-logging-service/1.8.5는 pax-logging-service 1.8.3을 덮어쓰지만 1.8.6 또는 1.7.0은 덮어씁니다.
16.10.8. 기능 번들
16.10.8.1. 시작 수준
기본적으로 기능에 배포된 번들의 start-level은 etc/config.properties
구성 파일에 정의된 값과 동일합니다. karaf.startlevel.bundle
속성입니다.
이 값은 기능 XML에서 < bundle/
> 요소의 start-level
속성에 의해 "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. 시뮬레이션, 시작 및 중지
feature:install
명령에 -t
옵션을 사용하여 기능 설치를 시뮬레이션할 수 있습니다.
번들을 시작하지 않고 설치할 수 있습니다. 기본적으로 기능의 번들이 자동으로 시작됩니다.
기능은 번들을 자동으로 시작하지 않도록 지정할 수 있습니다(번들은 해결된 상태로 유지됨). 이를 위해 기능은 < bundle/
> 요소에서 false로 start
속성을 지정할 수 있습니다.
<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 /> 요소에서 번들에
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을 사용하는 경우(예: 랩
또는전) 이 유용할 수 있습니다
.
16.10.10. 기능 구성
기능 XML의 <config/
> 요소는 기능을 통해 구성을 생성 및/또는 채울 수 있습니다(구성 PID로 식별됨).
<config name="com.foo.bar"> myProperty = myValue </config>
< config/
> 요소의 name
속성은 구성 PID에 해당합니다(자세한 내용은 [Configuration section|configuration] 참조).
기능 설치는 etc
폴더에 com.foo.bar.cfg
라는 파일을 삭제하는 것과 동일한 효과가 있습니다.
< config/>
; 요소의 내용은 key=value 표준에 따라 속성 집합입니다.
16.10.11. 기능 구성 파일
< config/
> 요소를 사용하는 대신 기능은 < configfile/
> 요소를 지정할 수 있습니다.
<configfile finalname="/etc/myfile.cfg" override="false">URL</configfile>
Apache Karaf 구성 계층을 직접 조작하는 대신(< config/
> 요소를 사용할 때) < configfile/
> 요소는 URL로 지정된 파일을 직접 가져와서 최종 이름
특성에 지정된 위치에 파일을 복사합니다.
지정하지 않으면 위치는 KARAF_BASE
변수에서 상대적입니다. ${karaf.home}, ${karaf.base}, ${karaf.etc} 또는 시스템 속성과 같은 변수를 사용할 수도 있습니다.
예를 들면 다음과 같습니다.
<configfile finalname="${karaf.etc}/myfile.cfg" override="false">URL</configfile>
파일이 이미 원하는 위치에 이미 있고 기존 파일에 사용자 지정이 포함될 수 있으므로 구성 파일의 배포를 건너뜁니다. 이 동작은 재정의를 통해 true로 설정할 수 있습니다.
파일 URL은 Apache Karaf에서 지원하는 모든 URL입니다(자세한 내용은 사용자 가이드의 [Artifacts 리포지토리 및 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이 있습니다.
Apache Karaf는 기능 리포지토리 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
기능 리포지토리를 등록하려면 Apache Karaf에서 사용할 수 있는 새로운 기능을 사용하려면 feature:repo-add
명령을 사용해야 합니다.
feature:repo-add
명령에는 name/url
인수가 필요합니다. 이 인수는 다음을 허용합니다.
- 기능 리포지토리 URL입니다. 기능 XML 파일에 대한 URL입니다. 사용자 가이드의 [Artifacts 리포지토리 및 URL 섹션|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
선택적 버전
인수를 제공하지 않으면 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.repos.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
명령은 기능 리포지토리만 등록하고 기능은 설치되지 않습니다. -i
옵션을 지정하면 feature:repo-add
명령은 기능 리포지토리를 등록하고 이 기능 리포지토리에 설명된 모든 기능을 설치합니다.
karaf@root()> feature:repo-add -i pax-jdbc
16.10.12.3. feature:repo-refresh
Apache Karaf는 등록할 때 features repository XML을 구문 분석합니다( feature:repo-add
명령 또는 FeatureMBean 사용). 기능 리포지토리 XML이 변경되면 변경 사항을 로드하기 위해 기능 리포지토리를 새로 고치려면 Apache Karaf에 표시되어야 합니다.
feature:repo-refresh
명령은 features 리포지토리를 새로 고칩니다.
인수가 없으면 명령은 모든 기능 리포지토리를 새로 고칩니다.
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 또는 기능 리포지토리 이름을 제공하여 새로 고칠 features 리포지토리를 지정할 수 있습니다(선택 사항).
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 리포지토리를 제거합니다.
feature:repo-remove
명령에는 인수가 필요합니다.
-
features 리포지토리 이름(
feature:repo-list
명령 출력의 리포지토리 열에 표시됨) -
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 리포지토리만 제거합니다. 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
명령은 사용 가능한 모든 기능(다른 등록된 기능 리포지토리에서 제공)을 나열합니다.
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
기본적으로 기능을 설치하면 자동으로 설치됩니다. 그러나 feature:install
명령에 -s
옵션을 지정할 수 있습니다.
기능(시작 또는 아님)을 설치하는 즉시 기능에 정의된 번들에서 제공하는 모든 패키지를 사용할 수 있으며 다른 번들의 배선에 사용할 수 있습니다.
기능을 시작할 때 모든 번들이 시작되므로 이 기능에서도 서비스를 노출합니다.
16.10.12.8. 기능: 중지
또한 기능을 중지할 수 있습니다. 즉, 기능이 제공하는 모든 서비스가 서비스 레지스트리에서 중지 및 제거됩니다. 그러나 이 패키지는 계속 사용할 수 있습니다(번들은 해결된 상태입니다.).
16.10.12.9. feature:uninstall
feature:uninstall
명령은 기능을 제거합니다. feature:install
명령으로 feature:uninstall
명령에는 feature
인수가 필요합니다. feature
인수는 기능의 이름 또는 기능의 이름/버전입니다. 기능 이름(버전이 아님)만 제공되면 사용 가능한 최신 버전이 설치됩니다.
karaf@root()> feature:uninstall eventadmin
기능 확인자는 기능 제거 중에 관련됩니다. 다른 기능에서 사용하지 않는 경우 제거된 기능에 의해 설치된 전송적 기능을 자체적으로 제거할 수 있습니다.
16.10.13. deployer
배포 폴더에서 직접 파일을 삭제하여 기능 XML을 "hot deploy
"할 수 있습니다.
Apache Karaf는 기능 배포자를 제공합니다.
배포 폴더에 기능 XML을 삭제하면 기능 배포자가 수행합니다. * features deployer는 features XML을 features repository로 등록합니다. * 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
Cryostat 계층에서는 기능 및 기능 리포지토리인 FeatureMBean을 관리하는 전용 권한이 있습니다.
FeatureMBean 오브젝트 이름은 org.apache.karaf:type=feature,name=*
입니다.
16.10.14.1. 속성
FeatureMBean은 다음 두 가지 속성을 제공합니다.
-
기능은 사용 가능한 모든 기능의 표형 데이터 집합입니다.
-
리포지토리
는 등록된 모든 기능 리포지토리의 테이블 형식 데이터 집합입니다.
Repositories
속성은 다음 정보를 제공합니다.
-
name
은 features 리포지토리의 이름입니다. -
URI
는 이 리포지토리의 기능 XML에 대한 URI입니다. -
기능은 이
기능
리포지토리에서 제공하는 모든 기능(이름 및 버전)의 테이블 형식 데이터 집합입니다. -
리포지토리
는 이 기능 리포지토리에서 "가져오기"하는 기능 리포지토리의 테이블 형식 데이터 집합입니다.
Feature
속성은 다음 정보를 제공합니다.
-
name
은 기능의 이름입니다. -
version
은 기능의 버전입니다. -
installed
는 부울입니다. true인 경우 해당 기능이 현재 설치되어 있음을 나타냅니다. -
번
들은 기능에 설명된 모든 번들(bundles URL)의 테이블 형식 데이터 세트입니다. -
구성은
기능에 설명된 모든 구성의 표형 데이터 집합입니다. -
구성 파일은
기능에 설명된 모든 구성 파일의 테이블 형식 데이터 집합입니다. -
종속성은 기능에 설명된 모든
종속
기능의 테이블 형식 데이터 집합입니다.Dependency is a tabular data set of all dependent features described in the feature.
16.10.14.2. 작업
-
addRepository(
는 URL이 있는 features 리포지토리를 추가합니다.url
)url
은feature:repo-add
명령과 마찬가지로이름이
될 수 있습니다. -
addRepository(url, install)
는url
을 사용하여 features 리포지토리를 추가하고install
이 true인 경우 모든 번들을 자동으로 설치합니다.url
은feature:repo-add
명령과 같은이름
일 수 있습니다. -
removeRepository(
는 URL이 있는 features 리포지토리를 제거합니다.url
)url
은feature:repo-remove
명령과 마찬가지로이름이
될 수 있습니다. -
installFeature(name)
는이름으로
기능을 설치합니다. -
installFeature(이름, 버전)
는이름과
버전으로
기능을 설치합니다. -
installFeature(name, noClean, noRefresh)
는 실패한 경우 번들을 정리하지 않고 이미 설치된 번들을 새로 고침하지 않고이름으로
기능을 설치합니다. -
installFeature(name, version, noClean, noRefresh) '는 오류가 발생할 경우 번들을 정리하지 않고 '이름 및
.버전으로
기능을 설치합니다 -
uninstallFeature(name)
는이름으로
기능을 제거합니다. -
uninstallFeature(name, version)
는이름과
버전이
있는 기능을 제거합니다.
16.10.14.3. 알림
FeatureMBean은 두 가지 유형의 알림을 보냅니다(서브스크립션 및 대응 가능).
- 기능 리포지토리가 변경되는 경우(추가 또는 제거됨).
- 기능이 변경되면(설치 또는 제거됨).