7장. 라이프사이클 관리

7.1. 번들 라이프사이클 상태

OSGi 환경의 애플리케이션에는 번들의 라이프사이클이 적용됩니다. 번들의 라이프사이클 상태는 다음과 같습니다.

  1. Installed - 모든 번들이 설치된 상태로 시작됩니다. 설치된 상태의 번들은 모든 종속 항목을 해결하기를 기다리고 있으며, 해결되면 번들이 해결된 상태로 이동합니다.
  2. 해결됨 - 다음 조건이 충족되면 번들이 해결된 상태로 이동합니다.

    • 런타임 환경은 번들에서 지정한 환경을 충족하거나 초과합니다.
    • 번들에서 가져온 모든 패키지는 확인된 상태에 있거나 현재 번들과 동시에 확인된 상태로 이동할 수 있는 번들에 의해 노출됩니다.
    • 모든 필수 번들은 해결된 상태에 있거나 현재 번들과 동시에 확인될 수 있습니다.

      중요

      애플리케이션을 시작하기 전에 애플리케이션의 모든 번들이 해결된 상태에 있어야 합니다.

      위의 조건 중 하나라도 충족되지 않으면 번들이 다시 설치된 상태로 이동합니다. 예를 들어 가져온 패키지가 포함된 번들을 컨테이너에서 제거할 때 이러한 상황이 발생할 수 있습니다.

  3. starting - 시작 상태는 해결된 상태와 활성 상태 간의 Transmissionory 상태입니다. 번들이 시작되면 컨테이너는 번들에 대한 리소스를 생성해야 합니다. 컨테이너가 제공되는 경우 번들의 bundle activator의 start() 메서드도 호출합니다.
  4. active - 활성 상태의 번들을 수행할 수 있습니다. 활성 상태의 번들은 번들의 콘텐츠에 따라 다릅니다. 예를 들어 Cryostat-WS 서비스 공급자를 포함하는 번들은 서비스를 통해 요청을 수락할 수 있음을 나타냅니다.
  5. stop - 중지 상태는 활성 상태와 확인된 상태 간의 Transmissionory 상태입니다. 번들이 중지되면 컨테이너가 번들의 리소스를 정리해야 합니다. 컨테이너가 제공되는 경우 번들의 bundle activator의 stop() 메서드도 호출합니다.
  6. uninstalled - 번들을 제거하면 해결된 상태에서 uninstalled 상태로 이동합니다. 이 상태의 번들은 해결된 상태 또는 다른 상태로 다시 전환할 수 없습니다. 명시적으로 다시 설치해야 합니다.

애플리케이션 개발자에게 가장 중요한 라이프사이클 상태는 시작 상태 및 중지 상태입니다. 애플리케이션에서 노출하는 끝점은 시작 상태 중에 게시됩니다. 게시된 끝점은 중지 상태 중에 중지됩니다.