Chapter 7. 번들 다루기

스프링 DM은 기존에 존재하는 번들 또는 새로운 것을 설치하기 위한 스키마 엘리먼트를 제공한다. 적절한 OSGi 서비스를 대체하기 위해 사용하는 용도가 아니고, bundle은 해당 번들에 application context 라이프사이클에 따라 특정 행위를 할 수 있는 방법을 제동한다.

bundle 엘리먼트는 org.osgi.framework.Bundle 타입의 빈을 정의할 때 사용한다. 그들의 라이프사이클을 주도하는 등의 직접 번들을 다룰 수 있는 간편한 방법이다. 가장 간단하게는 symbolic-name 속성만 기술하면 된다.

<bundle id=”aBundle” symbolic-name=”org.xyz.abundle”/>

aBundle이라는 빈은 Bundle 타입의 어떤 속성이든지 주입될 수 있다.

만약 필요한 번들이 설치되어 있지 않다면, location 속성을 사용하여 설치할 위치를 나타낼 수 있으며 또한 action/destroy-action 속성을 사용하여 번들 라이프사이클을 제어할 수 있다. location 속성은 번들 jar 파일이 존재하는 위치를 명시할때 사용한다. action 속성은 번들 객체에 호출되어야 할 라이프사이클 액션을 설정한다. action의 값으로는 insatll, start, update, stop, uninstall이 있다. 이런 액션들은 Bundle 인터페이스에 있는 메소드들 이름과 일치한다.

각각의 action 값들이 현재 번들 상태에 따라 어떻게 해석될지는 다음 표와 같다.

표생략

예제:

<!– 아래의 번들은 설치한 다음 시작할 것이다.–>
<bundle id=”aBundle” symbolic-name=”org.xyz.abundle”
   location=”http://www.xyz.com/bundles/org.xyz.abundle.jar”
   action=”start”/>

스프링 DM 예제에 들어있는 virtual-bundle 엘리먼트를 사용하여 OSGi 번들을 실제 존재하는 파일과 별개로 생성하여 사용할 수 있다.