㈜유미테크
OSGI
(Open Service Gateway initiative)
㈜유미테크2㈜유미테크 Yeoman
• Open Service Gateway initiative
• OSGi Alliance에서 동적인 플랫폼을 만들기 위해 시작
• Dynamic Module System for Java
• 동적인 컴포넌트 모델을 지원하는 프레임워크
What is OSGi
㈜유미테크3㈜유미테크 Yeoman
• 번들(Bundle)라는 모듈 단위를 기반으로 동작
• 여러 개의 번들로 애플리케이션 구성
• 동적으로 프레임워크 상에 설치, 실행, 업데이트, 중단,
제거
• 라이프 사이클 모델을 지원
What is OSGi
㈜유미테크4㈜유미테크 Yeoman
• 자바 플랫폼 위에, 번들이라 불리는 작고 재사용 가능한
컴포넌트로부터 조립
• 시스템의 재시작 없이 연결구조를 동적으로 변경
• 번들이 동적으로 추가/삭제되고 서로 간에 호출
• Service Registry에 서비스를 등록
서비스를 export / import
OSGi Feature
㈜유미테크5㈜유미테크 Yeoman
OSGi framework Architecture
㈜유미테크6㈜유미테크 Yeoman
• 번들(Bundle)이라는 모듈 단위를 기반으로 동작
• Bundle 구성 =
resources + mainfest file + OSGI-OPT
Bundle
㈜유미테크7㈜유미테크 Yeoman
• manifest.mf : 20 가지 헤더 정보를 가짐
Bundle
+ Bundle-ManifestVersion :
1 = OSGi release 3, 2 = OSGi release 4
+ Bundle-Name : human-readable name
+ Bundle-SymbolicName : unique name
+ Bundle-Activator : BundleActivator를 상속.
start/stop 관련
+ Import-Package : package를 정의 .사용할 번들
+ Export-Package : package를 정의. 외부노출
㈜유미테크8㈜유미테크 Yeoman
Bundle
㈜유미테크9㈜유미테크 Yeoman
• OSGi는 다이내믹 플랫폼으로, 프레임워크가 동작하
고 있는 도중에 번들을 설치, 시작, 업데이트, 멈춤, 제
거 할 수 있다.
Bundle Life Cycle
㈜유미테크10㈜유미테크 Yeoman
• 번들은 서비스 인터페이스를 구현하여 서비스 객체를
생성하며, 프레임 워크 서비스 레지스트리에 등록한다.
• 또한 서비스 레지스트리를 통해서 등록된 서비스를 찾
고 Interact 할 수 있다.
Service
㈜유미테크11㈜유미테크 Yeoman
Framework
㈜유미테크12㈜유미테크 Yeoman
Getting started
package com.ymtech;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
public void start(BundleContext context) throws Exception {
System.out.println("Hello!!");
}
public void stop(BundleContext context) throws Exception {
System.out.println(“byebye~");
}
}
㈜유미테크13㈜유미테크 Yeoman
Example
• 사전 서비스
- 번들의 결합을 보여주고 서비스를 등록하며 서비스를 찾아 서비스
를 이용하는 예제
- DEMO_OSGi_DICTIONARY
: 사전 서비스의 구현 인터페이스
- DEMO_OSGi_DICTIONARY_KOREA
: 한국어 사전 서비스
- DEMO_OSGi_DICTIONARY_JAPAN
:일본어 사전 서비스
- DEMO_OSGi_DICTIONARY_RUN
:사전 메인

OSGI(Open Service Gateway initiative)