[원본 출처] http://karaf.apache.org/manual/latest-2.3.x/users-guide/kar.html



Karaf Archives (KAR) (Karaf 아카이브)

Karaf provides a specific archive format named the KAR (Karaf ARchive).
Karaf는  KAR (Karaf ARchive)라는 특별한 아카이프 형식을 제공한다.

Basically, the kar format is a jar (so a zip file) which contains a set of feature descriptor and bundle jar files.
기본적으로 기능 기술자와 번들 jar 파일들 세트를 포함하는  kar 형식은 jar 이다. (그리고 zip 파일)

For instance, a kar looks like:
예를 들면 kar 가 보인다.

  • my-features-1.xml
  • bundle1.jar
  • bundle2.jar
  • bundle3.jar

all packaged in zip format.
zip에 모두 패키징된 형식

Create a kar archive (kar 아카이브 생성)

You can create a kar file by hand, just by zip compressing a directory representing the kar content.
단신은 단지 kar 컨텍스트를 표현하는 디렉토리를 zip 압축함으로써  손으로 kar 파일을 생성 할수 있다. 

You can also use the Karaf features maven plugin. The features maven plugin provides an create-kar goal.
당신은 또한 Karaf 기능 Maven 플로그인을 사용할 수 있다. 그 기능 maven 플러그인은 kar 생성 목적을 제공한다.

The kar-archive goal:
kar 아카이브 목적
1. Reads all features specified in the features descriptor.
기능 서술자에서 정의된 모든 기능을 읽는다.
2. For each feature, it resolves the bundles defined in the feature.
각각의 기능에서 그능에 정의된 번들을 해결한다. 
3. All bundles are packaged into the kar archive.
모든 번들은 kar 아카이브에 패키징되어 있다.

For instance, you can use the following POM to create a kar:
예를 들면 당신은 kar를 생성하기 위해 다음 POM 을 사용할 수 있다.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>my.groupId</groupId>
    <artifactId>my-kar</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.karaf.tooling</groupId>
                <artifactId>features-maven-plugin</artifactId>
                <version>2.2.8</version>
                <executions>
                    <execution>
                        <id>create-kar</id>
                        <goals>
                            <goal>create-kar</goal>
                        </goals>
                        <configuration>
                            <featuresFile>src/main/resources/features.xml</featuresFile>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

For the example, the features descriptor is very simple:
예를 들면 기능 서술자는 매우 단순하다.

<?xml version="1.0" encoding="UTF-8"?>
<features>

   <feature name="my" version="1.0">
      <bundle>mvn:commons-collections/commons-collections/3.2.1</bundle>
   </feature>

</features>

To create the kar archive, simply type:
kar 아카이브를 생성하기 위해 단순히 입력하라.

mvn install

and you will have your kar in the target directory.
그러면 당신은 대상 디렉토리에 kar를 가지게 될 것이다.

Deploy a kar archive kar (아카이브 배포하기)

Karaf provides a KAR deployer:
Karaf는 KAR 배포자를 제공한다.

karaf@root> la|grep -i archive
[  12] [Active     ] [Created     ] [   30] Apache Karaf :: Deployer :: Karaf Archive (.kar) (2.2.4)

It's a core deployer (you don't need to install additional features).
그것은 핵심 배포자이다.(당신이 추가능을 설치 하기 를 필요로 하지 않는다.)

To deploy a kar, simply drop the kar into the deploy directory. The KAR Deployer will deploy all the kar content starting
from the features descriptor.
kar를 배포하기위해 단순히 kar 파일을 배포 디렉토리로 떨어뜨려라 KAR 배포자는 기능 서술자로 부터 시작되고 있는 모든 kar 컨텍스트를 배포하게 될 것이다. 

The KAR Deployer uncompress KAR archives in the system repository and register the features descriptor.
All features contained in a KAR archive will be automatically installed at deployment time.
KAR 배포자는 시스템의 저장소에 KAR 아카이프블 압축을 풀게 될 것이고 기능 서술자를 등록할 것이다. KAR 아카이브에 포함된 모든 기능은 패포 시간에 자동으로 설치될 것이다. 

 
You can now see your features installed:
당신은 당신의 설치된 기능을 볼 수 있다.

karaf@root> features:list|grep -i my
[  installed] [1.0             ] my                            repo-0


'Apache Karaf' 카테고리의 다른 글

Karaf User Guide - Http 서비스  (0) 2014.09.29
Karaf User Guide - 환경 구성  (0) 2014.09.29
Karaf User Guide - 프로비저닝  (0) 2014.09.29
Karaf User Guide - 배포자  (0) 2014.09.25
Karaf User Guide - 로깅 시스템  (0) 2014.09.25

[원문 출처] http://karaf.apache.org/manual/latest-2.3.x/users-guide/provisioning.html




Provisioning (프로비저닝)

Karaf provides a simple, yet flexible, way to provision applications or "features". Such a mechanism is mainly provided by a set of commands available in the features shell. The provisioning system uses xml "repositories" that define a set of features.
Karaf 는 단순하고 유연한 어플리케이션을 프로비저닝 하는 방법을 또는 기능을 제공한다. 그런 메카니즘은 주로features 쉘에서 가능한 명령어 세트에 의해서 제공된다. 프로비너징 시스템은 기능 세트가 정의된  xml "저장소" 를 사용한다. 

Repositories (저장소)

The complete xml schema for feature descriptor are available on Features XML Schema page. We recommend using this XML schema. It will allow Karaf to validate your repository before parsing. You may also verify your descriptor before adding it to Karaf by simply validation, even from IDE level.
기능 서술자를 위한 완전한 xml 스키마는 Features XML Schema 페이지에서  사용할 수 있다. 우리는 이 XML 스키마를 사용 하는 것을 추천한다. 그것은  karaf가 파싱하기 전에 당신의 저장소가 유효하게 허용하게 될 것이다. 당신은 또한 Karaf에 단순한 검증에 의해서 심지어 IDE 레벨에서 그것을 추가 하기 전에 서술자를 입증할지 모른다.

Here is an example of such a repository:
여기 그런 저장소의 예제이다.

<features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0">
    <feature name="spring" version="3.0.4.RELEASE">
        <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aopalliance/1.0_1</bundle>
        <bundle>mvn:org.springframework/spring-core/3.0.4.RELEASE</bundle>
        <bundle>mvn:org.springframework/spring-beans/3.0.4.RELEASE</bundle>
        <bundle>mvn:org.springframework/spring-aop/3.0.4.RELEASE</bundle>
        <bundle>mvn:org.springframework/spring-context/3.0.4.RELEASE</bundle>
        <bundle>mvn:org.springframework/spring-context-support/3.0.4.RELEASE</bundle>
    </feature>
</features>

A repository includes a list of feature elements, each one representing an application that can be installed. The feature is identified by its name which must be unique amongst all the repositories used and consists of a set of bundles that need to be installed along with some optional dependencies on other features and some optional configurations for the Configuration Admin OSGi service.
저장소는feature  엘리먼트를 포함하고 각각의 어플리케이션이 나타내고 있는 것이 설치 될 수 있다. 이 기능은 모든 저장소를 사용하고 다른 기능에 대한 몇 가지 옵션 종속성과 구성 관리 OSGi 서비스에 대한 일부 옵션 구성을 함께 설치 될 필요가 있는 번들 세트로 구성되고 사용되어지는 모든 저장소들 사이에서 유일 해야하는 그 이름으로 식별됩니다.

