강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

오라이온 서버(Orion Server)설치 및 J2EE 애플리케이션의 배치

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

title23.gif

김세곤 <sehkone@webdox.co.kr>

2001년 1월 3일

들어가며

이번 글은 J2EE 애플리케이션 서버인 오라이온 서버의 설치와 J2EE 애플리케이션의 배치(deployment)에 대해서 알아본다. EJB를 비롯한 J2EE 환경의 여러 요소를 사용하기 위해서는 J2EE 애플리케이션 서버라는 것을 설치해야 하는데, 오라이온 서버는 저렴한 가격(비상업적 목적:무료, 상업적 목적:서버 사양 및 사용자 수에 관계없이 일률적으로 $1500)으로 쉽게 사용할 수 있으며 고가의 서버에 비해 성능면에서도 손색이 없어 근래 시장 점유율이 급격하게 높아지고 있는 제품이다. GPL 라이센스를 따르는 공개용 J2EE 서버가 있기는 하지만 아직 성숙한 단계가 아니라 초보자가 사용하기가 쉽지 않은 단점이 있는데 반해, 오라이온 서버는 설치와 배치가 간단하여 무리없이 설치하여 사용할 수 있다. 이번 글은 오라이온 서버에 한정적인 내용과 함께 J2EE 애플리케이션에 대한 개념도 담고 있으므로, 오라이온 서버가 아닌 다른 J2EE 애플리케이션을 사용하는 독자들에게도 도움이 될 것으로 생각한다.

오라이온 서버 설치

  요구 환경

유닉스, 리눅스, 윈도우즈에서 모두 오라이온 서버를 설치해서 사용할 수 있다. 오라이온 서버를 설치하여 사용하기 위해서는 다음의 것들이 필요하다.

  • J2SE(JDK 1.3)

  • 데이터베이스(오라클, SQL서버, 인포믹스, 포스트그레스 등의 대부분의 관계형 데이터베이스)

  • 사용 데이터베이스 JDBC 드라이버

JDK는 1.3을 권장한다. 썬 사이트를 방문하면 해당 OS에 맞는 JDK 1.3을 다운받을 수 있다(이후부터, JDK가 설치된 디렉토리를 $JAVA_HOME이라고 부르도록 하겠다). 데이터베이스와 연동하지 않는다면 데이터베이스와 JDBC 드라이버가 필요하지 않지만, EJB를 사용한다면 데이터베이스는 필수적이고, 근래의 웹 개발에서 데이터베이스를 사용하지 않는 경우가 거의 없으므로 설치하도록 한다. 데이터베이스는 대부분의 관계형 데이터베이스가 가능하지만 mySQL과 같이 commit/rollback 기능이 없는 것은 사용하는데 많은 제약이 따르므로, 가급적이면 오라클, SQL서버, 포스트그레스 등과 같이 관계형 데이터베이스가 갖추어야 하는 기본적인 요소들을 포함하는 것을 사용하도록 한다. JDBC 드라이버는 대부분 jar나 zip 확장자인 한 개의 파일로 구성되므로, 그 파일을 확보하면 된다.

  오라이온 서버 설치

오라이온 서버를 설치하는 과정은 매우 간단하다. 오라이온 사의 홈페이지를 방문, 다운로드를 받아서 임의의 디렉토리에 압축을 풀면 된다(이후, 오라이온 서버가 설치된 디렉토리는 $ORION_HOME으로 부르도록 하겠다). 추가적으로 할 일은 다음의 두 가지이다.

  • tools.jar 복사

  • JDBC 드라이버 복사

JDK가 설치되어 있는 디렉토리 아래의 lib 디렉토리($JAVA_HOME/lib)를 보면 tools.jar 파일이 있는데 이것을 오라이온 서버를 설치한 디렉토리에 그대로 복사한다. 유닉스, 리눅스 환경이라면 다음처럼 하면 되고, 윈도우즈라면 탐색기를 사용하면 되겠다.


다음으로 할 일은 JDBC 드라이버를 $ORION_HOME/lib 디렉토리에 복사하는 것이다. 오라클이라면 classes12.zip가 JDBC 파일이고, 포스트그레스 6.5라면 jdbc6.5-1.2.jar가 JDBC 파일이므로, 유닉스, 리눅스 환경이라면 다음처럼 하면 되고, 윈도우즈라면 역시 탐색기를 사용하면 될 것이다.


