OSGi 프레임워크중 r4를 구현한 Felix를 설치하고 간단히 구현한 번들을 어떻게 올려서 사용할 수 있는지 보자.
▶ 테스트 환경
- Felix를 local PC에 설치하고 구동한다 (Felix가 OSGi 프레임워크라고 하지만 사실은 기능이 아무것도 없고 필요한 기능을 구현한 번들을 운영 관리해 주는 미들웨어-Middelware-라고 보면 된다)
- Jetty 엔진 번들을 Felix 프레임워크에 올린다(start).
- Test용 Http Servlet 호출 프로그램을 짜고 번들로 만든다 (TestServlet 번들)
- TestServlet 번들을 Felix에 올린다(start)
- 브라우져에서 TestServlet을 호출해 본다.
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으로 요청처리를 보내고 결과를 반환한다
'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 |