Geronimo What is Geronimo?

황제낙엽 2007.03.03 09:21 조회 수 : 34 추천:113

sitelink1  
sitelink2  
extra_vars5  
extra_vars6  
What Is Geronimo?
저자: Kunal Jaggi
2006-07-19
Geronimo는 최근에 Apache에서 시작된 오픈 소스 어플리케이션 서버이다. Apache 라이센스 (2.0)를 기반으로 한 Geronimo Java EE 1.4 인증을 받은 어플리케이션 서버이다.
In This Article
널리 사용되는 오픈 소스 기술의 통합을 기반으로 하여, 활기차고 역동적인 커뮤니티와 함께 인증된 오픈 소스 서버를 등에 업고 있는 Geronimo는 엔터프라이즈 시장에서 폭풍과 같은 위치를 차지해 가고 있다. 이 글에서는 Geronimo에 대해 소개하고 Geronimo에서 간단한 Java EE 웹 어플리케이션을 개발하고 배포하는데 필요한 기본적인 내용을 설명하고 있다.
Why Geronimo?
이용 가능한 오픈 소스 어플리케이션 서버는 Geronimo만 있는 것이 아니다. ObjectWebJOnAS 같은 다른 오픈 소스 Java EE 어플리케이션 서버들도 존재한다. 그러나, Geronimo는 다른 어플리케이션 서버들이 갖지 못한 부분을 채워주고 있다. Geronimo를 사용하면, 컴포넌트들을 쉽게 통합할 수 있다. Geronimo의 주요 목표는, 특정 어플리케이션의 요구 사항과 맞물려 사용자 정의 빌드를 지원하는 것이다. 예를 들면, 트랜잭션 관리가 필요치 않을 경우, Tomcat이나 Jetty와 같은 웹 티어 컨테이너를 택할 수 있다. Geronimo에서는 컴포넌트들을 매우 쉽게 조합할 수 있다. 간단하게 말하자면, 사용자가 원하는 형태대로 구성할 수 있다는 것이다. 이는 Geronimo가 단순한 어플리케이션 서버 그 이상이라는 것을 의미한다. Geronimo는 서로 다른 컴포넌트들을 한데 묶는데 사용될 수 있는 프레임워크를 제공한다.
Geronimo는 기존에 있는 것을 최대한 재사용하려고 노력하였으며, 기존의 오픈 소스 프레임워크나 툴들의 위치를 위협하려는 의도를 지니고 있지 않다. 오히려, Geronimo는 여러 오픈 소스 프로젝트들을 통합한 것이며, 이들 중 몇몇은 다음 아래와 같다.
티어
오픈 소스 프로젝트
설명
웹 티어
Tomcat
자바 서블릿 2.4, JSP 2.0에 대한 RI
Jetty
서블릿 JSP를 지원하는 웹 티어 서블릿 컨테이너
비즈니스 티어
OpenEJB
CMP 2, EJB QL을 지원하는 오픈 소스 EJB 컨테이너
EIS 티어
ActiveMQ
MDB를 지원하는 오픈 소스 JMS 어플리케이션 provider
HOWL
분산 트랜잭션 및 트랜잭션 로그를 지원
Geronimo의 매우 우아한 기능들 중 하나는, 재 시작이 필요 없다는 것이다. 설정 변경 시 재 시작이 필요한 다른 웹 티어 컨테이너나 비즈니스 티어 컨테이너들과는 달리, Geronimo는 동적 클래스 로딩 지원 및 중단 없는 서비스 실행 유지를 염두에 두고 설계되었다.
A Look Under the Hood
Geronimo Geronimo Beans (간단히 GBeans)라 불리는 컴포넌트들로 느슨하게 통합되어 있다. GBeans Geronimo의 기본 구성 요소로서, IoC 컨테이너 개념을 기반으로 관리되는 빈(managed beans) 이며, Geronimo 커널에 서비스를 추가하는데 사용된다. Geronimo에 있는 거의 모든 것들이 다 GBean이다.
새로운 GBean을 배포함으로써 Geronimo를 쉽게 확장시킬 수 있다. GBeans에는 서버의 기능들이 정의되며, 이들은 배포될 때, 커널에 등록된다. 커널은 GBean 컴포넌트들을 생성하고 이들에 의존성을 주입하고, 이벤트를 통지하고 GBean의 메소드를 호출함으로써, 컴포넌트의 생명 주기를 관리한다. 각각의 GBean은 상태를 유지할 수 있으며, 다른 GBean들에 의존성을 갖고, 자신의 기능을 정의하고 있는 로직을 포함할 수 있다. GBean 아키텍처는 Dependency Injection (DI) 환경 구성 및 관리 시스템이다. 하나의 GBean plan을 통해 커널에 끼워 넣어진다. plan이란 XML 기반의 환경 설정 파일이다. 더 나아가, 환경 설정 파일들을 편집함으로써, 컴포넌트들을 쉽게 제거할 수 있다. Geronimo GBean 아키텍처와 IoC 컨테이너에 대한 자세한 정보는 Resources 부분을 참조하여라.
Get Started with Geronimo
Geronimo Java SE 1.4 버전 이상 SE 5 버전 미만이 요구된다. 이 글을 쓰는 시점에서 가장 최신의 마일스톤 버전은 M5이다(역자 주: 현재 Geronimo 1.1 버전까지 나와 있으며, Java SE 5.0 버전을 사용할 수 있다. 보다 최신의 내용을 원한다면 Geronimo 사이트를 방문하길 바란다). Tomcat 컨테이너가 함께 들어 있는 Geronimo zip 파일을 다운로드 받아 압축을 푼 후, GERONIMO_HOME 환경 변수를 만들고 압축을 푼 위치로 값을 설정한다.
Geronimo 커널을 부팅 시켜 Geronimo를 시작 시킨다. 일단 시작되면, Geronimo는 아래와 같이 보여지는 것처럼 다른 어플리케이션 모듈과 함께 미리 정의된 모든 모듈들을 로딩 하게 된다 (간략하게 나타내기 위해 모든 필드들을 다 표시하지는 않았다).
D:>cd %GERONIMO_HOME%
D:geronimo-1.0>java -jar bin/server.jar
Booting Geronimo Kernel (in Java 1.4.2_08)...
Starting Geronimo Application Server
[********************] 100%  44s Startup complete
  Listening on Ports:
   1527 0.0.0.0 Derby Connector
   8080 0.0.0.0 Tomcat Connector HTTP
   8443 0.0.0.0 Tomcat Connector HTTPS
  Started Application Modules:
   EAR: geronimo/daytrader-derby-tomcat/1.0/car
   EAR: geronimo/uddi-tomcat/1.0/car
   WAR: geronimo/welcome-tomcat/1.0/car
  Web Applications:
   http://WINKJ185011-NZR:8080/
   http://WINKJ185011-NZR:8080/console