References to features define in other repositories are allow and can be achieved by adding a list of repository.
다른 저장소에서 정의된 기능에 대한 참조는 자장소에 목록을 추가 함으로써 허용하고 도달할 수 있다.

<features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0">
  <repository>mvn:org.apache.servicemix.nmr/apache-servicemix-nmr/1.3.0/xml/features</repository>
  <repository>mvn:org.apache.camel.karaf/apache-camel/2.5.0/xml/features</repository>
  <repository>mvn:org.apache.karaf/apache-karaf/2.1.2/xml/features</repository>
  ...

Be careful when you define them as there is a risk of 'cycling' dependencies.
당신이 순환 의존관게의 리스크로써 그것을 정의 할때 주의하라

Remark: By default, all the features defined in a repository are not installed at the launch of Apache Karaf (see section here after 'h2. Service configuration' for more info).
기본적으로 저장소에 정의된 모든 기능들은 Apache Karaf 의 런처에 설치되어 있는 것은 아니다. (여기 뒤에 'h2 서비스 환경 구성' 더 많은 정보를 봐라)

Bundles (번들)

The main information provided by a feature is the set of OSGi bundles that defines the application. Such bundles are URLs pointing to the actual bundle jars. For example, one would write the following definition:
기능에 의해 제공되는 이 주요 정보는 어플리케이션을 정의하는 OSGi 번들의 세트이다. 그런 번들들은 실제 번들의 jar 들을 가리키는 URL들이다. 예를 들면 하나는 다음 정의를기록할 것이다.

<bundle>http://repo1.maven.org/maven2/org/apache/servicemix/nmr/org.apache.servicemix.nmr.api/1.0.0-m2/org.apache.servicemix.nmr.api-1.0.0-m2.jar</bundle>

Doing this will make sure the above bundle is installed while installing the feature.
기능을 설치 하는 동안 위의 번들이 설치되어 있는 것이 확인 하게 할 것이다.

However, Karaf provides several URL handlers, in addition to the usual ones (file, http, etc...). One of these is the Maven URL handler, which allow reusing Maven repositories to point to the bundles.
그러나 Karaf는 보통 하용하는 것들(file, http, etc...)에 추가로  몇몇 URL 핸들러들을 제공한다. 그것들 중에 하나는 번들 가리키기 위한 Maven 저장소들을 재 하용 하는 것을 허용하는 Maven URL 핸들러이다.

Maven URL Handler (Maven URL 핸들러)

The equivalent of the above bundle would be:
위 번들의 상응하는 것은 

<bundle>mvn:org.apache.servicemix.nmr/org.apache.servicemix.nmr.api/1.0.0-m2</bundle>

In addition to being less verbose, the Maven url handlers can also resolve snapshots and can use a local copy of the jar if one is available in your Maven local repository.
덜 자세하게 되는것 이외에도 Maven URL 핸들러들은 또한  스냅샷을 해결 할 수 있고 만약 그것이 당신의 Maven 로컬 저장소서 사용 가능 하면 그 jar의 로컬 사본을 사용 할 수 있다. 

The org.ops4j.pax.url.mvn bundle resolves mvn URLs. This flexible tool can be configured through the configuration service. For example, to find the current repositories type:
org.ops4j.pax.url.mvn 번들은 mvn  URL들을 해결한다.  유연한 툴은 환경 구성 서비스를 통해서 환경구성 될 수 있다. 예로 현재 저장소 유형을 찾기기 위해

karaf@root:/> config:list
...
----------------------------------------------------------------
Pid:            org.ops4j.pax.url.mvn
BundleLocation: mvn:org.ops4j.pax.url/pax-url-mvn/0.3.3
Properties:
   service.pid = org.ops4j.pax.url.mvn
   org.ops4j.pax.url.mvn.defaultRepositories = file:/opt/development/karaf/assembly/target/apache-felix-karaf-1.2.0-SNAPSHOT/system@snapshots
   org.ops4j.pax.url.mvn.repositories = http://repo1.maven.org/maven2, 
                                         http://svn.apache.org/repos/asf/servicemix/m2-repo 
   below = list of repositories and even before the local repository

The repositories checked are controlled by these configuration properties.
저장소들은 환경구성 프로퍼티들에 의해서 통제 된다.

For example, org.ops4j.pax.url.mvn.repositories is a comma separate list of repository URLs specifying those remote repositories to be checked. So, to replace the defaults with a new repository at http://www.example.org/repo on the local machine:
예를 들면  rg.ops4j.pax.url.mvn.repositories 는 체크되기 위해 그래서 로컬머신의 http://www.example.org/repo 에 새 저장소를 기본 값으로 바꾸기 위해 원격 저장소를 열거하는 콤마로 구분된 저장소 URL들의 목록이다. 

karaf@root:/> config:edit org.ops4j.pax.url.mvn
karaf@root:/> config:proplist                  
   service.pid = org.ops4j.pax.url.mvn
   org.ops4j.pax.url.mvn.defaultRepositories = file:/opt/development/karaf/assembly/target/apache-felix-karaf-1.2.0-SNAPSHOT/system@snapshots
   org.ops4j.pax.url.mvn.repositories = http://repo1.maven.org/maven2,
                                        http://svn.apache.org/repos/asf/servicemix/m2-repo
   below = list of repositories and even before the local repository
karaf@root:/> config:propset org.ops4j.pax.url.mvn.repositories http://www.example.org/repo
karaf@root:/> config:update

By default, snapshots are disabled. To enable an URL for snapshots append @snapshots. For example
기본적으로 스냅샷은 사용할 수 없다.  스냅샷 URL을 사용가능하게 하기 위해  @snapshots를 추가 한다. 예를 들면

http://www.example.org/repo@snapshots

Repositories on the local machine are supported through file:/ URLs
로컬 머신의 저장소는 file:/ URL들을 통해서 지원된다.

Bundle start-level (번들 시작 레벨)

Available since Karaf 2.0 Karaf 2.0 이후 사용 가능

By default, the bundles deployed through the feature mechanism will have a start-level equals to the value defined in the configuration file config.properties with the variable karaf.startlevel.bundle=80. This value can be changed using the xml attribute start-level.
기본적으로, 기능 매커니즘을 통해서 배포되는 번들들은 변수  karaf.startlevel.bundle=80로  환경 구성 파일 config.properties 에서 정의된 값에 같은 시작레벨을 가지게 될 것이다. 이 값은 xml start-level 속성을 사용하여 변경 될수 있다.

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

The advantage in defining the bundle start-level is that you can deploy all your bundles including any required 'infrastructure' bundles (e.g Camel, ActiveMQ) at the same time and you will have the guarantee when using Spring Dynamic Modules or Blueprint that the Spring context will not be created without all the required services installed.
번들에 시작 레벨을 정의하는것에 잇점은 당신이 어떤 필요한 '인프라' 번들들(예를 들면 Camel, ActiveMQ)을 같은 시간에 포함하여 모든 번들을 배포 할 수 있다는 것이고 당신은 Spring Dynamic Modules 나 Blueprint를 사용할때 Spring 컨텍스트가 모든 필요한 설치된 서비스들 없이 생성되지 않을 것이라는 보증을 가지게 될 것이다.