이것으로 설치 과정은 모두 끝이나고 환경 설정하는 일이 남았다.

오라이온 서버 설정

$ORION_HOME/config 디렉토리에 각종 환경 설정에 대한 파일들이 있는데 이 중에서 우선 주목할 것은 data-sources.xml, server.xml, default-web-site.xml 세 가지이다.

  데이터베이스 설정

$ORION_HOME/config/data-sources.xml 파일은 데이터베이스의 접속 자원(JDBC 2 Standard Extension의 DataSource 클래스)을 설정하기 위한 것이다. 데이터베이스와 연동하는 과정에서 가장 시스템의 부하를 많이 잡아 먹는 것이 바로 데이터베이스 접속과 해제이므로, 데이터베이스 접속을 풀로 관장하도록 하는 것이 DataSource이다. 거두절미하고 data-sources.xml에 다음 내용을 추가하자.


위의 예는 오라클의 경우인데 data-source 태그의 각 속성이 의미하는 바를 알면 다른 데이터베이스의 경우도 쉽게 설정할 수 있다. 첫번째 class 속성의 값은 항상 위의 경우처럼 하면 되고, name 속성의 값은 임의로 설정한다. 다음의 location, xa-location, ejb-location, pooled-location 속성의 값은 개발자가 만드는 프로그램에서 사용할 JNDI 이름인데 임의로 정하도록 하되, 앞에 jdbc/를 붙이도록 한다. 나중에 코딩할 때 사용할 이름이므로 기억해 두자. connection-driver 속성에는 드라이버 이름을 적어 놓는다. Class.forName()의 인자에 지정하는 값과 같은 값을 명시하면 된다. 포스트그레스6.5라면 postgresql.Driver가 된다. username과 password 속성에는 데이터베이스의 사용자 이름과 비밀번호를 쓰면 된다. url 속성에는 데이터베이스 접속 URL을 명시하면 된다. schema 속성은 Entity Bean의 자바 데이터 형과 데이터베이스 컬럼 타입을 매핑하고 있는 파일 이름을 가리키는데, $ORION_HOME/config/database-schemas 디렉토리 아래에 몇몇 데이터베이스의 경우에 해당되는 파일들이 있고 schema 속성의 값으로 자신에게 해당하는 파일 이름을 적으면 된다. 자신의 데이터베이스에 해당되는 파일이 없다면 하나 새로 만들면 된다. 다른 데이터베이스 해당 파일을 참조하면 쉽게 만들 수 있다. max-connection 속성의 값으로는 풀이 보유하는 데이터베이스 접속의 최대치를 명시하면 되고, inactivity-timeout 속성에는 접속 타임아웃 시간 가격을 초 단위로 적당히 적어주면 된다.

  J2EE 애플리케이션 설정

    J2EE 애플리케이션이란?

여기서 J2EE 애플리케이션에 대한 개념부터 잡아두어야 할 것 같다. J2EE 애플리케이션은 각종 클래스 파일과 웹 문서들의 집합이다. 물론, 웹 기반이 아니라면 웹 문서는 포함이 되지 않을 것이다. J2EE 환경의 개발에서 사용자 인터페이스 부분은 대부분 웹 기반일 것이므로 웹 문서가 포함되는 경우를 기준으로 설명하도록 하겠다. J2EE 애플리케이션은 크게 다음 두 가지로 구성된다.

  • EJB를 비롯한 각종 클래스 파일

  • 사용자 인터페이스 : 웹 문서, 왑(WAP) 문서 등

EJB를 비롯한 클래스 파일은 대개 확장자가 jar인 jar 명령어로 압축한 상태의 파일로 배포가 되고, 웹 문서(혹은 왑 문서)들은 확장자가 war로 끝나는 파일로 배포가 된다. 이 중에서 war로 끝나는 파일은 특별히 웹 애플리케이션이라고 부른다. 다시 jar 파일들과 war 파일들을 jar 명령어로 한데 묶어서 확장자가 ear인 파일을 만들면 이것이 J2EE 애플리케이션이 되는 것이다.

    애플리케이션 등록

J2EE 애플리케이션 서버에는 복수 개의 애플리케이션이 배치되어 운영될텐데, 이 때문에 애플리케이션 서버에 각각의 애플리케이션에 대한 정보를 알려주어야 한다. 여기서 배치(deployment)라는 말은 애플리케이션이나 그 구성 요소를 애플리케이션 서버에서 운영될 수 있도록 셋업하는 과정을 일컫는다

