4.3. Bundle Lifecycle

OSGi는 다이내믹 플랫폼으로, 프레임워크가 동작하고 있는 도중에 번들을 설치, 시작, 업데이트, 멈춤, 제거 할 수 있다.

번들이 멈추면be stopped
– 번들이 등록한 서비스들은 모두 등록이 해지되고unregistered 번들은 RESOLVED 상태가 된다.
– 번들이 가지고 있던 자원을 반납하고 쓰레드도 종료한다.
– 번들이 노출 시켰던 패키지들은 번들이 멈추더라도 계속해서 다른 번들들에 의해 사용될 수 있다.

번들은 RESOLVED 상태에서 업데이트 할 수 있다.
– 업데이트하는 과정은 같은 번들을 특정 버전에서 다른 버전으로 이관migrate하는 것이다.

번들은 RESOLVED 상태에서 시작be started 될 수 있다.
– 시작되면 번들은 ACTIVE 상태가 된다.

OSGi의 PackageAdmin refreshPackages 명령어
– 전체 OSGi 프레임워크 또는 설치되어 있는 번들들의 모든 패키지를 리프래시한다.
– 리프래시하는 동안에 그 대상이 되는 번들의 Application Context는 멈췄다가 재시작한다.
– refreshPackages 명령 처리 후, 수정된 번들의 이전 버전 패키지 또는 제거된 번들의 패키지는 더이상 사용할 수 없다. 자세한 사항은 OSGi 스펙 참조.

(다시) 번들이 멈추면..
– application context는 자동으로 제거된다.
– 서비스들도 OSGi 서비스 레지스트리에서 제거된다.
– application context의 종료 라이프사이클(DisposableBean, destroy-method, @Post머시기..)이 진행된다.
– 멈춘담에 바로 다시 시작시키면, 새로운 application context를 만든다.

2 thoughts on “4.3. Bundle Lifecycle”

    1. 넹.. ^^;; OSGi 콘솔에서 번들가지고 간단하게 놀아보시면 금방 감이 잡하실 겁니다. 저도 아직 자세히는 모르구요. 공부하는 중이죠.

Leave a Reply

Your email address will not be published. Required fields are marked *