제품 확장기능

제품 확장기능을 작성하여 Liberty 프로파일의 기능을 확장할 수 있습니다.

자신의 Liberty 기능을 작성하여 기존의 Liberty 프로파일 서버에 설치하거나 이를 패키징하여 사용자들에게 전달할 수 있습니다.

Liberty 프로파일은 런타임 환경을 확장하는 데 사용할 수 있는 다양한 SPI(System Programming Interface)를 제공합니다. 또한 Java™ 애플리케이션에서 프로그래밍 방식으로 Liberty 프로파일 서버를 조작하는 등의 고급 기능을 사용할 수도 있습니다.

제품 확장기능

제품 확장은 Liberty 프로파일 설치 디렉토리인 ${wlp.install.dir}처럼 구조화된 디스크의 디렉토리입니다. ${wlp.install.dir}/etc/extensions 디렉토리의 extension-name.properties라는 파일을 통해 Liberty 설치에 정의됩니다. 그런 다음 제품 확장기능 디렉토리의 컨텐츠를 사용하여 Liberty 프로파일을 확장합니다. 여러 제품 확장기능을 함께 설치할 수 있지만 고유한 이름을 가지고 있어야 합니다. 이러한 이름은 특성 파일의 이름 지정을 통해 시행됩니다. 기본 제품 확장 위치(${wlp.user.dir}/extension)에는 특성 파일이 필요하지 않습니다. 이 위치 아래의 컨텐츠는 자동으로 발견되어 런타임에 "usr" 제품 확장으로 알려집니다.

일반적으로 제품 확장기능에는 하나 이상의 Liberty 기능이 포함되지만, Liberty 프로파일 환경을 확장하는 모든 컨텐츠(예: 스크립트 또는 자원)를 보유할 수 있습니다.

우수 사례: Liberty 프로파일 환경 업데이트의 영향을 받지 않는 디렉토리에 제품 확장기능을 설치하십시오. 자세한 정보는 서비스를 적용하거나 업그레이드하여 수정할 수 있는 항목은 무엇입니까?의 내용을 참조하십시오.
그림 1. "Supergui" 및 "App Services"의 두 가지 기능을 사용한
Liberty 프로파일 설치를 보여 주는 다이어그램
제품 확장기능 파일에는 다음 특성이 있습니다.
com.ibm.websphere.productId=your_product_id
com.ibm.websphere.productInstall=absolute_or_relative_file_path
참고: 상대 파일 경로를 사용하는 경우 ${wlp.install.dir} 값의 피어여야 합니다.
예를 들면 다음과 같은 경우가 있습니다.
com.ibm.websphere.productId=org.acme.supergui
com.ibm.websphere.productInstall=supergui/wlp-ext

기능

Liberty 기능은 정의 파일(기능 Manifest)로 구성되며 Liberty 프로파일 런타임 환경에서 특정 기능에 해당하는 클래스와 서비스를 제공하는 OSGi 번들의 콜렉션입니다.

일반적인 애플리케이션 대신 Liberty 기능을 사용하는 시나리오

기능을 애플리케이션 대신 Liberty 기능으로 구현하는 것이 여러 시나리오에서 적절할 수 있습니다. 다음 목록에서는 기능 사용 시의 몇 가지 이점을 설명합니다.
  • 기능은 기능 관리자 구성을 통해 제어되므로 사용자 애플리케이션 관리와는 구분됩니다.
  • 기능 코드는 Liberty 프로파일 SPI에 액세스할 수 있으며 이를 통해 런타임 환경과 더욱 긴밀하게 통합될 수 있습니다.
  • 기능은 server.xml 파일의 사용자 지정 구성을 수신하고 도구를 변경하지 않고도 개발 도구의 구성 설정을 표시할 수 있습니다.
  • 기능은 각각의 다른 사용자와 사용자 애플리케이션에 클래스와 서비스를 간편하게 표시할 수 있습니다.
  • 기능은 애플리케이션 컨테이너 종속 항목이 없는 매우 가벼운 기능입니다.
  • 기능은 특수 프로그래밍 모델의 기능을 보강하기 위해 사용할 수 있습니다. 예를 들어, 사용자 기능은 사용자 정의 블루프린트 네임스페이스 핸들러 또는 블루프린트 어노테이션을 위한 지원을 OSGi 애플리케이션 프로그래밍 모델에 추가할 수 있습니다.
