Programming/OSGi2010. 10. 19. 09:17

본 내용은 실전 OSGi&SpringDM(위키북스) 책의 일부 내용입니다

1. SpringDM을 사용한 OSGi Service 구현
           Service를 좀더 편하게 사용하기 위해 SprigDM사용(SpringDM설치 방법 참조 Charter 11-p265)

           1-1. SpringDM xml서비스 등록

                     구현체 googleBean , 클래스 chapter12.google.Google를 인터페이스, 서비스 속성와 같이 서비스 등록

                    

                     <beans ... >

                                //구현체

                                <bean id="googleBean" class="chapter12.google.Google" />

                               

                                //서비스 등록                         

                                <osgi:service id="googleService" ranking="5" ref="googleBean">

                                          //인터페이스

                                          <osgi:interfaces>

                                                     <value>chapter04.searchengine.SearchEngine</value>

                                          </osgi:interfaces>

                                          //서비스 속성

                                          <osgi:service-properties>

                                                     <entry key="service.vendor" value="Google" />

                                                     <entry key="searchable" value="Text,Image,Code" />

                                          </osgi:service-properties>

                                </osgi:service>

                     </beans>

                    

           1-2. 서비스 실행

                     3-2-1. 서비스 실행 객체 얻기

                                //xml파일에서 주입받아 사용

                                private SearchEngine searhEngine;

                                public void setSearchEngine(SearchEngine searchEngine) {

                                          this.searcheEngine = searchEngien;

                                }

                     1-2-2. 서비스 주입을 위한 xml파일

                                <beans ...>

                                          //인터페이스를 통해 reference가져 옴

                                          <osgi:reference id="searchEngineSvc" interface="chapter04.searchengine.SearchEngine" />

                                          //<osgi:reference id="searchEngineSvc" interface="chapter04.searchengine.SearchEngine" cardinality="0..1" timeout="5000"/>

                                         

                                          //위의 reference를 통해 서비스 검색(서비스 없으면 5분 동안 해당 서비스 대기)

                                          <bean id="searchClient" class="chapter12.client.SearchClient" init-method="start">

                                                     <property name="searchEngine" ref="searchEngineSvc" />

                                          </bean>

                                </beans>

                     1-2-3. 복수 서비스 검색(더 많은 옵션은 chpater12-p321참조)

                                //xml파일에서 주입받아 사용

                                private List searhEngines;

                                public void setSearchEngines(List searchEngines) {

                                           this.searcheEngines = searchEngiens;

                                }

                               

                                //xml 파일

                                <beans ...>

                                          //인터페이스를 통해 reference가져 옴

                                          <osgi:List id="searchEngineSvc" interface="chapter04.searchengine.SearchEngine" />

                                         

                                          //위의 reference를 통해 서비스 검색(서비스 없으면 5분 동안 해당 서비스 대기)

                                          <bean id="searchClient" class="chapter12.client.SearchClient" init-method="start">

                                                     <property name="searchEngine" ref="searchEngineSvc" />

                                          </bean>

                                </beans>

3. OSGi Service를 구현한 jar파일

Maven을 사용한다면 dependency를 추가 하거나 아니며 OSGi Service를 구현 jar파일이 필요

<dependency>

<groupId>org.eclipse.osgi</groupId>
<artifactId>org.eclipse.osgi.services</artifactId>
<version>3.1.200.v20071203</version>

</dependency>


Posted by Brian B. Lee