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

Publication

Category

Recent Post

2012. 11. 3. 12:11 Middleware, Cloud/OSGi

예전 프로젝트할 때 WAS를 재기동하지 않고 애플리케이션과 SQL을 관리툴을 통하여 reloading 하는 프레임워크를 만든적이 있다. 또는 솔루션에서 액션을 수행하는 어뎁터 Java 코드를 관리툴을 통하여 입력하면 WAS의 재기동없이 신규 및 업데이트가 가능하게 한적이 있다. 그때 마다 사용했던 것이 ClassLoader 이다. 


좀 더 발전적이게 Plugin처럼 만들고 싶다는 생각을 했지만 게으름으로 미루다 OSGi에 관심을 갖게 되었다. 솔루션을 만들때 통신, 데이터 관리, 어드민 관리, 서비스등을 별도의 버전으로 관리하고 싶었다. OSGi 이면서 J2EE와 같은 Enterprise급 또는 솔루션 개발을 진행할 수 없을까 고민하던 중 찾은 Eclipse Virgo!  


  - 이일민씨의 기고글 : Virg 들어가기

  - Ted Won씨의 블로그 : Virgo 이해

  - 공식 Virgo Wiki


딱 내가 찾던 미들웨어 기능을 고스란히 가지고 있는 Eclipse Virgo를 사용해 보자 

Virgo는 두가지 종류의 버전을 제공한다 


  - Virgo Kernel : Runtime Platform for OSGi based java applications

  - Virgo Web Server : Virgo Kernel + Tomcat Server, OSGi based Web Application 배포 가능 



▶ Virgo 설치 


  1) 다운로드 :  http://www.eclipse.org/virgo/download/ (현재 v3.5.0)

  2) Virgo Server for Apache Tomcat 으로 시작해 보자

  3) bin/startup.bat 를 수행하면 OSGi bundle를 로딩하고 tomcat이 시작된다

  4) 웹 admin console을 들어가 보자 (http://localhost:8080,  id: admin pwd: springsource)

  5) 상단의 메뉴를 클릭하면 반영된 bundle내용 및 기타 상태정보와 deploy등을 수행할 수 있다

  6) Virgo에서 제공하는 모니터링 툴을 실행해 보자 (<Virgo_Home>/bin/jconsole.bat 실행)

  7) jconsole 로그인 (admin / springsource)

  8) JVM에 대한 기본적인 모니터링 항목(memory, thread info, loaded classes, tomcat JMX info) 등을 다양하게 모니터링 할 수 있다 

[Overview] 탭에서 Memory, CPU, Thread수, 로딩된 Class수 등을 볼 수 있다. 



[Threads] 탭에서 각 스레드의 정보를 볼 수 있다. 하단 왼쪽의 스레드를 클릭하면 하단 오른쪽에 정보가 나온다. 


[MBeans]탭에서 Tomcat의 JMX 뿐만 아니라 Virgo 관련 JMX 정보도 볼 수 있다 


  9) Virgo가 사용하는 기본 Library Path(repository/ext)와 유저 Library Path (repository/usr). 기본 OSGi Bundling만 인식한다 

  10) Log는 configuration/serviceability.xml 안에 설정을 하면 serviceability 디렉토리에 로그가 쌓인다 (logback 사용)

  11) OSGi telnet console을 사용하고 싶다면 configuration/osgi.console.properties 중 telnet.enabled=true 로 수정 그리고 Virgo를 재기동한다


  12) OSGi CLI 기반 연결 기본 port 는 2401 변경하고 싶다면 위의 properties파일에서 포트 번호를 변경하고 접속한다

  13) osgi> lb 명령을 수행하면 현재 번들의 상태를 알 수 있다

  14) 번들을 보면 OSGi Kernel, Apache Felix, Apache MINA등이 Active이고 Spring, SLF4J 등이 Resolved 상태이다


Virgo는 OSGi개념위에 J2EE 플랫폼기반 애플리케이션을 만들 수 있게 해준다. 


posted by 윤영식