여러분이 배치하는 J2EE 애플리케이션에 대한 정보는 $ORION_HOME/config/server.xml에 기술해야 한다. 이 파일에는 application-server 태그가 있는데 이 태그 안에 하위 태그로 다음과 같은 내용을 각각의 애플리케이션마다 추가해 준다.


위의 경우는 webdox라는 이름의 J2EE 애플리케이션과 그 위치를 등록한 것이다. path 속성에는 ear 파일의 경로를 명시한다. 여기서 하나 꼭 알아두고 넘어가야 할 내용이 있다. 앞서 언급한 jar, war, ear 파일들은 복수 개의 파일을 하나로 압축한 형태인데 꼭 이 형태가 되어야만 하는 것은 아니다. 압축하지 않은 상태로도 얼마든지 배치가 가능하다. 만일, 꼭 압축한 jar, war, ear 파일 형태로만 배치가 가능하다면 개발 과정에서 테스트해 볼 때마다 늘 압축하고 해제하는 일을 반복해야하는 불상사가 생길 것이다.

  가상 호스트 설정

여러 개의 가상 호스트를 함께 운영하려고 한다면 이에 대한 정보를 오라이온에 설정해야 한다. $ORION_HOME/config/server.xml 파일을 보면 중간에 다음과 같은 내용을 볼 수 있다.

    

이 내용은 가상 호스트에 대한 정보와 해당 호스트의 웹 애플리케이션에 대한 정보를 담고 있는 별도의 파일의 위치를 지정해 주고 있다. default-web-site.xml은 오라이온 서버가 그야말로 디폴트로 사용하는 웹 서버에 대한 설정을 해 둔 파일이다. 따라서, 이 파일은 특별히 건드릴 필요가 없고 여러분이 사용하는 호스트에 대한 파일을 추가로 만들어야 한다. 예를 들어, webdox.co.kr, www.webdox.co.kr 두 개의 가상 호스트에 대한 가상 호스트를 설정하기 위해서는 default-web-site.xml과 같은 역할을 하는 파일을 하나 추가로 만들고 이것을 server.xml에 등록해 주어야 한다. server.xml에 다음의 한 줄을 추가하면 된다.

    

이제 webdox-web-site.xml을 만들어야 할텐데, 가장 쉬운 접근은 default-web-site.xml을 복사해서 수정하는 방법이다. 어쨌거나, webdox-web-site.xml의 내용은 다음과 같다.


<web-site> 태그의 host 속성에는 [ALL] 또는 아이피 주소를 적어준다. [ALL] 이라고 하면 오라이온이 설치된 컴퓨터가 여러 개의 아이피를 보유할 때 모든 아이피에 다 적용된다는 뜻이고, 위의 경우처럼 아이피 주소를 구체적으로 명시하면 그 아이피 주소에만 적용된다. virtual-hosts 속성이 바로 가상 호스트 이름을 설정하는 부분인데, webdox 웹 애플리케이션이 www.webdox.co.kr과 webdox.co.kr 두 가상 호스트 이름으로 접근이 가능하도록 하고 싶으므로, 위처럼 webdox.co.kr과 www.webdox.co.kr을 콤마로 구분해서 적어 넣으면 되겠다. 위의 예에서 <web-site> 태그에 사용된 하위 태그로는 <access-log>와 <web-app> 태그가 있는데 전자는 로그 파일의 경로를 후자는 가상 호스트에서 사용하는 J2EE 애플리케이션의 이름과 거기에 해당되는 웹 애플리케이션의 이름을 명시한다.

여기서 아주 중요한 <web-app> 태그를 살펴보자. application 속성에는 server.xml에서 명시한 J2EE 애플리케이션 이름을 적어주어야 한다. 우리는 앞서 server.xml 파일에 다음처럼 webdox.ear 애플리케이션을 webdox라는 이름으로 등록한 바가 있다.


바로 이 부분의 name 속성에 명시한 이름인 webdox를 webdox-web-site.xml 파일의 <web-app> 태그의 application 속성에 명시하는 것이다.

