[작성 - 김석우, dolbi / 본 원고는 마이크로소프트웨어 2007년 10월호에 실린 기사입니다]
우리는 지난호에 OSGi Application 구현을 위한 실행과 개발 환경에 대하여 살펴보았다. 이번호에서는 OSGi Application (Bundle)을 직접 구현하고, OSGi Framework에 등록,수행,테스트 및 원격관리에 대한 일련의 번들 라이프 싸이클에 대해서 살펴보기로 한다. 많은 OSGi 관련 툴들이 나와있으나 이번호에서도 역시 IBM의 Websphere 솔루션을 사용하여 구현해보기로 한다. 구현할 내용은 다음과 같다.
1. HttpLogService를 이용한 Bundle 구현
2. OSGi Framework 상에서 Bundle Test
IBM에서는 OSGi 관련 솔루션들을 IBM Workplace Client Technology, Micro Edition 이라는 이름으로 One-stop 솔루션을 제공하는데, 이클립스 기반의 통합개발툴인 WSDD (WebSphere Studio Device Developer), OSGi 기반의 미들웨어 툴킷 Micro Environment Toolkit for WebSphere Studio, J2ME 런타임모듈과 DB2e 를 제공하는 WebSphere Everyplace Micro Environment으로 구성되어있다. SMF(Service Management Framework)은 IBM의 OSGi 솔루션의 명칭이면서 또한 Front-End Solution의 핵심 컴포넌트의 하나이다. IBM의 Front-End Solution을 Workplace Client Technology 이라고 통칭하기도 하는데, 주로 PC based Business Application, Device Control, Embedded & Mobile Device를 타겟으로 운용된다.
OSGi Bundle Architecture
OSGi에서는 모든 기능과 서비스들이 번들로 의해서 구현되고 서비스로 운영된다. 번들이 기본적인 구성요소인 이유로는 loosely-coupling과 reusability에 있는데, 번들은 Dependency static sharing과 dynamic services로 각각의 독립성(Dependency)을 유지하게 된다. 번들의 독립성이란 무슨 뜻일까? OSGi는 같은 번들이라고해도, 다른 버전의 번들을 동시에 사용할 수가 있다. 1.0의 A번들과 1.5의 번들이 함께 구동될수가 있다는 뜻이다. 그렇게 운영되는 것은 번들이 다음의 구성요소들로 구분되고, 요청하는 번들이나 서비스에 인터페이스로 제공되기에 가능하다.
- Bundle manifest file : 번들의 가장 기본적인 명칭, 버전, 제공 기능 및 다른 번들과의 static & dynamic interaction 방법들을 서술하고 있다.
- Bundle activator implementation : 우리는 번들이 OSGi System Framework로부터 install, update, start, stop되는 일련의 라이프 싸이클을 갖는다는 것은 알고있다. 이렇게 번들이 System Framework과 연동되고 컨트롤할수있게 해주는 것이 바로 OSGi BundleActivator interface이다.
- Custom service interface : Besides those OSGi defined services, bundle vendors can develop custom services. To do that, you should define a Java™ interface for each custom service (번들은 반드시 R3, R4의 규약에 나온 서비스들만 구현될수있는 것은 아니다. 각 벤더에서 독자적인 번들을 서비스 형태로 구현할 수가 있는데, 이렇게 각 벤더별 독자적으로 구현한 번들과 서비스를 사용하려고 할 때 필요한 것이 바로 Custom service interface 이다)
-
Custom service implementation : custom service interface를 정의한 Class 메소드