Bundle 'stop/start' 번들의 종료와 시작

The OSGI specification allows for installing a bundle without starting it. To use this functionality, simply add the following attribute in your <bundle> definition
OSGI 명세서는 그것을 시작하지 않고 번들을 설치 하는 것을 허용한다.  그것의 기능성을 사용하기 위해, 단순히 다음 속성을 당신의 <bundle>에 정의 를 추가 하라

  <feature name='my-project' version='1.0.0'>
    <feature version='2.4.0'>camel-spring</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>
    <bundle start-level='85' start='false'>mvn:com.mycompany.myproject/myproject-camel-routing</bundle>
  </feature> 

On Karaf 2.x, the start-level was not considered during the feature startup, but only the order in which bundles
are defined in your feature.xml. Starting with Karaf 3.x, the start-level is considered correctly.
If you need to use the old behavior you can uncomment and change the respectStartLvlDuringFeatureStartup variable in org.apache.karaf.features.xml to false. But please be aware that it will be removed in 4.0 and should therefore be used only temporarily.
Karaf 2.x 에서 시작 레벨은 기능을 시작 하는 동안은 고려되지 안는다 그러나 단지 당신의 feature.xml 에서 번들의 순서가 정의되어 있다. Karaf 3.x를 시작 하는 것은 정확하게 시작 레벨이 고려되었다.
만약 당신이 이전 행위를 사용할 필요가 있을때 당신이 주석을 달지 않을수 있고 org.apache.karaf.features.xml 에서 respectStartLvlDuringFeatureStartup 변수를 false로  변경 할 수 있다.  그러나 주의해라 4.0에서는 제거 될 것이고 그러므로 단지 임시로 단지 사용되게 될 것이다.

Bundle 'dependency' (의존관계 번들)

A bundle can be flagged as being a dependency. Such information can be used by resolvers to compute the full list of bundles to be installed.
번들은 의돈관계가 되는 것으로써 기를 올릴수 있다.(알릴수 있다.) 그런 정보는 설치되어 있는 번들의 전체 목록을 계산하기 위한 해결자에 의해서 사용 될 수 있다.

Dependent features (의존 기능)

Dependent features are useful when a given feature depends on another feature to be installed. Such a dependency can be expressed easily in the feature definition:
의존 기능은 주어진 기능이 다른 설치되어있는 다른 기능에 의존할때 유용하다. 그런 의존관계는 기능정의에서 쉽게 표현된다.

<feature name="jbi">
  <feature>nmr</feature>
  ...
</feature>

The effect of such a dependency is to automatically install the required nmr feature when the jbi feature is installed.
그런 의존관계의 효과는 JBI 기능이 설치될때  자동적으로  필요한 NMR 기능을 설치하기 위해서 이다.

A version range can be specified on the feature dependency:
기능 의존관계에서 버전 범위가 명시될 수 있다.

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

In such a case, if no matching feature is already installed, the feature with the highest version available in the range will be installed. If a single version is specified, this version will be chosen. If nothing is specified, the highest available will be installed.
이런 경우에, 만약 이미 설치된 기능과 일치 하는것이 없으면,  이 범위에서 가장 높은 버전의 사용 가능한 기능이  설치 되게 될 것이다. 만약 단일 버전이 명시되어 있으면 그 버전이 선택 될 것이다. 만약 명시된것이 없다면 사용 가능한 가장 높은 것이 설치 될 것이다.

Configurations (환경 구성)

The configuration section allows for declaring deployment configuration of the OSGi Configuration Admin service along a set of bundles.
번들 세트에 따라 환경 구성 섹션은 OSGi 환경 구성 관리 서비스의 배포 환경 구성을 선언 하는 것을 허용한다.

Here is an example of such a configuration:
그런 환경 구성의 예가 여기 있다.

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

The name attribute of the configuration element will be used as the ManagedService PID for the configuration set in the Configuration Admin service. When using a ManagedServiceFactory, the name attribute is servicePid-_aliasId_, where servicePid is the PID of the ManagedServiceFactory and aliasId is a label used to uniquely identify a particular service (an alias to the factory generated service PID).
configuration 엘리먼트의 name  속성은 환경구성 관리 서비스에서 환경 구성 세트를 위한 ManagedService PID 로써 사용될 것이다. ManagedServiceFactory를 사용할때  name  속성은 servicePid-_aliasId_이고 servicePid 는 ManagedServiceFactory의 PID 이고 aliasId 는 특히 서비스를 유일하게 구분하기 위해 사용되는 라벨이다. ( factory에 생성된 서비스 PID의 별명 )

Deploying such a configuration has the same effect as dropping a file named com.foo.bar.cfg into the etc folder.
그런 환경 구성을 배포 하는 것은 etc 폴더에 com.foo.bar.cfg 로 이름이 된 파일을 넣는 것과 같은 효과 이다.

The content of the configuration element is set of properties parsed using the standard java property mechanism.
configuration 엘리먼트의 내용은 standard java property mechanism을 사용하여 파싱된 프로퍼티의 세트이다. 

Such configuration as usually used with Spring-DM or Blueprint support for the Configuration Admin service, as in the following example, but using plain OSGi APIs will of course work the same way:
보통 Spring-DM 이나 Blueprint 로 사용되는 그런 환경 구성은 환경구성 관리 서비스를 위해 지원된다. 다음 예처럼, 그러나 순수 OSGi API 들을 사용 하는 것은 물론 같은 방법으로 동작하게 될 것이다.

<bean ...>
    <property name="propertyName" value="${myProperty}" />
</bean>

<osgix:cm-properties id="cmProps" persistent-id="com.foo.bar">
    <prop key="myProperty">myValue</prop>
</osgix:cm-properties>
<ctx:property-placeholder properties-ref="cmProps" />

There may also be cases where you want to make the properties from multiple configuration files available to your bundle context. This is something you may want to do if you have a multi-bundle application where there are application properties used by multiple bundles, and each bundle has its own specific properties. In that case, <ctx:property-placeholder> won't work as it was designed to make only one configuration file available to a bundle context.
To make more than one configuration file available to your bundle-context you would do something like this:
또한 당신이 번들의 컨텍스트에 사용 가능한 복합 환경 구성 파일로부터 프로퍼티를 만들기를  원하는 케이스가 될 것이다.  이것은 무언가 당신이 하기를 원할지 모른다. 만약 당신이 복합 번들에 의해 사용될 프로퍼티를 가진 복합 번들 어플리케이션을 가지고 있으면 각가의 번들은 자신의 특정 프로퍼티를 가질 것이다. 이 경우에 <ctx:property-placeholder> 는 번들 컨텍스트에 단지 하나의 사용가능한 환경 구성 파일을 만들기 위해 설계됨으로써  동작하지 않을 것이다.  당신의 번들 컨텍스트에 하나의 환경 구성 파일 이상을 만들기 위해 당신은 이렇게 해야 할 것이다.  

<beans:bean id="myBundleConfigurer"
            class="org.springframework.beans.factory.config.PropertyPlaceholderConfig">
    <beans:property name="ignoreUnresolvablePlaceholders" value="true"/>
    <beans:property name="propertiesArray">
        <osgix:cm-properties id="myAppProps" persistent-id="myApp.props"/>
        <osgix:cm-properties id="myBundleProps" persistent-id="my.bundle.props"/>
    </beans:property>
