Whiteship's Note

5.2. Extender configuration options

Spring DM/Chapter 5 : 2008. 5. 14. 23:29


번들과 관련된 설정이외에, 스프링 DM은 extender의 기본 행위를 설정할 수도 있다. 이것은 Spring-DM을 관리하는 환경Managed Environment에 포함시키거나 여러 번들에 걸친 기능이 필요할 때 유용하다. 확장 가능한 설정을 위해, extender는 OSGi의 fragment를 사용하여 기본 값을 재정의 할 수 있다. extender는 META-INF/spring 밑에 있는 모든 XML 파일을 읽어들이며 application context(OsgiBundleXmlApplicationContext)를 생성한다. extender의 기본 설정을 재정의하려면, 아래 테이블을 보고 원하는 빈을 읽어와서 정의를 하고 spring-osgi-extender.jar의 Fragment로 붙이면 된다.

Fragment-Host: org.springframework.bundle.osgi.extender

표생략

5.2.1. Listening to Extender events

번들의 application context 시작이나 실패시 로그를 남기고 싶을 수 있다. 이런 경우, 스프링 DM이 제공하는
org.springframework.osgi.context.event 패키지를 정의하여 OSGi application context가 보낼 수 있는 이벤틀를
정의할 수 있다.

현재 지원하는 이벤트는 딱 두개
- OsgiBundleContextRefreshedEvent
- OsgiBundleContextFailedEvent

이 이벤트들을 받길 원하는 쪽에서는 OsgiBundleApplicationContextListener를 구현해야 한다. 그리고 해당 서비스를
OSGi 서비스로 공개하야 한다. 그럼 스프링 DM이 알아서 리스너들을 찾아서 이벤트를 그쪽으로 보내줄 것이다.

이런식의 이벤트 처리는 OSGi의 장점을 모두 누릴 수 있다. 즉 extender가 이벤트 배포자나 이벤트 리스너로 부터
완전히 분리되어 있으며, 등록/해지 과정도 간단하다.

스프링 DM 이벤트와 스프링 이벤트와는 조금 차이가 있는데, 스프링 이벤트는 이벤트가 발생한 applicaion context
내부의 빈으로 이벤트를 보내지만, OSGi 이벤트는 자신을 지켜보고 있는 다른 application context의 빈으로 보내진다.

top

Write a comment.