참고: 기능은 일반적으로 다른 애플리케이션 서버에 직접 이식할 수 없습니다. 이식성이 중요한 경우에는 스펙을 준수하는 애플리케이션을 사용해야 합니다.

서버에서 기능 사용

Liberty 프로파일 서버에서 사용자가 작성한 기능을 사용하려면 해당 기능을 제품 확장기능 디렉토리에 설치해야 합니다. 이는 사전 정의된 "사용자 제품 확장기능" 위치 또는 Liberty 프로파일 설치 디렉토리 외부에 있는 확장기능일 수 있습니다. 그런 다음 기능 이름을 서버 구성에 추가할 수 있습니다.

사용자 제품 확장기능은 서버가 추가 기능을 검색하는 사전 정의된 디렉토리입니다. 기능 정의 .mf 파일은 ${wlp.user.dir}/extension/lib/features 디렉토리에 복사해야 하며 번들 .jar 파일은 ${wlp.user.dir}/extension/lib 디렉토리에 복사해야 합니다.

사용자가 작성한 기능은 제품 기능과 동일한 방식으로 서버 구성에 추가됩니다. 이름이 다른 제공자의 기능과 충돌하지 않도록 하려면 제품 확장기능의 일부인 기능의 접두부에 확장기능 이름이 지정되어야 합니다. usr/extension/lib 디렉토리에 있는 기능의 경우 기본 접두부는 usr:입니다.

예를 들어, simple-1.0이라는 기능을 ${wlp.user.dir}/extension/lib 디렉토리에 설치한 경우 다음과 같이 해당 기능을 server.xml에서 구성해야 합니다.
<featureManager>
    <feature>usr:simple-1.0</feature>
</featureManager>
사용자 고유의 위치에 myFeature라는 기능을 설치하고 제품 확장을 ${wlp.install.dir}/etc/extensions/myExt.properties 파일에서 정의한 경우, 다음과 같이 해당 기능을 server.xml 파일에 구성해야 합니다.
<featureManager>
    <feature>myExt:myFeature</feature>
</featureManager>

서버를 시작할 때 기능 관리자가 기능을 발견하고 번들은 OSGi 프레임워크로 설치되어 시작됩니다.

Liberty 기능 추가 및 제거기능 관리도 참조하십시오.

애플리케이션에서 프로그래밍 방식으로 기능 사용

기능은 클래스와 서비스를 애플리케이션에 표시할 수 있습니다.

애플리케이션 용도로 Java 클래스를 노출하려면, 기능 Manifest의 IBM-API-Package 헤더에 클래스 패키지를 나열해야 합니다. IBM-API-Package 헤더에서 클래스 패키지를 청취하면 클래스가 애플리케이션 클래스 로더에 표시됩니다. API 패키지의 가시성은 API 가시성 유형을 통해 제어할 수 있습니다. Liberty 기능 프로젝트의 API 및 SPI 패키지 지정의 내용을 참조하십시오.

OSGi 애플리케이션이 서비스를 사용할 수 있도록 하려면 기능 Manifest의 IBM-API-Service 헤더에 해당 서비스를 나열해야 합니다. 기능은 OSGi 서비스를 제공하여 사용자가 애플리케이션에서 프로그래밍 방식으로 해당 서비스를 참조할 수 있도록 합니다.