</beans:bean>

In this example, we are using SpringDM with osgi as the primary namespace. Instead of using ctx:context-placeholder we are using the "PropertyPlaceholderConfig" class. Then we are passing in a beans array and inside of that array is where we set our osgix:cm-properties elements. This element "returns" a properties bean.
이 예에서, 우리는 첫번째 네임스페이스로 osgi로 SpringDM을 사용하고 있다.  ctx:context-placeholder 를 사용하는 것 대신에 우리는  PropertyPlaceholderConfig 클래스를 사용 할 것이다. 그러면 우리는 beans 배열과 그 osgix:cm-properties 엘리먼트를 설정한 그 배열 안쪽에 전달 될 것이다. 이 엘리먼트는 프로퍼티 빈으로 "반환된다."

For more information about using the Configuration Admin service in Spring-DM, see the Spring-DM documentation.  Spring-DM 에서 환경구성 관리 서비스를 사용하는 것에 대한 좀 더 많은 정보를 위해, Spring-DM documentation를 보라

Configuration files(환경 구성 파일)

In certain cases it is needed not only to provide configurations for the configuration admin service but to add additional
configuration files e.g. a configuration file for jetty (jetty.xml). It even might be helpful to deploy a configuration
file instead of a configuration for the config admin service since. To achieve this the attribute finalname shows the
final destination of the configfile, while the value references the Maven artifact to deploy.

<configfile finalname="/etc/jetty.xml">mvn:org.apache.karaf/apache-karaf/2.3.7-SNAPSHOT/xml/jettyconfig</configfile>

Feature resolver (기능 해결자)

The resolver attribute on a feature can be set to force the use of a given resolver instead of the default resolution process. A resolver will be use to obtain the list of bundles to actually install for a given feature.
The default resolver will simply return the list of bundles provided in the feature description.
The OBR resolver can be installed and used instead of the standard one. In that case, the resolver will use the OBR service
to determine the list of bundles to install (bundles flagged as dependency will only be used as possible candidates to solve
various constraints).

Commands (명령어들)

Repository management (저장소 관리)

The following commands can be used to manage the list of descriptors known by Karaf. They use URLs pointing to features descriptors. These URLs can use any protocol known to the Apache Karaf, the most common ones being http, file and mvn.
다음 명령어들은 Karaf에 의해 알려진 설명자의 목록을 관리하기 위해 사용 될수 있다. 그들은  기능 설명자를 가리키기 위해 URL들을 사용한다. 그 URL들은 Apache Karaf에 알려진  모든 프로토콜을 사용 할 수 있으며 그 가장 일반적인 것은 http, file 그리고 mvn 이 된다.

features:addUrl      Add a list of repository URLs to the features service
features:removeUrl   Remove a list of repository URLs from the features service
features:listUrl     Display the repository URLs currently associated with the features service.
features:refreshUrl  Reload the repositories to obtain a fresh list of features

Karaf maintains a persistent list of these repositories so that if you add one URL and restart Karaf, the features will still be available.
Karaf는 그들 저장소의 지속된 리스트를 유지관리한다. 그래서 만약 당신이 하나의 URL을 추가 하고 Karaf를 재시작하면 그 기능은 사용가능하게 될 것이다.

The refreshUrl command is mostly used when developing features descriptors: when changing the descriptor, it can be
handy to reload it in the Kernel without having to restart it or to remove then add the URL again.
refreshUrl  명령어는 대부분  기능 기술자를 개발 할때 사용된다. 기술자를 변경 할때 그것은 커널에 재시작 하거나 URL을 제거 후 다시 시작 하는 것을 해야할 필요 없이 그것을 재 로딩 하는 것을 편리하게 할 수 있다.

Features management (기능 관리)

features:install
features:uninstall
features:list

Examples (예제)

1. Install features using mvn handler
1. mvn 핸들러를 사용하여 기능을 설치하라

features:addUrl mvn:org.apache.servicemix.nmr/apache-servicemix-nmr/1.0.0-m2/xml/features
features:install nmr

2. Use file handler to deploy features file
2. 기능 파일을 배포하기 위해 파일 핸들러 사용하라

features:addUrl file:base/features/features.xml

Note: The path is relative to the Apache Karaf installation directory
주의 : 이 경로는 Apache Karaf 설치 디렉토리에 관련되어 있다.

3. Deploy bundles from file system without using Maven
3. Maven을 사용하지 않고 파일 시스템으로 부터 번들 배포하기

As we can use file:// as protocol handler to deploy bundles, you can use the following syntax to deploy bundles when they are located in a directory which is not available using Maven
번들을 배포하기 ㅜ이해 우리가 프로토콜 핸들로서 file:// 을 사용할 수 있기 때문에 당신은 Maven을 사용하는 것이 가능하지 않는 디렉토리에 위치할때 번들을 배포하기 위해 다음 구문을 사용 할수 있다. 

<features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0">
   <feature name="spring-web" version="2.5.6.SEC01">
      <bundle>file:base/bundles/spring-web-2.5.6.SEC01.jar</bundle>
   </feature>
</features>

Note: The path is relative to the Apache Karaf installation directory

Service configuration (서비스 환경 구성)

A simple configuration file located in etc/org.apache.karaf.features.cfg can be modified to customize the behavior when starting the Kernel for the first time.
etc/org.apache.karaf.features.cfg 에 위치한 단순한 환경 구성 파일은  첫번째로 커털이 시작될때 행동을 커스터마이즈하기 위해 변경 될수 있다. 
This configuration file contains two properties:
환경 구성 파일은 두가지 프로퍼티를 포함한다.

  • featuresBoot: a comma separated list of features to install at startup
    featuresBoot : 시작에서 설치되기 위해 콤마로 구분된 기능의 목록
  • featuresRepositories: a comma separated list of feature repositories to load at startup
    featuresRepositories : 시작에서 로드 하기 위해 콤마로 구분된 기능 저장소의 목록 

This configuration file is of interest if you plan to distribute a customized Karaf distribution having pre-installed features. Such a process is detailed in the building custom distributions section.
이 환경 설정 파일은  만약 당신이  미리 설치된 기능을 가지고 있는 사용자정의된 Karaf의 배포판을 배포 하는 것을 계확한다면 그 절차는 building custom distributions 섹션에 자세하게 되어 있다.

'Apache Karaf' 카테고리의 다른 글

Karaf User Guide - 환경 구성  (0) 2014.09.29
Karaf User Guide - Karaf 아카이브  (0) 2014.09.29
Karaf User Guide - 배포자  (0) 2014.09.25
Karaf User Guide - 로깅 시스템  (0) 2014.09.25
Karaf User Guide - 배포 failover  (0) 2014.09.25

[원본 출처] http://karaf.apache.org/manual/latest-2.3.x/users-guide/security.html 




Security (보안)

Managing authentication by users and passwords (사용자와 비밀번호로 인증 관리하기)

The default security configuration uses a property file located at etc/users.properties to store authorized users and their passwords.
기본 보안 환경 구성은 인증된 사용자와 그들의 비밀번호를 저장하기 etc/users.properties 에 위치한 프로퍼티 파일을 사용한다.

