Bundle은 BundleContext에 의한 생명주기 관리가 이루어진다. 기본적으로 BundleContext 객체는 Bundle이 생성될 때 인자로 전달이 된다. 또한 OSGi 프레임워크와의 연결 통로이다. BundleContext는 OSGi Layer에서 LifeCycle Layer를 담당한다.
▶ BundleContext의 하는 일
- OSGi에 새로운 번들 설치
- OSGi에 설치된 다른 번들 리스트 및 정보 읽어오기
- OSGi에 등록된 서비스 리스트 및 서비스 객체 가져오기
- 서비스나 번들의 변경에 대한 이벤트 Listening
2) install file:c:/temp/testbundle.jar 파일 명령 : INSTALLED 상태가 된다
번들의 manifest 오류들을 점검 한다
3) resolve <bundle number> : RESOLVED 상태가 된다
번들의 Export / Import를 연결해 주는 단계,
resolving 상태에서 문제가 발생하면 diag 명령을 내려서 원인을 찾는다
4) start <bundle number> : STARTING->ACTIVE 상태가 된다
BundleActivator.start(BundleContext)가 호출된다. 문제 발생시 다시 RESOLVED 상태로 돌아 간다
start 안에는 많은 시간이 소요되는 작업을 해서는 안되고 있다면 별도의 스레드로 진행한다
5) stop <bundle number> : STOPPING->RESOLVED 상태가 된다
BundleActivator.stop(BundleContext)가 호출된다. stop()을 호출하면 만들어 놓은 스레드나 서비스를 종료 해지해야 한다. 따라서 stop 호출시 사용한 스레드, 서비스들을 종료하는 코드를 넣는다.
6) uninstall <bundle number> : RESOLVED-> UNINSTALLED 상태가 되고 ss(Equinox 기준) 또는 lb (felix 기준) 명령으로 보면 bundle 명칭이 나오지 않는다. 번들이 삭제된 것임
번들이 완전 제거 되는 것임. OSGi 목록에서 나타나지 않는다
<참조>
BundleActivator.java : http://kickjava.com/src/org/osgi/framework/BundleActivator.java.htm
BundleContext.java : http://kickjava.com/src/org/osgi/framework/BundleContext.java.htm
'Middleware, Cloud > OSGi' 카테고리의 다른 글
[Eclipse Virgo] 사용하기 (0) | 2012.11.03 |
---|---|
[OSGi] 서비스 Layer 만들기 (0) | 2012.10.30 |
[OSGi] manifest.mf 파일 설정 (0) | 2012.10.30 |
[OSGi] Felix 설치 사용하기 (0) | 2012.10.29 |
[OSGi] 이론-1 (0) | 2012.10.27 |