소개

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

1. 개요

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

OSGi 기술에 대한 자세한 내용은 OSGi 공식 사이트를 참고한다. 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 프레임워크가 관리하는 서비스에 접근할 수 있는 방법을 제공한다.