The default user name is karaf and the associated password is karaf too. We strongly encourage you to change the default password by editing the above file before moving Karaf into production.
기본 사용자 이름은 karaf 이고 관련된 비밀번호도 karaf 이다.  우리는 제품에 Karaf를 옮기기 전에 위 파일을 편집하여 강력히 당신이 기본 비밀번호를 변경 할 것을 장려한다. 

The users are currently used in three different places in Karaf:
Karaf 에서 사용자들은 현재 3가지 다른 곳에서 사용된다. 

  • access to the SSH console (SSH 콘솔로 접근)
  • access to the JMX management layer (JMX 관리 레이어로 접근)
  • access to the Web console (웹 콘솔로 접근)

    Those three ways all delegate to the same JAAS based security authentication.
    그 3가지 방법 모두는 깉은 JAAS 기반 보안 인증에 위임한다.

    The users.properties file contains one or more lines, each line defining a user, its password and the associated roles.
    users.properties 파일은 사용자와 그의 패스워드와 관련된 권한을 정의하는 각각의 라인을 하나 또는 그 이상의 줄을  포함한다.

    user=password[,role][,role]...
    

Managing authentication by key (키에 의한 인증 관리)

For the SSH layer, Karaf supports the authentication by key, allowing to login without providing the password.
SSH 레이어를 위해서 Karaf는 key에 의한 인증을 지원하고,  비밀번호를 제공하는 것 없이 로그인을 허용한다.

The SSH client (so bin/client provided by Karaf itself, or any ssh client like OpenSSH) uses a public/private keys pair that
will identify himself on Karaf SSHD (server side).
SSH 클라이언트는 (서버에서) Karaf SSHD에 그 자신을 식별하게 될 키로 공용키/개인키 쌍을 사용한다. (그래서 bin/client Karaf 자체또는 OpenSSH 같은 어떤 ssh 클라이언트로 제공된다. : 키 생성을 위해 자체나 OepnSSH 를 사용하여 생성함) 

The keys allowed to connect are stored in etc/keys.properties file, following the format:
접속하기 위해 허용된 이 키들은 etc/keys.properties 파일에 저장된다. 형식은 다음과 같다.

user=key,role

By default, Karaf allows a key for the karaf user:
기본적으로 Karaf 는 karaf 사용자를 위한 키를 허용한다.

# karaf=AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAAAAFQCXYFCPFSMLzLKSuYKi64QL8Fgc9QAAAIEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACBAKKSU2PFl/qOLxIwmBZPPIcJshVe7bVUpFvyl3BbJDow8rXfskl8wO63OzP/qLmcJM0+JbcRU/53JjTuyk31drV2qxhIOsLDC9dGCWj47Y7TyhPdXh/0dthTRBy6bqGtRPxGa7gJov1xm/UuYYXPIUR/3x9MAZvZ5xvE0kYXO+rx,admin

For security reason, this key is disabled. We encourage to create the keys pair per client and update the etc/keys.properties file.
보안을 이유로, 이 키는 비활성화 되었다. 우리는 이 키 쌍을 클라이언트 당 키 쌍을 생성하고 etc/keys.properties 파일을 변경 할 것을 장려한다.

The easiest way to create key pair is to use OpenSSH.
키 쌍을 가장 쉬운 방법은 OpenSSH 를 사용하는 것 이다.

You can create a key pair using:
당신은 다음을 사용하여 키 쌍을 생성할 수 있다.

ssh-keygen -t dsa -f karaf.id_dsa -N karaf

You have now the public and private keys:
당신은 지금 공개키와 개인키를 가졌다.

-rw-------  1 jbonofre jbonofre    771 Jul 25 22:05 karaf.id_dsa
-rw-r--r--  1 jbonofre jbonofre    607 Jul 25 22:05 karaf.id_dsa.pub

You can copy in the content of the karaf.id_dsa.pub file in the etc/keys.properties:
당신 또 etc/keys.properties 에 karaf.id_dsa.pub 파일의 내용에 복사 할 수 있다. 

karaf=AAAAB3NzaC1kc3MAAACBAJLj9vnEhu3/Q9Cvym2jRDaNWkATgQiHZxmErCmiLRuD5Klfv+HT/+8WoYdnvj0YaXFP80phYhzZ7fbIO2LRFhYhPmGLa9nSeOsQlFuX5A9kY1120yB2kxSIZI0fU2hy1UCgmTxdTQPSYtdWBJyvO/vczoX/8I3FziEfss07Hj1NAAAAFQD1dKEzkt4e7rBPDokPOMZigBh4kwAAAIEAiLnpbGNbKm8SNLUEc/fJFswg4G4VjjngjbPZAjhkYe4+H2uYmynry6V+GOTS2kaFQGZRf9XhSpSwfdxKtx7vCCaoH9bZ6S5Pe0voWmeBhJXi/Sww8f2stpitW2Oq7V7lDdDG81+N/D7/rKDD5PjUyMsVqc1n9wCTmfqmi6XPEw8AAACAHAGwPn/Mv7P9Q9+JZRWtGq+i4pL1zs1OluiStCN9e/Ok96t3gRVKPheQ6IwLacNjC9KkSKrLtsVyepGA+V5j/N+Cmsl6csZilnLvMUTvL/cmHDEEhTIQnPNrDDv+tED2BFqkajQqYLgMWeGVqXsBU6IT66itZlYtrq4v6uDQG/o=,admin

and specify to the client to use the karaf.id_dsa private key:
그리고 클라이언트가 karaf.id_dsa 개인키를 사용하게 하기 위해 기술한다.

bin/client -k ~/karaf.id_dsa

or to ssh ssh 에서

ssh -p 8101 -i ~/karaf.id_dsa karaf@localhost

Managing roles (역할 관리하기)

JAAS roles can be used by various components. The three management layers (SSH, JMX and WebConsole) all use a global role based authorization system. The default role name is configured in the etc/system.properties using the karaf.admin.role system property and the default value is admin. All users authenticating for the management layer must have this role defined.
JAAS 역할 은 다양한 컴포넌트에 의해서 사용될 수 있다. 이 3가지 레이어(SSH, JMX, 그리고 WebConsole) 모두 글로벌 역할 기반 인증시스템을 사용한다. 기본 역할 이름은 karaf.admin.role 시스템 프로퍼티를 사용하여 etc/system.properties 에 환경 구성되어 있고 디폴트 값은 admin 이다. 모든 관리 레이어를 위해 인증된 사용자들은 반드시 정의된 역할을 가져야 한다. 

The syntax for this value is the following:이 값에 대한 구문은 다음이다.

[classname:]principal

where classname is the class name of the principal object (defaults to org.apache.karaf.jaas.modules.RolePrincipal) and principal is the name of the principal of that class (defaults to admin).
그곳 classname 은 본래 오프젝트의 클래스 이름이다  ( 기본은 org.apache.karaf.jaas.modules.RolePrincipal ) 그리고 principal 은 그 클래스의 본래의 이름이다.

Note that roles can be changed for a given layer using ConfigAdmin in the following configurations:
다음 구성에서 역할은 ConfigAdmin을 사용하여 주어진 레이어를 변경 할수 있다는 점을 적어둔다.

LayerPIDValue
SSHorg.apache.karaf.shellsshRole
JMXorg.apache.karaf.managementjmxRole
Weborg.apache.karaf.webconsolerole

Enabling password encryption (비밀번호 암호화 활성화하기)

