블로그 이미지
윤영식
Full Stacker, Application Architecter, KnowHow Dispenser and Bike Rider

Publication

Category

Recent Post

2012. 10. 29. 16:15 Middleware, Cloud/OSGi

OSGi 프레임워크중 r4를 구현한 Felix를 설치하고 간단히 구현한 번들을 어떻게 올려서 사용할 수 있는지 보자. 


▶ 테스트 환경


  - Felix를 local PC에 설치하고 구동한다  (Felix가 OSGi 프레임워크라고 하지만 사실은 기능이 아무것도 없고 필요한 기능을 구현한 번들을 운영 관리해 주는 미들웨어-Middelware-라고 보면 된다)

  - Jetty 엔진 번들을 Felix 프레임워크에 올린다(start). 

  - Test용 Http Servlet 호출 프로그램을 짜고 번들로 만든다 (TestServlet 번들)

  - TestServlet 번들을 Felix에 올린다(start)

  - 브라우져에서 TestServlet을 호출해 본다. 


결국 아무 기능이 없는 Felix OSGi 미들웨어 위에 HTTP Servlet Engine인 Jetty를 올리고, Servlet을 개발하여 올리면 Client에게 서비스를 제공할 수 있게된다. 


▶ 환경 구축하고 테스트


  1) Felix (http://felix.apache.org/site/downloads.cgi) 에서 main framework 을 다운로드 한다

  2) 다운로드 zip 파일을 적당 위치에 푼다 (이전에 JDK 설치는 필수)
   

  3) 디렉토리 위치에 felix.bat 파일을 만든다  (bat 내용 :  java -classpath ./bin/felix.jar org.apache.felix.main.Main )    

    

  4) cmd 창을 띄워서 felix.bat 을 실행하고, lb 명령을 수행하면 현재 기본 Activate된 번들 정보가 나온다 (help 다른명령보기)

   

  5) felix에는 shell과 repository 번들이 bundle 디렉토리에 존재한다.

    

  6) 다른 번들을 auto deploy하기 위하여 conf/config.properties에서 #felix.auto.deploy.dir=bundle 로 되어있는 주석 #을 제거한다. 그리고 bundle디렉토리에 다운로드 받은 번들 jar 파일을 놓고 felix를 재시작하면 자동 activate된다.


  7) 수동 active 방법 : install xxx.jar   -->  start <번들No.> 

   

  8) felix를 일단 시작하면 기존 active된 상태 정보들은 felix-cache디렉토리에 영구저장된다. (번들 activate 상태정보를 완전 제거하고, felix를 초기화 하고 싶다면 해당 디렉토리를 삭제하면 된다)

  

  9) http://felix.apache.org/site/downloads.cgi 사이트에서 HTTP 관련 subproject 번들을 다운로드 받아서 로컬의 <felix 홈>/bundle 디렉토리에 copy한다


  

  10) felix를 재시작하면 jetty가 8080 port로 Listening을 한다 (포트 변경은 jetty bundle 압축을 풀고, metatype.xml 에 정의된 port 수정후 재 배포한다

 

  11) http://localhost:8080/ 을 호출해 보면 jetty 404 에러가 보이면 정상이다. (왜? 아무런 서비스도 올리지 않고 단지 jetty servlet engine만 기동 되었기 때문이다)
 

  12) 테스트 번들 만들기는 다음 블로그에서 소개하기로 하고 첨부된 httptest.jar 를 특정 디렉토리에 복사한다. 

  

  13) felix 위에 activate 시켜보자. 여기선 bundle 디렉토리에 파일을 놓고 felix를 restart함으로써 auto deploy 말고 수동으로 바로 activate 시켜본다 ( felix:install file:<directory> , 주의 : 윈도우 구분자는 \\ 두개 삽입하고 전체경로 지정 )

  

  14) http://localhost:8080/servlet1/MyMusicCollection  을 호출한다

  

  15) counting crows 입력값을 넣고 submit 하면 jetty가 해당 요청을 받아서 test servlet으로 요청처리를 보내고 결과를 반환한다

 


결국 OSGi 프레임워크는 필요한 기능이나 서비스를 번들로 만들어서 각 기능을 이용할 수 있게 해주는 미들웨어라고 볼 수 있다.


'Middleware, Cloud > OSGi' 카테고리의 다른 글

[Eclipse Virgo] 사용하기  (0) 2012.11.03
[OSGi] 서비스 Layer 만들기  (0) 2012.10.30
[OSGi] BundleContext에 의한 LifeCycle 관리  (0) 2012.10.30
[OSGi] manifest.mf 파일 설정  (0) 2012.10.30
[OSGi] 이론-1  (0) 2012.10.27
posted by 윤영식