name 속성에는 webdox.co.kr 또는 www.webdox.co.kr의 웹 문서들의 집합인 웹 애플리케이션의 이름을 적어 주어야 한다. 이름이 webdox인 J2EE 애플리케이션에는 이 가상 호스트들에 해당하는 웹 애플리케이션이 존재할텐데, 바로 그 이름을 적어준다는 말이다. 이 이름은 사실 뒤에서 설명하게 되는 application.xml에서 설정하는 값을 적게 되는데, 뒤에서 자세히 설명하도록 하겠다.

마지막 속성인 root 속성은 웹 애플리케이션의 접근 문맥 이름이다. 여기서 그냥 /로 명시하면 www.webdox.co.kr 혹은 webdox.co.kr로 바로 접근하게 되고, root 속성에 예를 들어 aaa 라고 적어 놓는다면 www.webdox.co.kr/aaa 혹은 webdox.co.kr/aaa로 접근하게 된다. 굳이 접근 문맥이 필요하지 않다면 단지 /만 명시한다.

J2EE 애플리케이션의 배치

이제 오라이온 서버에 J2EE 애플리케이션에 대한 등록 절차를 모두 마쳤으므로, 실제 J2EE 애플리케이션을 배치해 보자.

  J2EE 애플리케이션의 구조

앞서 말한 것처럼 J2EE 애플리케이션은 EJB를 포함한 각종 클래스 파일과 웹 문서들의 집합인 웹 애플리케이션으로 구성된다. 웹 애플리케이션은 복수 개가 가능하다. 가장 단순한 구조는 EJB와 클래스 파일들을 묶어 놓은 한 개의 jar 파일과 웹 문서(JSP, Servlet, 그림)들을 묶어 놓은 한 개의 war 파일이 있는 경우이다. 예를 들어, 우리의 웹독스는 EJB와 클래스파일을 묶어 놓은 ejb.jar 파일과 웹 문서를 묶어 놓은 web.war 파일로 구성될 수 있다. 다시 이것들을 묶어서 하나의 ear 파일인 webdox.ear을 만들면 J2EE 애플리케이션을 모두 합치게 되는 것이다. 어쨌거나, J2EE 애플리케이션은 다양한 구성 요소들이 있을 수 있으므로, 이것들에 대한 설명 파일이 필요할텐데 그것이 바로 application.xml이다.

앞서, webdox 애플리케이션의 위치를 /home/webapps/webdox.ear로 지정하였다. 따라서, webdox.ear 파일이 /home/webapps 디렉토리에 아래에 위치해야 한다. 그런데, 이렇게 늘 압축된 형태로만 배치가 되어야 한다면 개발 중에 있는 애플리케이션의 경우라면 수정 작업이 끔직하게 번거롭게 될 것이다. 하지만 걱정하지 않아도 된다. webdox.ear 파일 대신에 webdox 디렉토리 아래에 webdox.ear 파일이 압축 해제된 상태로 있어도 되니 말이다.

우선 /home/webapps/webdox 디렉토리의 내용을 보자.


여기에는 webdox 애플리케이션의 구성 요소를 설명하는 application.xml 파일과 EJB를 비롯한 클래스들을 묶어 놓은 ejb.jar, 웹 문서들을 묶어 놓은 웹 애플리케이션인 web.war 파일이 있다. 역시 ejb.jar, web.war 두 개의 파일이 압축된 상태로만 있어야 한다면 불편할텐데, 같은 방식으로 ejb.jar 파일 대신 ejb 디렉토리 아래에 ejb.jar 파일의 내용이 압축 해제된 상태로 있어도 된다. web.war도 마찬가지다.

  application.xml

J2EE 애플리케이션의 구성 요소를 모두 설명하는 파일인 application.xml 파일을 살펴보자.


무슨 일을 하는지 쉽게 알 수 있을 것이다. 위의 내용은 두 개의 구성 요소인 ejb.jar와 web.war를 등록하고 있다.

자 여기서, <web> 태그의 하위 태그들을 주목하자. 여기서 등록한 web.war에서 확장자를 떼어 낸 "web"이라는 이름은 앞서 webdox-web-site.xml의 <web-app> 태그의 name 속성의 값과 일치해야 한다. <context-root> 속성에는 /를 적어 놓으면 된다.