In order to not keep the passwords in plain text, the passwords can be stored encrypted in the configuration file.
This can be easily enabled using the following commands:
평문의 비밀번호를 유지하지 않기 위해 환경 구성 파일에서 비밀번호는 암호화된채로 저장 될수 있다. 다음 명령어를 사용하여 쉽게 활성화 할 수 있다.

# edit config
config:edit org.apache.karaf.jaas
config:propset encryption.enabled true
config:update 
# force a restart
dev:restart

The passwords will be encrypted automatically in the etc/users.properties configuration file the first time the user logs in.
Encrypted passwords are prepended with {CRYPT} so that are easy to recognize.
비밀번호는 etc/users.properties  환경구성 파일에 사용자가 로그인 하는 첫 시점에 자동으로 암호화될 것이다. 암호화된 비밀번호는 {CRYPT} 로 앞에 추가되고 그래서 쉽게 인식할 수 있다.

Managing realms (영역 관리 하기)

More information about modifying the default realm or deploying new realms is provided in the developers guide.
developers guide 에 기본영역을 변경 하는 것과 새 영역을 배포하는 것에 대한 더 많은 정보가 제공되고 있다.

Deploying security providers (보안 프로바이더 배포하기)

Some applications require specific security providers to be available, such as BouncyCastle. The JVM impose some restrictions about the use of such jars: they have to be signed and be available on the boot classpath. One way to deploy those providers is to put them in the JRE folder at $JAVA_HOME/jre/lib/ext and modify the security policy configuration ($JAVA_HOME/jre/lib/security/java.security) in order to register such providers.
몇몇 어플리케이션들은 BouncyCastle 같은 사용가능한 보안 제공자의 명세를 필요로 한다. JVM은 몇몇 그런 jar들을 사용하는것에 대한 제한들을 강요한다. 그것들은 부트 클래스 패스에서 서명되어있어야 하고 사용 가능해야 한다. 그 프로바이더를 등록하기 위해 그 프로바이더를 배포하는 하나의 방법은 JRE folder at $JAVA_HOME/jre/lib/ext 에 그것들을 넣는 것과 보안 정첵 환경 구성 파일($JAVA_HOME/jre/lib/security/java.security)을 변경 하는 것이다. 

While this approach works fine, it has a global effect and requires you to configure all your servers accordingly.
이 접근이 잘 되는 동안 그것은 광범위한 효과를 가지고  당신 서버에 다라 모든 환경 구성을 하는 것을 필요로 한다.

Karaf offers a simple way to configure additional security providers:
Karaf 는 추가적인 보안 프로바이더를 환경구성하는 단순한 방법 제공한다. 

  • put your provider jar in lib/ext lib/ext폴더에 당신의 프로바이더 jar를 넣어라.
  • modify the etc/config.properties configuration file to add the following property 
    다음 프로퍼티를 추가 하기 위해 etc/config.properties 환경구성 파일을 변경하라
org.apache.karaf.security.providers = xxx,yyy

The value of this property is a comma separated list of the provider class names to register.
For example:
이 프로퍼티의 값은 등록하기 위해 콤마로 구분된 프로바이더 클래스의 이름들의 리스트이다.

org.apache.karaf.security.providers = org.bouncycastle.jce.provider.BouncyCastleProvider

In addition, you may want to provide access to the classes from those providers from the system bundle so that all bundles can access those. It can be done by modifying the org.osgi.framework.bootdelegation property in the same configuration file:
게다가 당신은 시스템 번들로 부터 그들 프로바이더로 부터 그 클래스에 접속할수 있게 제공되기를 원할 지 모른다. 그래서 모든 번들은 그것들에 접속 할 수 있다.  같은 환경구성 파일에서 org.osgi.framework.bootdelegation 프로퍼티를 변경 하는 것에 의해 될수 있다. 

org.osgi.framework.bootdelegation = ...,org.bouncycastle*


[원본 출처] http://karaf.apache.org/manual/latest-2.3.x/users-guide/child-instances.html 


웹에서의 context를 추가로 만드는 작업과 같은거 같음 그런데 하위 컨텍스트도 URL 만 달랐던 반면 
기능상으론 SVN 의 서비스 branch 와 비슷한 형태로 독립적인 포트도 설정이 가능하고 별도로 기동 종료가 가능하다.


Managing child instances (하위 인스턴스 관리하기)

A child instance of Karaf is a copy that you can launch separately and deploy applications into. An instance does not contain the full copy of Karaf, but only a copy of the configuration files and data folder which contains all the runtime information, logs and temporary files.
Karaf의 하위 인스턴스는 별도로 시작할 수 있고 어플리케이션을 할 수 있는 사본이다. 인스턴스는 Karaf의 전체 사본을 포함 하지 않는다.  그러나 단지  환경 구성 파일과 모든 실시간 정보, 로그와 임시파일을 포함하는 데이타 폴더 사본이다. 

Using the admin console commands (관리 콘솔 명령어를 사용하기)

The admin console commands allow you to create and manage instances of Karaf on the same machine. Each new runtime is a child instance of the runtime that created it. You can easily manage the children using names instead of network addresses. For details on the admin commands, see the admin commands.
관리 콘솔 명령어는 당신이 같은 머신에서 Karaf의 인스턴스를 생성하고 관리 하는 것을 허용한다. 각각의 실행환경은 그것을 만든 실시간 환경의 하위 인스턴스이다. 당신은 네트워크 주소 대신 이름을 사용하여 하위 인스턴스를 쉽게 관리 할 수 있다.

Creating child instances (하위 인스턴스 생성하기)

You create a new runtime instance by typing admin:create in the Karaf console.
Karaf 콘솔에 admin:create 을 입력함으로써 새 실시간 인스턴스를 생성한다. 

As shown in the following example, admin:create causes the runtime to create a new runtime installation in the active runtime's instances/name directory. The new instance is a new Karaf instance and is assigned an SSH port number based on an incremental count starting at 8101 and a RMI registry port number based on an incremental count starting at 1099/44444.
다음 예제에서 보여주는 것 처럼, admin:create은 실시간 환경 instances/name 디렉토리에서 새 실시간 환경 설치를 생성하는 실시간 환경을 만드는 원인이 된다.

karaf@root> admin:create alpha 
Creating new instance on SSH port 8102 and RMI ports 1100/44445 at: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha
Creating dir:  /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/bin
Creating dir:  /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc
Creating dir:  /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/system
Creating dir:  /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/deploy
Creating dir:  /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/data
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/config.properties
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/jre.properties
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/custom.properties
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/java.util.logging.properties
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/org.apache.felix.fileinstall-deploy.cfg
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/org.apache.karaf.log.cfg
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/org.apache.karaf.features.cfg
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/org.ops4j.pax.logging.cfg
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/org.ops4j.pax.url.mvn.cfg
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/startup.properties
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/users.properties
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/system.properties
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/org.apache.karaf.shell.cfg
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/etc/org.apache.karaf.management.cfg
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/bin/karaf
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/bin/start
Creating file: /x3/karaf/test/apache-karaf-2.2.4/instances/alpha/bin/stop
karaf@root>

Changing a child's ports (하위 인스턴스 포트 변경하기)