Geronimo Application Server started
다음으로, 그림 1에서 보여지는 것처럼, 웹 브라우저를 통해 http://localhost:8080/console 주소를 갖는 Geronimo 콘솔로 들어가 Geronimo가 제대로 설치되어 있는지 확인한다. 디폴트 사용자 이름인 system과 사용자 암호인 manager를 사용하면 된다. Geronimo를 멈추는 것은 간단하다. Ctrl - C를 누르면 Geronimo 서버가 중지 된다.
Apache Geronimo Console
그림 1. Apache Geronimo Console
Sample Application
이 글이 소개 글이니만큼, 간단한 웹 어플리케이션을 작성한 후, Geronimo에 배포해보도록 하겠다. 다음 환경 변수들이 올바르게 설정되어 있는지 먼저 확인하여라.
환경 변수
목적
JAVA_HOME
자바 SE가 설치되어 있는 위치를 가리킴
GERONIMO_HOME
Geronimo가 설치되어 있는 루트 디렉터리 설정
ANT_HOME
Ant가 설치되어 있는 루트 디렉터리 설정
GERONIMO_DEV
어플리케이션 개발 공간의 루트 디렉터리
PATH
ANT_HOME/bin PATH에 잡혀 있는지 확인
GERONIMO_DEV 안에 다음 디렉터리를 생성한다.
etc: 이 디렉터리 내에 모든 배포 plan이 놓인다.
src: 서블릿 및 다른 자바 소스 파일들을 놓는데 사용된다.
web: 이 디렉터리 내에 모든 JSP 파일들이 놓인다.
Deployment Plans
예제 어플리케이션에서는 web.xml geronimo-web.xml이라는 두 개의 배포 plan이 필요하다. 이들을 살펴보기에 앞서, 이 둘의 차이점에 대해 설명하도록 하겠다. 다음 표는 이 두 배포 plan의 차이점과 역할을 이해하는데 도움이 될 것이다.
배포 plan
타입
위치
목적
web.xml
표준 자바 EE 웹 배포 기술자
WEB-INF 하위 디렉터리의 WAR 일부분으로 저장됨
선언적 보안 지정, 오류/환영 페이지 설정, 서블릿 선언/매핑, 필터 정의/매핑, 초기화 파라미터 설정, 리스너 클래스 등록 등
geronimo-
web.xml
Geronimo에 필요한 배포 plan
private WEB-INF 디렉터리 하위
리소스 레퍼런스, 보안 매핑 환경 설정과 같이 Geronimo에 국한된 부분을 정의
Code Your First Geronimo App
먼저 간단한 JSP 페이지부터 작성해보자. JSP 페이지는 사용자를 환영하는 페이지이며 현재 날짜와 시간을 보여준다. 아래와 같이 hello.jsp를 작성한 후, GERONIMO_DEV/web 디렉터리에 저장한다.
<html>
<head>
  <jsp:useBean id="currentdate" class="java.util.Date" />
  <title>Geronimo JSP App</title>
</head>
<body>
<h3>Hello world from Geronimo!! on ${currentdate}</h3>
</body>
</html>
다음은, 다음 두 배포 plan을 작성한 후, GERONIMO_DEV/etc 디렉터리에 저장한다. 첫 번째는 web.xml로서, 이는 표준 자바 EE 배포 기술자이다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
<span lang=EN-US style="FONT-FAMILY: 굴림; mso-bidi-font-size: 10.0pt; mso-bidi-fo