서비스는 일반적으로 OSGi 서비스 레지스트리(SR)에 등록하여 애플리케이션(또는 기타 기능)이 찾을 수 있도록 해야 합니다. OSGi 애플리케이션 및 기타 기능은 SR에서 직접 검색을 수행하거나 블루프린트 또는 OSG 선언 서비스와 같은 기능을 사용하여 서비스 종속 항목을 삽입할 수 있습니다. Java EE 애플리케이션은 JNDI를 통해 서비스를 찾을 수 있습니다. Liberty 프로파일에는 Java EE 애플리케이션이 JNDI를 사용하여 SR에서 서비스를 찾을 수 있는 SR 및 JNDI의 연합이 있습니다. 자세한 정보는 OSGi 서비스 레지스트리에 대한 작업의 내용을 참조하십시오.

기능을 웹 애플리케이션으로 노출

Liberty 기능을 웹 애플리케이션으로 표시하려면 기능의 OSGi 번들을 웹 애플리케이션 번들(WAB)로 공개할 수 있습니다. 번들이 필요한 OSGi 헤더 외에도 Web-ContextPath 헤더를 사용하여 웹 애플리케이션 컨텍스트 경로를 지정할 수 있습니다.

예:

Web-ContextPath: myWABapp
Bundle-ClassPath: WEB-INF/classes

구성 삽입 및 처리

기능 사용 시의 중요한 이점은 server.xml 파일(및 포함된 파일)에서 사용자가 쉽게 구성할 수 있다는 점입니다. 구성 파일은 Liberty 프로파일 커널이 모니터링하고 구문 분석하며 결과 특성 세트는 변경될 때마다 관련된 컴포넌트에 삽입될 수 있습니다.

Liberty 프로파일 구성은 커널의 OSGi 구성 Admin(CA) 서비스가 관리하며 해당 스펙에 따라 액세스할 수 있습니다. 구성 특성 세트는 특성을 수신하기 위해 등록된 컴포넌트와 server.xml 파일의 요소를 연관시키는 데 사용되는 지속적 ID(PID)로 식별됩니다.

예를 들어, com.acme.console의 PID를 사용하여 기능을 CA 서비스로 등록할 경우 사용자는 server.xml 파일에서 다음 구성을 지정할 수 있습니다.
<com.acme.console color="blue" size="17"/>
또한 기능은 다음과 같은 특성을 수신합니다.
  • color="blue"
  • size="17"

선택적으로 OSGi Metatype 디스크립터를 사용하여 구성 특성을 설명하는 메타데이터를 제공할 수 있습니다. 디스크립터를 사용하면 애플리케이션 개발자가 서버를 구성할 때 구성 특성이 자동으로 제시되도록 Liberty 프로파일에서 생성되어 Developer Tools에서 사용되는 구성 스키마가 구성 메타데이터에 포함됩니다.

구성 특성을 수신하고 설명하는 방법에 대한 자세한 정보는 구성 데이터를 받기 위한 서비스 사용의 내용을 참조하십시오.

Liberty 프로파일의 Declarative Services

OSGi DS(Declarative Services) 사용 시 보다 광범위하고 복잡한 기능을 활용하여 다양한 서비스로 구성된 기능을 설정하고 종속성 및 구성 특성의 삽입을 관리할 수 있습니다. DS를 통해 서비스 활성화를 느리게 수행하고 서비스가 사용될 때까지 Java 클래스 로딩을 지연시키고 종속성에 기반하여 서비스 활성화를 순서 지정할 수 있습니다. Liberty 프로파일 제품의 기능 중 대부분은 DS가 관리합니다.

OSGi Declarative Services를 사용하여 고급 기능 작성도 참조하십시오.


주제의 유형을 표시하는 아이콘 개념 주제

Information Center 이용 약관 | 피드백


시간소인 아이콘 마지막 업데이트 날짜: Wednesday, 2 September 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=cwlp_prod_ext
파일 이름: cwlp_prod_ext.html