You can change the SSH port number assigned to a child instance using the admin:change-ssh-port command. The syntax for the command is:
당신이 admin:change-ssh-port 명령어를 사용하여 하위 인스턴스에 할당된 SSH 포트 번호를 변경할 수 있다. 명령어 구문은 다음이다.

admin:change-ssh-port instance port

Note that the child instance has to be stopped in order to run this command.
이 명령어를 실행하기 위해 하위 인스턴스가 멈춰져 있어야 만 한다는 점을 적어둔다.

In the same way, you can change the RMI registry port number assigned to a child instance using the admin:change-rmi-registry-port command. The syntax for the command is:
같은 방법에서 admin:change-rmi-registry-port 명령어를 사용하여 하위 인스턴스에 할당된 RMI 등록 포트 번호를 변경 할 수 있다. 명령어 구문은 다음이다.

admin:change-rmi-registry-port instance port

Note that the child instance has to be stopped in order to run this command.
이 명령어를 실행하기 위해서는 하위 인스턴스가 멈춰져 있어야 만 한다는 점을 적어둔다.

Starting child instances( 하위 인스턴스 시작하기)

New instances are created in a stopped state. To start a child instance and make it ready to host applications, use the admin:start command. This command takes a single argument instance-name that identifies the child you want started.
새 인스턴스는 정지된 상태로 생성된다. 하위 인스턴스를 시작하고 호스트 어플리케이션에 준비 되도록 하기 위해 admin:start 명령어를 사용하라. 이 명령어는 단일 인수로 당신이 사작하기를 원하는 하위 인스턴스의 삭별하기는 instance-name (인스턴스명)을 가진다.

Listing all container instances (모든 컨테이너 인스턴스 리스트 가져오기)

To see a list of all Karaf instances running under a particular installation, use the admin:list command.
특별 설치 하에서 실행중인 모든 Karaf 인스턴스 의 목록을 보기 위해, admin:list 명령어를 사용하라.

karaf@root>admin:list
  SSH Port   RMI Port   State       Pid  Name
[    8107] [      1106] [Started ] [10628] harry
[    8101] [      1099] [Started ] [20076] root
[    8106] [      1105] [Stopped ] [15924] dick
[    8105] [      1104] [Started ] [18224] tom
karaf@root>

Connecting to a child instance (하위 인스턴스 접속하기)

You can connect to a started child instance's remote console using the admin:connect command which takes three arguments:
당신은 3개의 인수를 가진 admin:connect 명령어를 사용하기 위해 시작된 하위 인스턴스의 원격 콘솔에 접속 할 수 있다.

admin:connect [-u username] instance [command]

NB: the password will be prompted.
주의 : 비밀번호가 입력되게 될 알려 줄 것이다.

NB: you can directly execute shell command on the target instance.
주의 : 당신은 대상 인스턴스에서 직접 쉘 명령어를 실행 할 수 있을 것이다. 

Once you are connected to the child instance, the Karaf prompt changes to display the name of the current instance, as shown:
당신이 하위 인스턴스에 접속 하게 될때, Karaf 프롬프트는 현재 인스턴스의 이름을 표시하게 변경된다. 보여주는 것 처럼

karaf@harry>

Stopping a child instance (하위 인스턴스 멈추기)

To stop a child instance from within the instance itself, type osgi:shutdown or simply shutdown.
인스턴스 그 자신 안에서 하위 인스턴스를 멈추기 위해, osgi:shutdown 또는 단순시 shutdown 을 쳐서 넣어라.

To stop a child instance remotely, in other words, from a parent or sibling instance, use the admin:stop:
다른 말로 상위 또는 동등한 인스턴스에서 하위 인스턴스를 원격으로 정지하기 위해서는, admin:stop 를 사용하라.

admin:stop instance

Destroying a child instance (하위 인스턴스 없애기)

You can permanently delete a stopped child instance using the admin:destroy command:
당신은 멈춰진 하위 인스턴스를 admin:destroy 명령어를 사용하여 완전히 삭제 시킬 수 있다.

admin:destroy instance

Note that only stopped instances can be destroyed.
단지 멈춰진 인스턴스만 없앨 수 있다는 점을 적어둔다.

Using the admin script ( 관리 스크립트 사용하기 )

You can also manage the local instances of Karaf. The admin script in the bin directory provides the same commands as the admin console commands, apart from admin:connect.
당신은 또한 karaf의 로컬인스턴스를 관리 할수 있다.  bin 디렉토리에서 관리 스크립트는 admin  콘솔 명령어로 admin:connect 분리해서 같은 명령어를 제공한다.

bin/admin
Available commands:
  change-ssh-port - Changes the secure shell port of an existing container instance.
  change-rmi-registry-port - Changes the RMI registry port (used by management layer) of an existing container instance.
  create - Creates a new container instance.
  destroy - Destroys an existing container instance.
  list - List all existing container instances.
  start - Starts an existing container instance.
  stop - Stops an existing container instance.
Type 'command --help' for more help on the specified command.

For example, to list all the instances of Karaf on the local machine, type:
예를 들면, 로컬 머신의  Karaf의 모든 인스턴스 리스트를 가져오기 위해 입력하라:

bin/admin list



[원본 출처] http://karaf.apache.org/manual/latest-2.3.x/users-guide/web-console.html




Web console(웹 콘솔)

The Karaf web console provides a graphical overview of the runtime.
Karaf Web 콘솔은 실행환경의 그래픽한 개요를 제공한다. 

You can use it to: 그것을 할 수 있다. 

  • install and uninstall features (설치 및 설치 제거 기능)
  • start, stop, install bundles (시작, 종료 번들 설치)
  • create child instances ( 하위 인스턴스 생성하기)
  • configure Karaf (Karaf 환경 구성하기)
  • view logging informations (로깅 정보 보기)

Installing the web console (웹콘솔 설치하기)

The web console is not installed by default. To install it, run the following command from the Karaf prompt:
웹콘솔은 기본으로 설치되어있지 않다. 웹콘솔을 설치하기 위해 Karaf 프롬프트에 다음 명령어를 실행하라.

root@karaf> features:install webconsole

Accessing the web console (웹콘솔 접속하기)

To access the console for an instance of Karaf running locally, enter the following address in your web browser:
로컬에 실행중인 Karaf 의 인스턴스에 콘솔로 접속하기 위해, 웹브라우저에 다음 주소를 쳐라.

http://localhost:8181/system/console

Log in with the username karaf and the password karaf. If you have changed the default user or password, use the one you have configured.
사용이름 karaf 비밀번호 karaf 로 로그인 하라 만약 당신이 디폴트 사용자와 비밀번호를 변경했다면 당신이 환경구성한 사용자와 비밀번호를 사용하라. 

Changing the web console port number (웹콘솔 포트 변경하기)

By default, the console runs on port 8181. You can change the port number by creating the properties file, etc/org.ops4j.pax.web.cfg, and adding the following property setting (changing the port number to whatever value desired):
기본적으로 콘솔은 8181 포트에 실행된다. 당신이 프로퍼티 파일 etc/org.ops4j.pax.web.cfg을 생성함으로써 포트를 변경 할 수 있고 프로퍼티 설정은 다음을 추가한다. (원하는 값이 무엇으로 포트번호를 변경하기)

org.osgi.service.http.port=8181


[원본 출처] http://karaf.apache.org/manual/latest-2.3.x/users-guide/remote-console.html 



