소개

본 장에서는 OSGi 기술에 대해 간략하게 소개한다.

1. 개요

OSGi란 OSGi Alliance에서 정의한 기술로, 자바 환경에서 사용할 수 있는 동적 컴포넌트 시스템을 구성하기 위한 일련의 스펙들로 이루어져 있다. OSGi 스펙에 맞게 작성한 애플리케이션은 번들(Bundle)이라 불리는 작고 재사용 가능하며, 동적으로 구성 가능한 컴포넌트들로 이루어진다. 각 컴포넌트들은 OSGi 서비스라 불리는, OSGi 서비스 레지스트리에 의해 관리되는 자바 객체들을 통해 서로 상호 작용을 수행하게 된다.

OSGi 기술에 대한 자세한 내용은 http://www.osgi.org를 참고한다. OSGi 기술을 구성하고 있는 여러 specification에 대한 문서나 API에 대한 Javadoc 등 다양한 정보를 제공하고 있다.

2. OSGi Framework

OSGi 프레임워크는 OSGi 스펙에서 핵심이 되는 구성 요소이다. OSGi 프레임워크는 번들(Bundle)이라 불리는 확장성이 있고 다운로드 가능한 애플리케이션 컴포넌트들에 대한 관리 및 배포 등을 안전하게 수행할 수 있도록 하는 기능을 제공한다.

OSGi 프레임워크에서 제공하는 주요 기능들은 다음과 같다.

  • 번들(Bundle)의 생명 주기를 관리한다. 번들이란 OSGi 스펙에서 정의한 속성값들을 META-INF/Manifest.MF 파일에 기록한 JAR 파일이며, OSGi 프레임워크가 관리하는 기본 단위이다. OSGi 프레임워크 자체도 번들 형태를 취하고 있으며, OSGi 프레임워크 번들은 시스템 번들(System Bundle)이라고도 한다.

  • 각 번들들 사이에 의존관계(dependency)를 관리하고, 필요한 번들들을 연결(wiring)해준다. 각 번들은 필요한 패키지나 자신이 제공할 수 있는 패키지 및 버전 등에 대한 정보를 Manifest.MF에 OSGi 스펙이 규정한 방식대로 기술하고, OSGi 프레임워크는 이 정보들을 이용하여 각 번들 간에 의존 관계를 파악한 후 연결(wiring)한다.

  • 번들이 제공하는 서비스를 관리한다. OSGi에서 서비스란 특정 기능을 제공하는, 일반적인 자바 객체를 의미한다. 각 번들들은 OSGi 스펙에서 규정한 방법을 사용하여 OSGi 프레임워크가 관리하는 서비스 레지스트리(Service Registry)에 서비스를 등록하거나, 등록되어 있는 서비스를 가져와 사용할 수 있다.

3. JEUS OSGi 개요

JEUS OSGi 모듈은 Jakarta EE 기반 웹 애플리케이션 서버인 JEUS에서 OSGi 프레임워크 인스턴스를 생성하고 사용할 수 있는 환경을 제공한다. JEUS OSGi 모듈이 제공하는 기능을 사용하여 할 수 있는 일들은 다음과 같다.

  • 서버 시작 시 설정에 따라 OSGi 프레임워크 인스턴스를 생성하고 기동할 수 있다.

  • JNDI를 통해 애플리케이션이 OSGi 프레임워크 번들에 접근할 수 있다.

  • OSGi 프레임워크에 대한 상태를 확인하거나, OSGi 번들을 설치, 시작, 정지, 갱신, 제거할 수 있다.

  • 웹 애플리케이션에서 OSGi 프레임워크가 관리하는 서비스에 접근할 수 있는 방법을 제공한다.