Os gi 기술교육
description
Transcript of Os gi 기술교육
OSGi 소개
Agenda
•OSGi 소개
•OSGi 특징 및 구조
•OSGi Framework
•예제
What is OSGi
•Open Service Gateway initiative
•OSGi Alliance 에서 동적인 플랫폼을 만들기 위해 시작
•Dynamic Module System for Java
• 동적인 컴포넌트 모델을 지원하는 프레임워크
What is OSGi
•번들 (Bundle) 라는 모듈 단위를 기반으로 동작
•여러 개의 번들로 애플리케이션 구성
•동적으로 프레임워크 상에 설치 , 실행 , 업데이트 , 중단 , 제거
•라이프 사이클 모델을 지원
OSGi Feature
•자바 플랫폼 위에 , 번들이라 불리는 작고 재사용 가능한 컴포넌트로부터 조립
•시스템의 재시작 없이 연결구조를 동적으로 변경
•번들이 동적으로 추가 / 삭제되고 서로 간에 호출
•Service Registry 에 서비스를 등록 서비스를 export / import
OSGi framework Architecture
Bundle
•번들 (Bundle) 이라는 모듈 단위를 기반으로 동작
•Bundle 구성 = resources + mainfest file + OSGI-OPT
Bundle• manifest.mf : 20 가지 헤더 정보를 가짐 + 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 를 정의 . 외부노출
Bundle
Bundle Life Cycle• OSGi 는 다이내믹 플랫폼으로 , 프레임워크가 동작하고 있는 도중에 번들을 설치 , 시작 , 업데이트 , 멈춤 , 제거 할 수 있다 .
Service• 번들은 서비스 인터페이스를 구현하여 서비스 객체를 생성하며 , 프레임 워크
서비스 레지스트리에 등록한다 .• 또한 서비스 레지스트리를 통해서 등록된 서비스를 찾고 Interact 할 수 있다 .
Framework
Getting startedpackage 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~");}
}
Example
•사전 서비스 - 번들의 결합을 보여주고 서비스를 등록하며 서비스를 찾아 서비스를
이용하는 예제
• DEMO_OSGi_DICTIONARY: 사전 서비스의 구현 인터페이스
• DEMO_OSGi_DICTIONARY_KOREA: 한국어 사전 서비스
• DEMO_OSGi_DICTIONARY_JAPAN: 일본어 사전 서비스
• DEMO_OSGi_DICTIONARY_RUN: 사전 메인