Using remote instances (원격 인스턴스 사용하기)

Configuring remote instances (원격 인스턴스 환경 구성하기)

It does not always make sense to manage an instance of Karaf using its local console. You can manage Karaf remotely using a remote console.
Karaf의 로컬 콘솔을 사용하여 Karaf 인스턴스를 관리 하는 것을 항상 의미하는 것은 아니다. 당신은 원격으로 원격 콘솔을 사용하여 Karaf를 관리 할 수 있다.

When you start Karaf, it enables a remote console that can be accessed over SSH from any other Karaf console or plain SSH client. The remote console provides all the features of the local console and gives a remote user complete control over the container and services running inside of it.
Karaf를 시작할 때. 그것은 다른 Karaf 콘솔이나 원격 SSH 클라이언트로 부터 SSH를 통해 접속할 수 있는 원격 콘솔을 허용한다. 그 원격콘솔은 로컬 콘솔의 모든 기능을 제공하고 원격 사용자에게 컨테이너 와 그것의 안쪽에 실행중인 서비스를 완전히 컨트롤 하도록 해준다.

The SSH hostname and port number is configured in the etc/org.apache.karaf.shell.cfg configuration file with the following default values:
SSH 호스트명과 포트 etc/org.apache.karaf.shell.cfg 환경 구성파일에 다음 기본값으로 환경구성되어 있다. 

sshPort=8101
sshHost=0.0.0.0
sshRealm=karaf
hostKey=${karaf.base}/etc/host.key

You can change this configuration using the config commands or by editing the above file, but you'll need to restart the ssh console in order for it to use the new parameters.
당신은 위 파일을 편집함으로써 이 환경 구성 파일을 config 명령어들을 사용하여 변경 할 수 있다. 그러나 당신은 새 파라미터를 사용하기 위해서 ssh 콘솔을 재 시작 하는 것을 필요로 하게 될 것이다. 

# define helper functions
bundle-by-sn = { bm = new java.util.HashMap ;  each (bundles) { $bm put ($it symbolicName) $it } ; $bm get $1 }
bundle-id-by-sn = { b = (bundle-by-sn $1) ; if { $b } { $b bundleId } { -1 } }
# edit config
config:edit org.apache.karaf.shell
config:propset sshPort 8102
config:update 
# force a restart
osgi:restart --force (bundle-id-by-sn org.apache.karaf.shell.ssh)

Connecting and disconnecting remotely (원격으로 접속하기, 접속 끊기)

Using the ssh:ssh command (ssh:ssh 명령어 사용하기) 

You can connect to a remote Karaf's console using the ssh:ssh command.
ssh:ssh 명령어를 사용하여 Karaf의 콘솔에 원격 접속 할 수 있다. 

karaf@root> ssh:ssh -l karaf -P karaf -p 8101 hostname

The default password is karaf but we recommend changing it. See the security section for more informations.
기본 비밀번호는 karaf  그러나 우리는 그것을 변경하는 것을 추천한다.  더 많은 정보들은 보안 섹션을 보라

To confirm that you have connected to the correct Karaf instance, type shell:info at the karaf> prompt. Information about the currently connected instance is returned, as shown.
당신이 정확한 Karaf 인스턴스에 접속한것이 확실하게 하기 위해 karaf> 프롬프트에 shell:info 입력하라. 현재 접속된 인스턴스에 대한 정보가 반환 될 것이다. 보여지는 것처럼,

Karaf
  Karaf home                  /local/apache-karaf-2.0.0
  Karaf base                  /local/apache-karaf-2.0.0
  OSGi Framework              org.eclipse.osgi - 3.5.1.R35x_v20090827
JVM
  Java Virtual Machine        Java HotSpot(TM) Server VM version 14.1-b02
  ...

Using the Karaf client (Karaf 클라이언트 사용하기)

The Karaf client allows you to securely connect to a remote Karaf instance without having to launch a Karaf instance locally.
Karaf 클라이언트는 당신이 Karaf 인스턴스를 시작해야 하지 않고  안전하게 원격 Karaf 인스턴스에 접속 하는 것을 허용한다.   

For example, to quickly connect to a Karaf instance running in server mode on the same machine, run the following command:
예를 들면 같은 머신상의 서버모드에서 실행중인 Karaf 인스턴스에 빨리 접속하기 위해 다음 명령어를 실행하라.

bin/client

More commonly, you would provide a hostname, port, username and password to connect to a remote instance. And, if you were using the client within a larger script, you could append console commands as follows:
좀더 일반적으로 당신은 호스트명, 포트, 사용자명, 비밀번호를 원격 인스턴스에 접속하기 위해 제공해야 한다. 그리고 만약 당신이 큰 스크립트 없이 클라이언트를 사용하려면 당신은 다음으로 콘솔 명령어에 추가 할 수 있다.

bin/client -a 8101 -h hostname -u karaf -p karaf features:install wrapper

To display the available options for the client, type:
클라이언트에 사용 가능한 옵션을 표시하기 위해 입력하라.

> bin/client --help
Apache Karaf client
  -a [port]     specify the port to connect to
  -h [host]     specify the host to connect to
  -u [user]     specify the user name
  -p [password] specify the password
  --help        shows this help message
  -v            raise verbosity
  -r [attempts] retry connection establishment (up to attempts times)
  -d [delay]    intra-retry delay (defaults to 2 seconds)
  [commands]    commands to run
If no commands are specified, the client will be put in an interactive mode

Using a plain SSH client (일반 SSH 클라이언트 사용하기)

You can also connect using a plain SSH client from your *nix system or Windows SSH client like Putty.
또 당신의 *닉스 시스템 또는 Putty 같은 윈도우즈 SSH 클라이언트 에서 일반 SSH 클라이언트를 사용하여 접속 할 수 있다. 

~$ ssh -p 8101 karaf@localhost
karaf@localhost's password: 

Disconnecting from a remote console (원격 콘솔로 접속 끊기)

To disconnect from a remote console, press Ctrl+Dshell:logout or simply logout at the Karaf prompt.
원격 콘솔로 부터 접속 끊기를 위해서, Karaf 프롬프트에 Ctrl+D, shell:logout 나 단순히 logout 입력하라

Stopping a remote instance(원격 인스턴스 멈추기)

Using the remote console (원격 콘솔 사용하기)

If you have connected to a remote console using the ssh:ssh command or the Karaf client, you can stop the remote instance using the osgi:shutdown command.
만약 당신이 ssh:ssh 명령어나 Karaf 클라이언트를 사용하여 원격 콘솔에 접속했다면, 당신은 원격 인스턴스를 osgi:shutdown를 사용하여 멈추게 할 수 있다.

Pressing Ctrl+D in a remote console simply closes the remote connection and returns you to the local shell.
원격 콘솔에서 Ctrl+D 을 입력 하는 것은 단순히 원격 커넥션을 닫는 것이고 로컬 쉘에 반환된다. 

Using the Karaf client (Karaf 클라이언트 사용하기)

To stop a remote instance using the Karaf client, run the following from the lib directory:
Karaf 클라이언트를 사용하여 원격 인스턴스를 멈추기 위해  lib 디렉토리에서 다음을 실행하라. (bin 디렉토리 아니고??)

bin/client -u karaf -p karaf -a 8101 hostname osgi:shutdown




+ Recent posts