앞서 필자가 web.war 파일 대신 이 내용이 압축 해제된 상태로 web이라는 이름의 디렉토리에 존재해도 된다고 했었는데, jar 파일인 경우에는 압축 해제된 상태라면 jar로 끝나는 파일 이름 대신 디렉토리 이름을 명시해야 한다. 위의 예에서는 ejb.jar의 값을 설정했지만, ejb.jar 파일이 압축 해제된 상태로 ejb 디렉토리에 존재한다면 다음처럼 설정해야만 한다.

        

ejb.jar과 같은 파일은 없고 오직 웹 애플리케이션만 필요하다면 웹 애플리케이션만 application.xml에 등록하면 된다.

  web.xml

위의 예에서는 모든 웹 애플리케이션이 /home/webapps/webdox/web 디렉토리 아래에 위치하도록 하였다. 이 디렉토리의 구조는 많은 독자들에게 친숙한 WEB-INF 디렉토리가 존재해야 한다. 이 디렉토리에는 웹 애플리케이션에 대한 정보를 기술하고 있는 web.xml 파일이 있게 마련인데, 이 파일은 서블릿에 대한 정보를 담게 된다. web.xml에 대해서 설명은 다음 기회로 미루겠다.

웹 문서들에서 사용하는 클래스(서블릿 포함)들은 모두 /home/webapps/webdox/web/WEB-INF/classes 디렉토리에 위치하도록 하면 된다.

  ejb-jar.xml

지금까지 설정한 대로 라면 EJB에 대한 모든 설명은 /home/webapps/webdox/ejb/META-INF/ejb-jar.xml에 담겨지게 된다. ejb-jar.xml에 대한 설명 역시 다음 기회로 미룬다.

오라이온 서버 실행

  서버 실행

실행은 매우 간단한다. 다음처럼 하면 된다.


  애플리케이션 재배치(redeployment)

EJB와 같은 클래스가 변경되었을 때에 이를 반영하기 위해서는 오라이온이 애플리케이션을 재배치해야 하는데 어떤 경우에는 오라이온이 자동적으로 알지만 그렇지 않은 경우도 종종있다. 이럴 때는 강제로 애플리케이션을 재배치(redeployment)해야 하는데, 오라이온을 종료하였다가 다시 실행시킬 필요 없이, XML 문서들을 touch하면 간단히 해결된다. 예를 들어, 웹 애플리케이션에서 사용하는 클래스가 업데이트 되었다면, web.xml의 최근 수정 시각을 변경하여 주는 유닉스 명령어인 touch를 사용하거나 에디터를 이용해서 최근 수정 시각을 바꾸어 주면 된다. EJB가 변경되었다면 ejb-jar.xml 파일의 최근 수정 시각을 바꾸어 주면 된다.

  오라이온의 종료

종료는 간단히 프로세스를 찾아서 kill해 주면 된다.

기타 사항

오라이온 서버에서 한글을 제대로 사용하기 위해서는 $ORION_HOME/application-deployments 디렉토리의 오라이온 XML 문서들을 수정해야 한다. 대부분의 J2EE 애플리케이션 서버는 application.xml, web.xml, ejb-jar.xml에 대응하는 파일들과 추가적인 XML 문서를 자동적으로 생성하는데, 오라이온 서버의 경우는 $ORION_HOME/application-deployments 디렉토리가 그 위치다. 이 디렉토리 아래에는 각 애플리케이션 마다 하나씩 디렉토리가 생성되고 여기에 XML 문서들이 위치하게 된다. 위에서 설정한 애플리케이션의 이름은 webdox이므로 webdox라는 디렉토리가 생겼을 텐데, 그 아래에 보면 ejb, web 디렉토리가 생기게 된다. 이 중 web/orion-web.xml 파일은 웹 애플리케이션에 대한 오라이온의 설정 내용이 담기게 된다. 이 내용은 web.xml에서 기술하지 않는 특정 서버에만 국한되는 내용들이다. 하여간에, 이 파일에는 <orion-web-app> 태그가 존재하는데 이 태그의 속성으로 다음을 써 넣어야 한다.


EUC-KR 대신 EUC_KR을 써도 된다. 이렇게 꼭 orion-web.xml 파일에 문자셋을 설정해 주어야 한글 사용에 문제가 없다. 이렇게 하고, JSP 문서 내 페이지 디렉티브의 contentType 속성에 text/html; charset=EUC-KR을 설정해 주기만 하면 모든 한글 사용에 문제가 없게 된다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,038 명
  • 현재 강좌수 :  35,813 개
  • 현재 접속자 :  114 명