1장. JBoss서버의 설치와 준비

무료의 J2EE기반 어플리케이션 서버인 JBoss는 현재 가장 널리 사용되는 오픈 소스 어플리케이션 서버입니다. JBoss의 매우 유연하면서 사용하기 쉬운 서버 아키텍쳐는 처음 J2EE를 시작하는 분들은 물론, 커스터마이즈 가능한 미들웨어 플랫폼을 원하는 고급 개발자들에게도 사랑받고 있습니다. 서버의 바이너리와 소스코드 배포는 SourceForge 레포지터리에서 다운로드 받을 수 있습니다(sourceforge.net). 소스코드는 곧바로 사용가능한 형태이기 때문에 서버를 디버깅하면서 내부 동작에 대한 방식을 배우고 여러분의 사용 목적에 따라서는 이를 커스터마이징 할 수도 있습니다.

이번 장에서는 JBoss 4.0을 어떻게 설치하고 설정 하는지에 대해 단계별 학습방식으로 배울 수 있도록 구성되어 있습니다. 즉, 다음과 같은 사항들을 배우게 됩니다:

  • JBoss SourceForge 프로젝트 사이트로부터 최신 바이너리 받아오기
  • 다운받은 바이너리의 설치
  • 설치 테스트

또한 다음 사항들도 함께 배우게 될 것입니다:

  • 설치 디렉터리 구조
  • 관리자가 JBoss 설치에서 커스터마이징하기 원하는 중요 환경 설정 파일들
  • SourceForge CVS 레포지터리에서 4.0.x 릴리즈 소스 코드를 얻는 방법
  • 배포판 서버 빌드하기.

1.1. 바이너리 파일 얻기

가장 최신에 릴리즈된 JBoss는 SourceForge JBoss 프로젝트 파일 페이지에서 구할 수 있습니다. 이곳에서 여러분은 앞으로 릴리즈될 예정인 후보 버전들과 베타 버전뿐만 아니라 이전에 릴리즈 되었던 버전들도 다운받을 수 있습니다.

1.1.1. 사전 준비사항들

서버를 설치하고 동작시키기전에 여러분들은 JDK 1.3이상을 시스템에 설치했는지를 확인해주셔야 합니다. 가장 쉽게 이를 확인하는 방법은 java -version를 커맨드에서 실행시켜 자바 실행파일이 여러분의 경로에 존재하는지와 그 버전이 1.3 이상인지를 살펴보는 것입니다. 만일 여러분이 J2SE 5.0 버전을 사용하고 있다면 다음과 같은 결과를 얻게 될 것입니다.

C:\>java -version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)

JBoss를 시스템의 어느곳에 설치했는가는 중요한 사항이 아닙니다. 다만, 설치되는 디렉터리의 이름내에 공백이 포함될 경우 Sun기반의 VM에서는 문제가 발생할 소지가 있습니다. 이는 URL내의 공백을 처리해주는 이스케이프 처리가 올바르게 되지 않는 버그때문입니다. UNIX/Linux 시스템상에서 JBoss를 동작 시키기 위해서 반드시 root 권한이 있어야 하는 것은 아닙니다. JBoss에서 사용하는 모든 포트들은 0부터 1023사이에 존재하는 것이 없기 때문입니다.

1.1.2. 바이너리 패키지 설치하기

여러분이 설치하기 원하는 버전의 바이너리 아카이브를 다운로드 받았다면, 이제 여러분이 원하는 곳에 JDK jar 유틸리티(또는 다른 ZIP 압축 유틸리티)를 사용하여 jboss-4.0.1RC1.zip 아카이브 컨텐츠를 풀어주십시오. jboss-4.0.1RC1.tar.gz 아카이브는 아카이브내의 긴 경로명도 처리가 가능한 gnutar 호환의 압축된 tar 파일입니다. 솔라리스와 OSX의 표준 바이너리들은 현재 긴 경로명을 지원하지 않습니다. 압축을 풀면 jboss-4.0.1RC1 디렉터리가 생성됩니다. 다음 섹션에서는 이 디렉터리의 컨텐츠에 대해 살펴보도록 하겠습니다.

1.1.2.1. 디렉터리 구조

위에서도 언급되었듯이 JBoss 배포판을 설치하는 과정에서 서버를 시작시키는 스크립트들, JARs, 서버 환경설정 집합 및 작업 디렉터리들을 갖는 jboss-4.0.1RC1 디렉터리가 만들어 집니다. 여러분은 배포 레이아웃의 어느곳에다 편집, 환경 설정 변경, 코드의 배치등에 관한 JARs를 놓아야하는지를 반드시 알아야만 합니다. 그림 1.1, “JBoss 서버 설치 디렉터리 구조중에 기본 서버 설정 파일 세트에 대한 뷰”에서는 JBoss 서버의 설치 디렉터리를 보여주고 있습니다.

JBoss 서버 설치 디렉터리 구조중에 기본 서버 설정 파일 세트에 대한 뷰

그림 1.1. JBoss 서버 설치시 생성되는 기본 서버 환경 파일 세트의 뷰

이 문서에서는 앞으로 처음 시작위치인 jboss-4.0.1RC1 디렉터리를 JBOSS_DIST 디렉터리로 표기하도록 하겠습니다. In 그림 1.1, “JBoss서버 설치 디렉터리의 기본 서버 환경설정 파일 세트의 구조 뷰, 기본 서버 설정 파일의 세트를 펼친 모습. 다음의 서브 디렉터리들을 포함하고 있습니다: conf, data, deploy, lib, log 그리고 tmp. 설치가 말끔하게 끝난 경우, conf, deploylib 디렉터리가 만들어지게 됩니다. 각각의 디렉터리들이 갖는 목적은 표 1.1, “JBoss 디렉터리 구조”에 표시하였습니다. 이 표에서 ServerConfig Property 컬럼은 org.jboss.system.server.ServerConfig 인터페이스 상수와 이에 대응되는 시스템 속성 문자열입니다. ServerConfig상수 이름과 대응되는 시스템 속성 이름들은 그림 1.1, “JBoss 서버 설치 디렉터리에서 기본 서버환경 파일 세트 구조 뷰에서 파란색 텍스트로 나타내고 있습니다.”. XXX_URL 이름은 HTTP URL을 통해 웹서버 접근하듯이 원격지에서 URL을 사용하여 지정할 수 있는 대응되는 위치입니다. 여러분은 다음에 제공되는 표의 속성 항목들을 사용하여 JBoss 배포판의 레이아웃을 변경할 수 있습니다.

표 1.1. JBoss 디렉터리 구조

디렉터리설명ServerConfig 속성
binJBoss 배포버전에 포함된 모든 진입점과 관련된 JARs와 시작스크립트는 bin 디렉터리에 위치되어 있습니다.  
client클라이언트에 필요한 JAR 파일들은 client 디렉터리에 위치되어 있습니다. 클라이언트에 필요한 일반적인 파일들은 다음과 같습니다:
  • jbossall-client.jar
  • concurrent.jar
  • log4j.jar
  • jaas.jar,jnet.jar (JDK1.4 이상을 사용하지 않는 경우)
  • jcert.jar,jsse.jar (JDK1.4이상을 사용하지 않을때 SSL 운용하는 경우)
 
serverJBoss 서버환경 설정 세트는 server 디렉터리 아래에 위치합니다. 기본 서버환경 설정 세트는 server/default 입니다. JBoss는 minimal, default 그리고 all 설정 세트를 기본으로 제공하고 있습니다. default 환경설정 세트의 서브디렉터리들과 핵심 설정 파일들은 1.1.3 절, “기본 서버설정 파일 세트”에서 보다 상세히 다루도록 할 것입니다. SERVER_BASE_DIR ="jboss.server.base.dir"
SERVER_BASE_URL ="jboss.server.base.url"
liblib 디렉터리에는 JBoss에서 사용되는 구동 JAR 파일들을 포함하고 있습니다. 이 디렉터리에 여러분의 라이브러리 파일들을 위치시키면 안됩니다. LIBRARY_URL ="jboss.lib.url"
confconf 디렉터리에는 기본적으로 대상이 되는 서버의 환경설정 파일인 jboss-service.xml, 구동에 관련한 설명파일(bootstrap descriptor)가 포함되어 있습니다. 이 설정 파일에는 서버가 동작중인 동안에 지속적으로 적용되는 핵심 서비스들이 정의됩니다.SERVER_CONFIG_URL ="jboss.server.config.url"
datadata 디렉터리에는 서비스가 파일 시스템에 저장하게 되는 컨텐츠가 위치하게 됩니다.SERVER_DATA_DIR ="jboss.server.data.dir"
deploy deploy 디렉터리는 컨턴츠를 동적으로 배치할 수 있는 hot-deployment가 기본적으로 위치하는 곳입니다. URLDeploymentScanner URL 속성을 바꿔주면 이 위치를 바꿀 수 있습니다. 
liblib 디렉터리는 서버의 시작에 필요한 정의가 참조하는 위치입니다. 이 디렉터리에 들어있는 모든 JAR 파일들이 공유 classpath에 로드됩니다. SERVER_LIBRARY_URL="jboss.server.lib.url"
loglog 디렉터리는 구동에 관련된 서비스의 로그들이 쌓이는 기본 위치입니다. conf/log4j.xml 설정 파일을 수정하여 이 위치를 변경하실 수 있습니다. 없음
tmptmp 디렉터리는 배치되는 파일들이 로컬 이용을 위해 복사되는 위치입니다.SERVER_TEMP_DIR="jboss.server.temp.dir"

1.1.3. 기본 서버 설정 파일 세트

JBOSS_DIST/server 디렉터리에는 하나 이상의 설정 파일 세트가 존재할 수 있습니다. default JBoss 설정 파일 세트는 JBOSS_DIST/server/default에 위치합니다. JBoss는 설정 파일만을 바꿈으로써 쉽게 하나 이상의 서버 설정을 추가할 수 있습니다. 새로운 설정 파일 세트를 만드는 전형적인 방법은 default 파일 셋트를 새로만든 디렉터리에 복사한 후 그 내용을 수정해주는 것입니다. 아래에 제공된 그림 1.2, “conf와 deploy 디렉터리와 함께 기본 서버 설정 파일 세트의 확장된 뷰”default 설정 파일 세트의 컨텐츠입니다.

conf와 deploy 디렉터리와 함께 기본 서버 설정 파일 세트의 확장된 뷰

그림 1.2. conf와 deploy 디렉터리와 함께 기본 서버 설정 파일 세트의 확장된 뷰

conf/jboss-minimal.xml
이 파일은 jboss-service.xml 설정 파일의 가장 간단한 예제입니다. minimal 서버 설정 파일 세트에서 사용됩니다.
conf/jboss-service.xml
jboss-service.xml는 중요한 서비스 설정을 정의하는 곳입니다. 이 파일의 완전한 DTD와 문법은 2.4.2 절, “JBoss MBean 서비스”의 커스텀 서비스 통합을 다루는 곳에서 자세히 언급될 것입니다.
conf/jbossmq-state.xml
jbossmq-state.xml는 사용자와 암호를 맵핑시키는 파일과 메시지구독(subscription)의 기간등을 지정해주는 JBossMQ 설정 파일입니다. 이 파일의 포맷은 org.jboss.mq.sm.file.DynamicStateManager에 기술되어 있습니다.
conf/jndi.properties
jndi.properties 파일에는 no-arg 생성자를 사용하여 InitialContext가 만들어질 때 JBoss 서버내에서 사용되는 JNDI InitialContext 속성을 지정합니다.
conf/log4j.xml
이 파일에서는 아파치 log4j 프레임워크 범주의 우선순위와 JBoss 서버 코드에서 사용되는 어펜더를 설정합니다. log4j를 JBoss에서 사용하는 방법과 설정에 관한 자세한 사항은 JBoss/Log4j 책을 참고하십시오.
conf/login-config.xml
login-config.xml 파일에는 JAAS 기반의 보안을 사용하는 어플리케이션을 위한 서버측 인증 설정 예제가 들어있습니다. JBoss의 보안 프레임워크와 이 파일의 설정 방식(포맷)에 대한 자세한 내용은 8 장, JBoss에서의 보안을 참조하십시오.
conf/server.policy
server.policy 파일은 Java2 보안 허용에 대한 관리에 관련된 설정을 하는 곳입니다. 기본 파일은 모든 codebases들을 허용하도록 단순하게 구성되어 있습니다.
conf/standardjaws.xml
standardjaws.xml은 레가시 EJB 1.1 JBossCMP 엔진을 위한 기본 설정 파일을 제공합니다. cmp 레이어는 EJB 2.0의 지원을 위해 JBoss 3.0에서 재작성되었으며 CMP 엔진을 다루는 곳에서 3.2 버전에 대한 완전한 문서를 제공합니다.
conf/standardjbosscmp-jdbc.xml
standardjbosscmp-jdbc.xml는 JBoss 4.0.x EJB 2.0 JBossCMP 엔진의 기본 설정 파일을 제공합니다. 이 서술자에 대한 보다 자세한 정보는 11 장, CMP 엔진을 참조하십시오.
conf/standardjboss.xml
standardjboss.xml 파일은 기본 컨테이너 환경 설정을 제공합니다. 이 파일의 사용은 5장,  JBoss에서의 EJBs에서 다루고 있습니다.
conf/xmdesc/ClientTransaction-mbean.xml,JNDIView-xmbean.xml,TransactionManagerService-xmbean.xml
xmdesc 디렉터리는 jboss-service.xml 파일내에서 설정한 서비스들에 대한 XMBean 서술자를 포함합니다.
deploy/cache-invalidation-service.xml
cache-invalidation-service.xml은 JMS 통지를 통해 EJB 캐쉬의 커스텀 유효성확인을 가능하게 하는 서비스입니다. 기본값은 disabled 입니다.
deploy/client-deployer-service.xml
client-deployer-service.xml는 J2EE 어플리케이션 클라이언트를 지원하도록 제공되어지는 서비스입니다. application-client.xml 서술자에 기반을 둔 클라이언트 어플리케이션의 엔터프라이즈 네이밍 컨텍스트인 java:comp/env를 관리합니다.
deploy/hsqldb-ds.xml
hsqldb-ds.xml은 JBoss에 내장된 Hypersonic 1.7.1 데이터베이스 서비스의 환경설정 파일입니다. 이 파일을 통해 내장된 데이터베이스와 관련된 연결 팩토리를 설정합니다. JCA 데이터소스 파일의 포맷은 7.3.1절 , “JDBC 데이터소스 설정”에서 논의되어 집니다.
deploy/http-invoker.sar
http-invoker.sar에는 RMI/HTTP를 지원하는 독립적인 호출자(invoker)가 포함되어 있습니다. 또한 http를 통해 JBoss JNDI 서비스에 액세스할 수 있는 JNDI 네이밍 서비스를 위한 RMI/HTTP 프록시의 바인딩 설정도 합니다. 2.7.2.5 절, “HttpInvoker - RMI/HTTP 전송”에서 다루어질 것 입니다.
deploy/jboss-jca.sar
jboss-jca.sar는 1.0 JCA 사양을 적용시킨 어플리케이션 서버입니다. JBoss서버쪽에 리소스 아답터들을 통합시키는 연결 관리 기능을 제공합니다. JCA 레이어는 7 장, JBoss의 커넥터들에서 논의되어 집니다.
deploy/jboss-local-jdbc.rar
jboss-local-jdbc.rar 는 JCA는 아지지만 데이터소스를 지원하는 JDBC 드라이버의 JCA ManagedConnectionFactory 인터페이스를 수행하는 JCA 리소스 아답터입니다.
deploy/jboss-xa.rar
jboss-xa.rar는 JCA 아답터를 제공하지는 않지만, XADataSource 인터페이스를 제공하는 JDBC 드라이버를 위한 JCA ManagedConnectionFactory 인터페이스를 수행하는 JCA 리소스 아답터입니다.
deploy/jbossweb-tomcat50.sar
jbossweb-tomcat50.sar 디렉터리는 톰캣5 서블릿 엔진의 설정을 위한 압축을 푼 MBean 서비스 아카이브입니다. SAR dms JAR 아카이브가 압축된 상태로 배치되는데 반해 압축이 풀려 배치되기 때문에 톰캣 환경 설정을 보다 쉽게 편집할 수 있습니다. 이 서비스는 9 장, 서블릿 컨테이너 통합에서 논의되어 집니다.
deploy/jms/jbossmq-destinations-service.xml
jbossmq-destinations-service.xml 파일은 JMS 단위 테스트에 의해 사용되는 JMS 큐와 토픽들을 설정합니다. JMS 목적지 설정하기는 6 장, JBoss의 메시징에서 논의되어 집니다..
deploy/jms/jbossmq-httpil.sar
jbossmq-httpil.sar는 http를 통해 JMS를 사용할 수 있게 하는 JMS 호출 레이어를 제공합니다.
deploy/jms/jbossmq-service.xml
jbossmq-service.xml 파일은 중요 JBossMQ JMS 서비스를 설정합니다. 이 JMS 서비스들은 6 장, JBoss의 메시징에서 논의되어 집니다.
deploy/jms/jms-ra.rar
jms-ra.rar는 JMS 연결 팩토리를 위한 JCA ManagedConnectionFactory 인터페이스를 수행하는 JCA 리소스 아답터입니다.
deploy/jms/jms-ds.xml
jms-ds.xml 파일은 jms-ra.rar JCA 리소스 아답터와 함께 사용될 수 있도록 JBossMQ JMS 공급자의 설정을 합니다.
deploy/jms/jvm-il-service.xml
jvm-il-service.xml 내부-vm JMS 전송 호출 레이어를 설정합니다. 이 전송 레이어는 org.jboss.mq.il.jvm.JVMServerILService에 기술되어 있습니다.
deploy/jms/oil-service.xml
oil-service.xml은 JMS 최적화된 호출 레이어 설정 파일입니다. 이 전송 레이어는 org.jboss.mq.il.oil.OILServerILService에 기술되어 있습니다. (deprecated)
deploy/jms/oil2-service.xml
oil2-service.xml은 JMS 버전2의 최적화된 호출 레이어 설정 파일입니다. 꼭 사용되지는 않는 실험적인 작업이며 앞으로 없어질 것입니다.
deploy/jms/rmi-il-service.xml
rmi-il-service.xml은 JMS RMI기반의 호출 레이어를 설정하는 파일입니다. 사용하기에는 너무 느린 전송 레이어이며 앞으로 없어질 것입니다.
deploy/jms/uil2-service.xml
uil2-service.xml은 JMS 버전 2의 통합된 호출 레이어를 설정하는 파일입니다. 가장 빠르고 높은 신뢰성을 갖는 전송 기반의 커스텀 소켓이며 내부-vm 메시징에서 사용되어 집니다. 이 전송 레이어는 org.jboss.mq.il.uil2.UILServerILService에서 기술되어 집니다.
deploy/jmx-console.war
jmx-console.war 디렉터리는 JMX MBeanServer의 HTML 아답터를 제공하는 압축이 풀린 웹 어플리케이션 아카이브입니다. WAR는 압축된 jar와는 다르게 압축을 풀은 상태로 배치가 되어 역할 기반의 보안 설정을 담당하는 jmx-console.war/WEB-INF/*.xml 서술자의 설정편집을 보다 쉽게 할 수 있습니다. jmx-console은 2.3.1 절, “서버 점검하기 - JMX 콘솔 웹 어플리케이션”에서 다루어집니다.
deploy/jmx-invoker-adaptor-server.sar
jmx-invoker-adaptor-server.sar는 JMX 핵심 기능에 원격 액세스가 가능하도록 하는 RMI 인터페이스로써 JMX MBeanServer인터페이스 메쏘드의 서브셋을 노출하는 압축을 풀은 MBean 서비스 아카이브입니다. 전송이 독립된 인보커 아키텍처에 의해 처리된다는 것을 다를 뿐 레가시 jmx-rmi-adaptor.sar와 유사합니다. 이 서비스는 2.3.4 절, “임의의 프로토콜을 사용하여 JMX에 연결하기”에서 논의되어 있습니다.
deploy/mail-service.xml
mail-service.xml 파일은 JBoss 서버 내부에서 사용되는 JavaMail 세션을 제공하는 MBean 서비스 서술자입니다.
deploy/management/console-mgr.sar,web-console.war
console-mgr.sarweb-console.war는 JMX 콘솔에 비해 JMX 서버 관리가 풍부한 뷰를 제공하는 실험적인 웹 어플리케이션/애플릿입니다. 아직까지 개발되고 있는 과정에 있습니다. http://localhost:8080/web-console/ URL을 통해 이 콘솔에 접속할 수 있습니다.
deploy/monitoring-service.xml
monitoring-service.xml 파일은 JMX 경고에서 사용되는 콘솔 리스터와 이메일 리스너와 같은 경고 모니터의 환경설정에 사용됩니다.
deploy/properties-service.xml
properties-service.xml 파일은 시스템 속성들의 정의처럼 JavaBeans PropertyEditor의 커스터마이징이 가능하도록 하는 MBean 서비스 서술자입니다. 10.1 절, “시스템 속성 관리”에서 보다 자세하게 다룰것입니다.
deploy/scheduler-service.xml,schedule-manager-service.xml
scheduler-service.xml,schedule-manager-service.xml 파일들은 스케쥴 형태의 서비스를 제공하는 MBean 서비스 서술자를 설정합니다. 10.4 절, “스케줄 작업”에서 보다 자세하게 다룰것입니다.
deploy/sqlexception-service.xml
sqlexception-service.xml파일은 벤더에 종속적인 java.sql.SQLException의 처리를 위한 MBean 서비스 서술자의 설정을 합니다. 사용법은 11.11 절, “엔티티 명령어와 프라이머리 키 생성”에서 보다 상세하게 다루게 됩니다.
deploy/transaction-service.xml
transaction-service.xml은 JBoss JTA 트랜잭션 관리자와 관련된 서비스들의 설정을 위한 서비스 서술자를 설정하는 파일입니다. 이것과 관련된 서비스들은 4 장, JBoss에서의 트랜잭션에서 보다 자세하게 다루게 될 것입니다.
deploy/user-service.xml
user-service.xml파일은 여러분이 직접 제작한 MBean 서비스를 추가하기 위한 MBean 서비스 서술자 템플릿입니다. 그러나 꼭 이 파일을 사용해야만 하는 것은 아닙니다. MBean 서비스를 만드는 것은 2.4.3 절, “JBoss MBean 서비스 작성하기”에서 다루어지게 됩니다.
deploy/uuid-key-generator.sar
uuid-key-generator.sar 서비스는 UUID 기반의 키를 생성해주는 역할을 제공합니다.

1.2.  기본 설치후 테스트하기

일단 JBoss 배포판을 설치하셨다면, 여러분의 자바 VM/오퍼레이팅 시스템 조합에 큰 문제가 없는지를 확인해주기 위해 간단한 구동 테스트를 해주시는 것이 좋습니다. 여러분의 설치를 테스트해보기위해서는 JBOSS_DIST/bin디렉터리로 먼저 이동하신 후, OS에 따라 run.bat 이나 run.sh 구동 스크립트를 실행시켜주시면 됩니다. 그러면 아래쪽에 보여지는 화면과 유사한 결과가 나타나며 어떠한 오류나 예외상황 메시지도 나타나지 말아야 합니다.:

C:\jboss-4.0.1RC1>cd bin

C:\jboss-4.0.1RC1\bin>run.bat
===============================================================================
.
  JBoss Bootstrap Environment
.
  JBOSS_HOME: C:\jboss-4.0.1RC1\bin\\..
.
  JAVA: C:\Java\jdk1.5.0\bin\java
.
  JAVA_OPTS:  -Dprogram.name=run.bat -Xms128m -Xmx512m
.
  CLASSPATH: C:\Java\jdk1.5.0\lib\tools.jar;C:\jboss-4.0.1RC1\bin\\run.jar
.
===============================================================================
.
15:48:55,180 INFO  [Server] Starting JBoss (MX MicroKernel)...
15:48:55,190 INFO  [Server] Release ID: JBoss [Zion] 4.0.1RC1 (build: CVSTag=JBoss_4_0_1_RC1 date=200411041143)
15:48:55,210 INFO  [Server] Home Dir: C:\jboss-4.0.1RC1
15:48:55,210 INFO  [Server] Home URL: file:/C:/jboss-4.0.1RC1/
15:48:55,210 INFO  [Server] Library URL: file:/C:/jboss-4.0.1RC1/lib/
15:48:55,210 INFO  [Server] Patch URL: null
15:48:55,210 INFO  [Server] Server Name: default
15:48:55,210 INFO  [Server] Server Home Dir: C:\jboss-4.0.1RC1\server\default
15:48:55,210 INFO  [Server] Server Home URL: file:/C:/jboss-4.0.1RC1/server/default/
15:48:55,210 INFO  [Server] Server Data Dir: C:\jboss-4.0.1RC1\server\default\data
15:48:55,210 INFO  [Server] Server Temp Dir: C:\jboss-4.0.1RC1\server\default\tmp
15:48:55,210 INFO  [Server] Server Config URL: file:/C:/jboss-4.0.1RC1/server/default/conf/
15:48:55,210 INFO  [Server] Server Library URL: file:/C:/jboss-4.0.1RC1/server/default/lib/
15:48:55,210 INFO  [Server] Root Deployment Filename: jboss-service.xml
15:48:55,220 INFO  [Server] Starting General Purpose Architecture (GPA)...
15:48:55,981 INFO  [ServerInfo] Java version: 1.5.0,Sun Microsystems Inc.
15:48:55,981 INFO  [ServerInfo] Java VM: Java HotSpot(TM) Client VM 1.5.0-b64,Sun Microsystems Inc.
15:48:55,981 INFO  [ServerInfo] OS-System: Windows XP 5.1,x86
15:48:56,692 INFO  [Server] Core system initialized
15:49:00,107 INFO  [Log4jService$URLWatchTimerTask] Configuring from URL: resource:log4j.xml
15:49:00,387 INFO  [WebService] Using RMI server codebase: http://micenote:8083/
15:49:01,219 INFO  [NamingService] Started jndi bootstrap jnpPort=1099, rmiPort=1098, backlog=50, bindAddress=/0.0.0.0, Clien
t SocketFactory=null, Server SocketFactory=org.jboss.net.sockets.DefaultSocketFactory@ad093076
15:49:06,937 INFO  [Embedded] Catalina naming disabled
15:49:07,768 INFO  [Http11Protocol] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8080
15:49:07,818 INFO  [Catalina] Initialization processed in 751 ms
15:49:07,818 INFO  [StandardService] Starting service jboss.web
15:49:07,838 INFO  [StandardEngine] Starting Servlet Engine: Apache Tomcat/5.0.28
15:49:07,878 INFO  [StandardHost] XML validation disabled
15:49:07,918 INFO  [Catalina] Server startup in 100 ms
15:49:08,369 INFO  [TomcatDeployer] deploy, ctxPath=/ebxmlrr, warUrl=file:/C:/jboss-4.0.1RC1/server/default/deploy/ebxmlrr-se
rvice.sar/ebxmlrr.war/
15:49:09,561 INFO  [STDOUT] Initialized REST
15:49:09,681 INFO  [SAAJServlet] init
15:49:10,262 INFO  [SAAJServlet] init
15:49:10,582 INFO  [TomcatDeployer] deploy, ctxPath=/ws4ee, warUrl=file:/C:/jboss-4.0.1RC1/server/default/tmp/deploy/tmp48946
jboss-ws4ee-exp.war/
15:49:10,812 INFO  [TomcatDeployer] deploy, ctxPath=/, warUrl=file:/C:/jboss-4.0.1RC1/server/default/deploy/jbossweb-tomcat50
.sar/ROOT.war/
15:49:12,214 INFO  [STDOUT] [ jacorb.home unset! Will use '.' ]
15:49:12,214 INFO  [STDOUT] [ File .\jacorb.properties for configuration jacorb not found ]
15:49:12,565 INFO  [interceptors] InterceptorManager started with 2 SIs, 2 CIs and 4 IORIs
15:49:12,795 INFO  [orb] ORB run
15:49:13,116 INFO  [CorbaNamingService] Naming: [IOR:000000000000002B49444C3A6F6D672E6F72672F436F734E616D696E672F4E616D696E67
436F6E746578744578743A312E3000000000000200000000000000E8000102000000000D3139322E3136382E31312E3500000DC8000000114A426F73732F4
E616D696E672F726F6F74000000000000060000000000000008000000004A414300000000010000001C000000000001000100000001050100010001010900
0000010501000100000014000000080000001A00000DC9000000210000005000000000000000010000000000000024000000200000007E000000000000000
10000000D3139322E3136382E31312E3500000DC9000000000000000000000000000000000000000000000000000000000000002000000004000000000000
001F000000040000000300000001000000440000000000000003000000010000001C000000000001000100000001050100010001010900000001050100010
000002000000004000000000000001F0000000400000003]
15:49:13,626 INFO  [naming] re-Bound name: TransactionService
15:49:13,626 INFO  [CorbaTransactionService] TransactionFactory: [IOR:000000000000003049444C3A6F72672F6A626F73732F746D2F69696
F702F5472616E73616374696F6E466163746F72794578743A312E30000000000200000000000000E8000102000000000D3139322E3136382E31312E350000
0DC8000000144A426F73732F5472616E73616374696F6E732F46000000060000000000000008000000004A414300000000010000001C00000000000100010
00000010501000100010109000000010501000100000014000000080000001A00000DC9000000210000005000000000000000010000000000000024000000
200000007E00000000000000010000000D3139322E3136382E31312E3500000DC900000000000000000000000000000000000000000000000000000000000
0002000000004000000000000001F000000040000000300000001000000440000000000000003000000010000001C00000000000100010000000105010001
0001010900000001050100010000002000000004000000000000001F0000000400000003]
15:49:13,636 INFO  [naming] re-Bound name: UserTransaction
15:49:14,698 INFO  [RARDeployment] Required license terms exist view the META-INF/ra.xml: file:/C:/jboss-4.0.1RC1/server/defa
ult/deploy/jboss-local-jdbc.rar
15:49:14,888 INFO  [RARDeployment] Required license terms exist view the META-INF/ra.xml: file:/C:/jboss-4.0.1RC1/server/defa
ult/deploy/jboss-xa-jdbc.rar
15:49:15,078 INFO  [RARDeployment] Required license terms exist view the META-INF/ra.xml: file:/C:/jboss-4.0.1RC1/server/defa
ult/deploy/jms/jms-ra.rar
15:49:16,821 INFO  [WrapperDataSourceService] Bound connection factory for resource adapter for ConnectionManager 'jboss.jca:
service=DataSourceBinding,name=DefaultDS to JNDI name 'java:DefaultDS'
15:49:17,602 INFO  [ConnectionFactoryBindingService] Bound connection factory for resource adapter for ConnectionManager 'jbo
ss.jca:service=ConnectionFactoryBinding,name=JmsXA to JNDI name 'java:JmsXA'
15:49:18,393 INFO  [A] Bound to JNDI name: queue/A
15:49:18,393 INFO  [B] Bound to JNDI name: queue/B
15:49:18,393 INFO  [C] Bound to JNDI name: queue/C
15:49:18,403 INFO  [D] Bound to JNDI name: queue/D
15:49:18,403 INFO  [ex] Bound to JNDI name: queue/ex
15:49:18,654 INFO  [testTopic] Bound to JNDI name: topic/testTopic
15:49:18,664 INFO  [securedTopic] Bound to JNDI name: topic/securedTopic
15:49:18,664 INFO  [testDurableTopic] Bound to JNDI name: topic/testDurableTopic
15:49:18,664 INFO  [testQueue] Bound to JNDI name: queue/testQueue
15:49:18,674 INFO  [DLQ] Bound to JNDI name: queue/DLQ
15:49:18,934 INFO  [UILServerILService] JBossMQ UIL service available at : /0.0.0.0:8093
15:49:19,385 INFO  [MailService] Mail Service bound to java:/Mail
15:49:19,555 INFO  [TomcatDeployer] deploy, ctxPath=/jmx-console, warUrl=file:/C:/jboss-4.0.1RC1/server/default/deploy/jmx-co
nsole.war/
15:49:19,815 INFO  [TomcatDeployer] deploy, ctxPath=/web-console, warUrl=file:/C:/jboss-4.0.1RC1/server/default/deploy/manage
ment/web-console.war/
15:49:20,897 INFO  [Http11Protocol] Starting Coyote HTTP/1.1 on http-0.0.0.0-8080
15:49:21,057 INFO  [ChannelSocket] JK2: ajp13 listening on /0.0.0.0:8009
15:49:21,057 INFO  [JkMain] Jk running ID=0 time=0/30  config=null
15:49:21,077 INFO  [Server] JBoss (MX MicroKernel) [4.0.1RC1 (build: CVSTag=JBoss_4_0_1_RC1 date=200411041143)] Started in 25
s:617ms

여러분이 구동 스크립트를 실행한 결과가 위와 유사하다면, 이제 여러분은 JBoss를 사용할 준비는 된 것입니다. 서버를 종료시키려면, JBoss를 시작시킨 콘솔에서 Ctrl-C 를 눌러만 주시면 됩니다. 커맨드창에서 shutdown.bat 혹은 shutdown.sh 스크립트를 실행시켜도 역시 서버가 종료됩니다.:


C:\jboss-4.0.1RC1\bin>shutdown.bat
A JMX client to shutdown (exit or halt) a remote JBoss server.

usage: shutdown [options] 

options:
    -h, --help                Show this help message
    -D<name>[=<value>]        Set a system property
    --                        Stop processing options
    -s, --server=<url>        Specify the JNDI URL of the remote server
    -n, --serverName=<url>    Specify the JMX name of the ServerImpl
    -a, --adapter=<name>      Specify JNDI name of the RMI adapter to use
    -u, --user=<name>         Specify the username for authentication[not implemented yet]
    -p, --password=<name>     Specify the password for authentication[not implemented yet]

operations:
    -S, --shutdown            Shutdown the server (default)
    -e, --exit=<code>         Force the VM to exit with a status code
    -H, --halt=<code>         Force the VM to halt with a status code

run.bat 혹은 run.sh을 아무런 인자도 사용하지 않고 실행시키셨다면 서버는 default 서버 환경 파일 세트를 사용하여 구동됩니다. JBOSS_DIST/server 디렉터리 래에 존재하는 이름들중에 여러분이 원하는 환경 파일 세트를 갖고 서버가 구동되게 하려면, -c 옵션과 함께 그 이름을 인수로 붙여주시면 됩니다. 즉, 여러분이 minimal 환경 파일 세트를 갖는 서버를 구동시키려면 다음과 같이 명령어를 실행시켜주십시오:


C:\jboss-4.0.1RC1\bin>run.bat -c minimal
===============================================================================
.
  JBoss Bootstrap Environment
.
  JBOSS_HOME: C:\jboss-4.0.1RC1\bin\\..
.
  JAVA: C:\Java\jdk1.5.0\bin\java
.
  JAVA_OPTS:  -Dprogram.name=run.bat -Xms128m -Xmx512m
.
  CLASSPATH: C:\Java\jdk1.5.0\lib\tools.jar;C:\jboss-4.0.1RC1\bin\\run.jar
.
===============================================================================
.
16:02:38,163 INFO  [Server] Starting JBoss (MX MicroKernel)...
16:02:38,173 INFO  [Server] Release ID: JBoss [Zion] 4.0.1RC1 (build: CVSTag=JBoss_4_0_1_RC1 date=200411041143)
16:02:38,183 INFO  [Server] Home Dir: C:\jboss-4.0.1RC1
16:02:38,183 INFO  [Server] Home URL: file:/C:/jboss-4.0.1RC1/
16:02:38,183 INFO  [Server] Library URL: file:/C:/jboss-4.0.1RC1/lib/
16:02:38,183 INFO  [Server] Patch URL: null
16:02:38,183 INFO  [Server] Server Name: minimal
16:02:38,183 INFO  [Server] Server Home Dir: C:\jboss-4.0.1RC1\server\minimal
16:02:38,193 INFO  [Server] Server Home URL: file:/C:/jboss-4.0.1RC1/server/minimal/
16:02:38,193 INFO  [Server] Server Data Dir: C:\jboss-4.0.1RC1\server\minimal\data
16:02:38,193 INFO  [Server] Server Temp Dir: C:\jboss-4.0.1RC1\server\minimal\tmp
16:02:38,193 INFO  [Server] Server Config URL: file:/C:/jboss-4.0.1RC1/server/minimal/conf/
16:02:38,193 INFO  [Server] Server Library URL: file:/C:/jboss-4.0.1RC1/server/minimal/lib/
16:02:38,193 INFO  [Server] Root Deployment Filename: jboss-service.xml
16:02:38,193 INFO  [Server] Starting General Purpose Architecture (GPA)...
16:02:38,704 INFO  [ServerInfo] Java version: 1.5.0,Sun Microsystems Inc.
16:02:38,704 INFO  [ServerInfo] Java VM: Java HotSpot(TM) Client VM 1.5.0-b64,Sun Microsystems Inc.
16:02:38,704 INFO  [ServerInfo] OS-System: Windows XP 5.1,x86
16:02:39,045 INFO  [Server] Core system initialized
16:02:39,555 INFO  [Log4jService$URLWatchTimerTask] Configuring from URL: resource:log4j.xml
16:02:39,876 INFO  [NamingService] Started jndi bootstrap jnpPort=1099, rmiPort=1098, backlog=50, bindAddress=/0.0.0.0, Clien
t SocketFactory=null, Server SocketFactory=org.jboss.net.sockets.DefaultSocketFactory@ad093076
16:02:39,916 INFO  [Server] JBoss (MX MicroKernel) [4.0.1RC1 (build: CVSTag=JBoss_4_0_1_RC1 date=200411041143)] Started in 1s
:723ms

JBoss 서버의 bootstrap 클래스에서 파생되는 커맨드 라인 옵션들을 보려면 run.bat -h 명령어를 실행시키시면 됩니다. 그러면 다음과 같은 결과가 나타나게 됩니다:

C:\jboss-4.0.1RC1\bin>run.bat -h
===============================================================================
.
  JBoss Bootstrap Environment
.
  JBOSS_HOME: C:\jboss-4.0.1RC1\bin\\..
.
  JAVA: C:\Java\jdk1.5.0\bin\java
.
  JAVA_OPTS:  -Dprogram.name=run.bat -Xms128m -Xmx512m
.
  CLASSPATH: C:\Java\jdk1.5.0\lib\tools.jar;C:\jboss-4.0.1RC1\bin\\run.jar
.
===============================================================================
.
usage: run.bat [options]

options:
    -h, --help                    Show this help message
    -V, --version                 Show version information
    --                            Stop processing options
    -D<name>[=<value>]            Set a system property
    -p, --patchdir=<dir>          Set the patch directory; Must be absolute
    -n, --netboot=<url>           Boot from net with the given url as base
    -c, --configuration=<name>    Set the server configuration name
    -j, --jaxp=<type>             Set the JAXP impl type (ie. crimson)
    -L, --library=<filename>      Add an extra library to the loaders classpath
    -C, --classpath=<url>         Add an extra url to the loaders classpath
    -P, --properties=<url>        Load system properties from the given url
    -b, --host=<host or ip>       Bind address for all JBoss services

1.3. 네트워크 서버에서 부팅시키기

명령어 라인 옵션중 --netboot=url는 매우 유용하게 사용될 수 있습니다. 이 명령을 통해 여러분은 주어진 URL로부터 모든 라이브러리들과 환경들을 로드시켜 JBoss를 구동시킬 수 있기 때문입니다. netboot 옵션은 ServerConfig.HOME_URL에 netboot 옵션에 사용하는 URL 인자값을 설정해줄 수 있습니다. 이 값을 새로 정의해주지 않으면, 표준 JBOSS_DIST 구조를 갖는 위치가 발견되는 모든 것들은 HOME_URL 값의 상대적인 값으로 해석하게 됩니다. 즉 웹 서버로부터 배포가 가능한 JBoss를 만들었다면 구동 스크립트와 run.jar파일만 있는 JBOSS_DIST/bin directory 디렉터리에서 JBoss를 시작시킬 수 있습니다. 이때 웹 서버는 WebDAV의 PROPFIND 명령어를 지원해야만 합니다. JBoss에는 PROPFIND 명령어를 지원하는데 필요한 최소한의 기능을 제공해주는 간단한 서블릿 필터가 포함되어 있어 JBoss 자체로 netboot 웹 서버로 사용할 수 있습니다.

기본 설정 파일 세트를 갖고 JBoss 서버를 구동시킬 수 있는 커스터마이징된 netboot 환경 파일세트를 만들어주는 Ant 빌드 스크립트 예제가 examples/src/main/org/jboss/chap1/build-netboot.xml 파일내에 들어있습니다. netboot 기능을 테스트하려면, 여기서 보여지는 것처럼 netboot 웹서버로 사용하려는 JBOSS_DIST의 위치를 지정해주는 build-netboot.xml 스크립트를 실행시켜 주십시오:

[nr@toki examples]$ ant -Djboss.dist=/tmp/jboss-3.2.6 -buildfile src/main/org/jboss/chap1/build-netboot.xml
Buildfile: src/main/org/jboss/chap1/build-netboot.xml

netboot:
    [mkdir] Created dir: /tmp/jboss-3.2.6/server/netboot
    [copy] Copying 44 files to /tmp/jboss-3.2.6/server/netboot
    [unzip] Expanding: /tmp/jboss-3.2.6/docs/examples/netboot/netboot.war into /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war
    [copy] Copying 14 files to /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war
    [copy] Copying 211 files to /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default
    [copy] Copied 1 empty directory to /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default
    [copy] Copying 1 file to /tmp/jboss-3.2.6/server/netboot/deploy/jbossweb-tomcat50.sar/META-INF

zipdir:
    [move] Moving 10 files to /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/http-invoker.sarx
    [zip] Building zip: /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/http-invoker.sar
    [delete] Deleting directory /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/http-invoker.sarx

zipdir:
    [move] Moving 6 files to /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/jms/jbossmq-httpil.sarx
    [zip] Building zip: /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/jms/jbossmq-httpil.sar
    [delete] Deleting directory /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/jms/jbossmq-httpil.sarx

zipdir:
    [move] Moving 35 files to /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/jbossweb-tomcat50.sarx
    [zip] Building zip: /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/jbossweb-tomcat50.sar
    [delete] Deleting directory /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/jbossweb-tomcat50.sarx

zipdir:
    [move] Moving 22 files to /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/jmx-console.warx
    [zip] Building zip: /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/jmx-console.war
    [delete] Deleting directory /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/jmx-console.warx

zipdir:
    [move] Moving 5 files to /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/management/console-mgr.sarx
    [zip] Building zip: /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/management/console-mgr.sar
    [delete] Deleting directory /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/management/console-mgr.sarx

zipdir:
    [move] Moving 53 files to /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/management/web-console.warx
    [zip] Building zip: /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/management/web-console.war
    [delete] Deleting directory /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/management/web-console.warx

zipdir:
    [move] Moving 2 files to /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/jmx-invoker-adaptor-server.sarx
    [zip] Building zip: /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/jmx-invoker-adaptor-server.sar
    [delete] Deleting directory /tmp/jboss-3.2.6/server/netboot/deploy/netboot.war/server/default/deploy/jmx-invoker-adaptor-server.sarx

BUILD SUCCESSFUL

그런 다음, 다음과 같이 netboot 환경을 지정하여 netboot 서버를 시작시키십시오:

[nr@toki bin]$ ./run.sh -c netboot
=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /tmp/jboss-3.2.6

  JAVA: /System/Library/Frameworks/JavaVM.framework/Home//bin/java

  JAVA_OPTS:  -Dprogram.name=run.sh

  CLASSPATH: /tmp/jboss-3.2.6/bin/run.jar:/System/Library/Frameworks/JavaVM.framework/Home
//lib/tools.jar

=========================================================================

13:53:38,479 INFO  [Server] Starting JBoss (MX MicroKernel)...
13:53:38,488 INFO  [Server] Release ID: JBoss [WonderLand] 3.2.6RC2 (build: CVSTag=Branch_
3_2 date=200409270100)
13:53:38,503 INFO  [Server] Home Dir: /private/tmp/jboss-3.2.6
13:53:38,552 INFO  [Server] Home URL: file:/private/tmp/jboss-3.2.6/
13:53:38,555 INFO  [Server] Library URL: file:/private/tmp/jboss-3.2.6/lib/
13:53:38,563 INFO  [Server] Patch URL: null
13:53:38,568 INFO  [Server] Server Name: netboot
13:53:38,598 INFO  [Server] Server Home Dir: /private/tmp/jboss-3.2.6/server/netboot
13:53:38,644 INFO  [Server] Server Home URL: file:/private/tmp/jboss-3.2.6/server/netboot/
13:53:38,648 INFO  [Server] Server Data Dir: /private/tmp/jboss-3.2.6/server/netboot/data
13:53:38,653 INFO  [Server] Server Temp Dir: /private/tmp/jboss-3.2.6/server/netboot/tmp
13:53:38,656 INFO  [Server] Server Config URL: file:/private/tmp/jboss-3.2.6/server/netboot/conf/
13:53:38,660 INFO  [Server] Server Library URL: file:/private/tmp/jboss-3.2.6/server/netboot/lib/
13:53:38,663 INFO  [Server] Root Deployment Filename: jboss-service.xml
13:53:38,679 INFO  [Server] Starting General Purpose Architecture (GPA)...
13:53:40,057 INFO  [ServerInfo] Java version: 1.4.2_05,Apple Computer, Inc.
13:53:40,060 INFO  [ServerInfo] Java VM: Java HotSpot(TM) Client VM 1.4.2-38,"Apple Computer, Inc."
13:53:40,131 INFO  [ServerInfo] OS-System: Mac OS X 10.3.5,ppc
13:53:41,883 INFO  [Server] Core system initialized
13:53:45,468 INFO  [Log4jService$URLWatchTimerTask] Configuring from URL: resource:log4j.xml
13:53:47,754 INFO  [NamingService] Started jnpPort=1099, rmiPort=1098, backlog=50, bindAdd
ress=/192.168.168.110, Client SocketFactory=null, Server SocketFactory=org.jboss.net.socke
ts.DefaultSocketFactory@ad093076
13:53:53,702 INFO  [Embedded] Catalina naming disabled
13:53:57,796 INFO  [Http11Protocol] Initializing Coyote HTTP/1.1 on http-192.168.168.110-8080
13:53:58,102 INFO  [Catalina] Initialization processed in 3578 ms
13:53:58,108 INFO  [StandardService] Starting service jboss.web
13:53:58,185 INFO  [StandardEngine] Starting Servlet Engine: Apache Tomcat/5.0.28
13:53:58,360 INFO  [StandardHost] XML validation disabled
13:53:58,575 INFO  [Catalina] Server startup in 469 ms
13:53:59,277 INFO  [TomcatDeployer] deploy, ctxPath=/, warUrl=file:/private/tmp/jboss-3.2.
6/server/netboot/deploy/jbossweb-tomcat50.sar/ROOT.war/
13:54:03,106 INFO  [TomcatDeployer] deploy, ctxPath=/netboot, warUrl=file:/private/tmp/jbo
ss-3.2.6/server/netboot/deploy/netboot.war/
13:54:04,111 INFO  [Http11Protocol] Starting Coyote HTTP/1.1 on http-192.168.168.110-8080
13:54:04,797 INFO  [ChannelSocket] JK2: ajp13 listening on /192.168.168.110:8009
13:54:04,883 INFO  [JkMain] Jk running ID=0 time=1/303  config=null
13:54:04,898 INFO  [Server] JBoss (MX MicroKernel) [3.2.6RC2 (build: CVSTag=Branch_3_2 dat
e=200409270100)] Started in 25s:64ms

이제 여러분은 JBOSS_DIST/bin 디렉터리에서 구동 스크립트와 run.jar를 사용하여 JBoss의 다른 종류의 인스턴스를 시작시킬 수 있습니다. 가령:

[orb@rubik bin]$ sh run.sh --netboot=http://192.168.168.110:8080/netboot/
=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /tmp/jboss-3.2.6

  JAVA: /System/Library/Frameworks/JavaVM.framework/Home//bin/java

  JAVA_OPTS:  -Dprogram.name=run.sh

  CLASSPATH: /tmp/jboss-3.2.6/bin/run.jar:/System/Library/Frameworks/JavaVM.framework/Home
//lib/tools.jar

=========================================================================

13:55:40,847 INFO  [Server] Starting JBoss (MX MicroKernel)...
13:55:40,867 INFO  [Server] Release ID: JBoss [WonderLand] 3.2.6RC2 (build: CVSTag=Branch_
3_2 date=200409270100)
13:55:40,874 INFO  [Server] Home Dir: /private/tmp/jboss-3.2.6
13:55:40,877 INFO  [Server] Home URL: http://192.168.168.110:8080/netboot/
13:55:40,880 INFO  [Server] Library URL: http://192.168.168.110:8080/netboot/lib/
13:55:40,928 INFO  [Server] Patch URL: null
13:55:40,931 INFO  [Server] Server Name: default
13:55:40,934 INFO  [Server] Server Home Dir: /private/tmp/jboss-3.2.6/server/default
13:55:40,940 INFO  [Server] Server Home URL: http://192.168.168.110:8080/netboot/server/de
fault/
13:55:40,943 INFO  [Server] Server Data Dir: /private/tmp/jboss-3.2.6/server/default/data
13:55:40,946 INFO  [Server] Server Temp Dir: /private/tmp/jboss-3.2.6/server/default/tmp
13:55:40,950 INFO  [Server] Server Config URL: http://192.168.168.110:8080/netboot/server/
default/conf/
13:55:40,954 INFO  [Server] Server Library URL: http://192.168.168.110:8080/netboot/server
/default/lib/
13:55:40,957 INFO  [Server] Root Deployment Filename: jboss-service.xml
13:55:41,014 INFO  [Server] Starting General Purpose Architecture (GPA)...
...

커스터마이징된 netboot 환경 파일세트는 bossweb-tomcat50.sar 웹서버, 그리고 JBOSS_DIST/libJBOSS_DIST/server/default 파일을 컨텐츠로 갖는 netboot.war 를 시작시키는데 필요한 간단한 파일들로 구성됩니다.

1.4. 소스코드로부터 서버 빌드시키기

JBoss의 모든 모듈은 소스코드를 얻을 수 있으며, 이를 SourceForge에서 다운로드받아 소스로 부터 JBoss를 직접 빌드할 수 있습니다.

1.4.1. SourceForge에서 JBoss CVS 레포지터리 액세스하기

JBoss 소스는 VA 리눅스 시스템에서 제공하고 있는 오픈 소스 커뮤니티 서비스중 가장 널리 알려진 SourceForge에 있습니다. SourceForge.net은 현재 약 88,000개의 오픈 소스 프로젝트와 95만명이 넘는 사용자를 갖는 세계에서 가장 큰 오픈 소스 호스팅 서비스 사이트입니다. 오픈 소스 프로젝트중 선도적인 많은 프로젝트들이 sourcesorge.net 사이트로 옮겨졌습니다. SourceForge에서는 프로젝트 CVS 레포지터리와 버그추적, 릴리즈 관리, 메일링 리스트등과 같은 다양한 프로젝트 관리를 위한 웹 인터페이스가 제공되고 있습니다. 물론 가장 큰 매력은 모든 오픈 소스 개발자들에게 이러한 서비스가 무료라는 것입니다! 보다 자세한 사항과 함께 다양한 프로젝트의 검색 방법은 SourceForge 홈페이지를 참조하십시오(http://sourceforge.net/).

1.4.2. CVS란?

CVS(Concurrent Versions System)란 오픈 소스 커뮤니티를 통해 오픈 소스 버전을 제어하는 첨단 시스템입니다. CVS는 동일한 파일에 대해 같은 그룹내의 여러 개발자들에 의해 소스 수정과 관련된 추적이 가능하도록 고안된 소스 제어 혹은 수정 제어 도구입니다. CVS를 사용하여 개발자는 서로 개별적으로 작업하고 있는 것들을 동기화시킬 수 있습니다.

1.4.3. Anonymous CVS 액세스

JBoss 프로젝트의 SourceForge CVS 레포지터리는 anonymous(pserver) CVS를 다음의 명령을 통해 액세스할 수 있습니다. 여러분이 점검하기 원하는 모듈은 modulename로 지정해야만 합니다. anonymous의 암호를 묻는 단계에서 그냥 엔터키를 입력하면 됩니다. JBoss 레포지터리로 anonymous 액세스를 할 수 있는 CVS 커맨드 라인 명령어의 사용법은 다음과 같습니다:

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/jboss login
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/jboss co modulename

첫 번째 명령어는 anonymouse 사용자로 JBoss CVS 레포지터리에 로그인하라는 것입니다. 이 명령은 CVS를 사용하는 컴퓨터에서 한번만 해주기만 하면 여러분의 HOME/.cvspass 파일 또는 이에 상응되는 저장장소에 저장됩니다. 따라서 두번째 접속부터는 사용하지 않으셔도 됩니다. 두번째 명령은 여러분이 cvs 명령어를 실행시킨 디렉터리에서 지정한 modulename에 대한 소스 코드의 사본에 대한 점검을 하게 됩니다. 매번 커맨드 라인에 긴 cvs 명령어를 타이핑하는 것을 피할 수 있기 위해서, 여러분은 환경변수 CVSROOT:pserver:anonymous@cvs.jboss.sourceforge.net:/cvsroot/jboss 값을 설정해준 후, 다음과 같은 축약된 명령을 통해 앞에서 보여졌던 긴 커맨드 명령을 대체시킬 수 있습니다:

cvs login
cvs -z3 co modulename

여러분이 사용하는 JBoss 모듈의 별칭 이름은 어떤 버전의 JBoss를 사용하느냐에 따라 달라집니다. 3.2에서 파생된 모듈의 이름은 jboss-3.2이되며, 4.0에서 파생된 모듈은 jboss-4.0이 되는 것과 같이 일반적으로 x.y의 파생 모듈들은 jboss-x.y라는 모듈 이름을 갖게 됩니다. 메인 버전으로부터 가장 최신의 코드를 얻기위해 JBoss의 수정된 HEAD를 점검하기 위해서는 모듈의 이름으로 jboss-head를 사용하면 됩니다. JBoss의 릴리즈들은 JBoss_X_Y_Z 와 같은 패턴을 갖는데, 여기서 X는 메이저 버전이며, Y는 마이너 버전 그리고 Z는 패치 버전을 의미합니다. JBoss의 릴리즈에서 파생된 것들은 Branch_X_Y와 같은 패턴을 갖습니다. 아래에 점검을 위한 몇가지 예를 제시하였습니다:

cvs co -r Branch_4_0 jboss-4.0 # Checkout the current 4.0 branch code
cvs co -r JBoss_4_0_0 jboss-4.0 # Checkout the 4.0.0 release version code
cvs co -r Branch_4_0 jboss-4.0 # Checkout the current 4.0 branch code
cvs co -r JBoss_4_0_0 jboss-4.0 # Checkout the 4.0.0 release version code
cvs co jboss-head # Checkout the curent HEAD branch code

1.4.4. CVS 클라이언트를 얻는 방법

CVS의 커맨드 라인 버전 프로그램은 거의 모든 플랫폼에서 무료로 얻을 수 있으며, 대부분의 리눅스와 유닉스 배포판에는 기본적으로 설치되어 있습니다. 다른 많은 유닉스 프로그램의 Win32 플랫폼의로의 포팅처럼 CVS 또한 Cygwin(http://sources.redhat.com/cygwin/)에서 얻을 수 있습니다. CVS의 커맨드 라인 버전의 사용법은 모든 플랫폼에서 동일합니다.

CVS의 완전한 문서는 CVS 홈페이지(http://www.cvshome.org/)에서 얻을 수 있습니다.

1.4.5. 소스코드를 사용하여 JBoss 4.0.0 배포판 빌드시키기

빌드시키는데 필요한 모든 것을 포함한 소스 아카이브를 포함하는 모든 JBoss 릴리즈는 SourceForge의 JBoss 프로젝트 사이트(http://sourceforge.net/projects/jboss/)에서 얻을 수 있습니다. 아래에 설명된 CVS 소스 트리와 일치하는 jboss-4.0소스 디렉터리 구조를 여러분이 다운로드받은 다음에는 다음 절차에 따라 빌드시킬 수 있습니다.

1.4.6. CVS 소스 코드를 사용하여 JBoss 4.0.0 배포판 빌드시키기

이번 섹션에서는 여러분이 얻은 CVS 소스 코드를 이용하여 JBosss 배포판을 빌드시키는 과정을 보여주게 됩니다. 시작하기 위해서는 먼저 CVS 소스 트리를 다운받고자 하는 디렉터리를 만들고 이 디렉터리로 이동합니다. 이 디렉터리는 CVS 작업 디렉터리라는 의미로 CVS_WD 라는 이름을 사용하겠습니다. 이 문서를 위해 테스트된 환경은 WindowXP 플랫폼이고, CVS 작업 디렉터리는 C:\myCVS\JBoss 입니다. 이제 다음과 같이 JBoss 4.0 버전의 소스 코드를 가져오도록 합니다.[1]:

cvs co -r Branch_4_0 jboss-4.0

cvs checkout: cwd=C:\myCVS\JBoss ,current=C:\myCVS\JBoss
cvs checkout: Updating aop
U aop/.classpath
U aop/.cvsignore
U aop/.project
U aop/RELEASE_NOTES.txt
U aop/build.bat
U aop/build.sh
U aop/build.xml
cvs checkout: Updating aop/docs
U aop/docs/index.html
U aop/docs/index.wiki
U aop/docs/jboss-aop_1_0.dtd
cvs checkout: Updating aop/docs/benchmark
cvs checkout: Updating aop/docs/benchmark/META-INF
cvs checkout: Updating aop/docs/examples
U aop/docs/examples/examples.html
U aop/docs/examples/examples.wiki
cvs checkout: Updating aop/docs/examples/all
...            
다운로드받은 JBoss4.0의 CVS 모듈 디렉터리 구조

그림 1.3. 다운로드받은 JBoss4.0의 CVS 모듈 디렉터리 구조

서버를 빌드시키는데 필요한 모든 CVS 모듈을 포함한 jboss-4.0 디렉터리 구조를 이제 다운로드받게 됩니다. 빌드 작업을 하기위해서는 jboss-4.0/build 디렉터리로 이동한 후, OS에 따라 build.bat 또는 build.sh를 실행시킵니다. 빌드 작업에 사용될 JDK의 위치를 알려주는 JAVA_HOME 환경변수의 설정은 먼저 되어있어야 합니다.

만일 "Failed to launch JJTree" 오류가 나타난다면, JavaCC JJTree Ant 작업에 필요한 PATH 환경변수에 JAVA_HOME/bin 디렉터리가 없도록 하십시오.

빌드 과정은 Ant에 기반을 둔 환경설정에 의해 이루어집니다. 메인 Ant 빌드 스크립트는 jboss-4.0/build 디렉터리의 build.xml 파일입니다. 이 스크립트는 buildmagic 컨스트럭츠로 매스크되어진 커스터마이징된 Ant 작업들을로 구성되어 있습니다. jboss-4.0 CVS 모듈에는 Ant가 내장되어 있습니다(jboss-4.0\tools). build.xml 파일의 가장 주된 목적은 jboss-4.0 디렉터리밑에 존재하고 있는 다양한 모듈 디렉터리들을 컴파일하면서 그 결과를 통합해서 보여주고 최종적으로 바이너리 릴리즈를 생성시키는 것입니다. 이 문서에서 빌드시킨 과정을 다시한번 정리해보도록 하겠습니다:

(WindowXP 에서)
1. cgwin을 다운로드 받는다.
2. cgwin을 설치한다.(c:\cygwin)
3. jdk1.4.2를 다운로드 받는다.
4. jdk1.4.2를 설치한다.(c:\cygwin\jdk1.4.2)
5. wincvs를 다운로드 받는다.
6. wincvs를 설치한다.
7. Python을 다운로드 받는다.
8. Python을 설치한다.
9. cvs의 작업디렉터리를 만든다.(C:\myCVS\JBoss\)
10. cvs로 sourceforge.net의 jboss cvs에 접속한다.
	cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/jboss login
11. JBoss4.0 CVS 모듈을 다운로드받는다.
	cvs co -r Branch_4_0 jboss-4.0
	cvs co jboss-head
12. CVS 다운로드가 모두 완료되면, C:\myCVS\JBoss 디렉터리밑의 jboss-4.0 디렉터리를
     C:\cygwin 디렉터리밑으로 복사한다.
13. cgwin의 사용자 환경 변수를 설정한다(C:\cygwin\home\Administrator\.bashrc 편집).
	export JAVA_HOME=/jdk1.4.2
	export PATH=/jdk1.4.2/bin:${PATH}
14. cgwin으로 로그인 한다.
15. cvs 작업디렉터리의 jboss-4.0/build 디렉터리로 이동한다.
16. ./build.sh 파일을 실행시켜, JBoss4.0 릴리즈 버전을 CVS로부터 빌드시킨다.
cgwin환경에서 build.sh 실행

그림 1.4. cgwin환경에서 build.sh 실행

cgwin환경에서 build.sh 실행 성공

그림 1.5. cgwin환경에서 build.sh 실행 성공

1.4.7. JBoss CVS 소스 트리 살펴보기

jboss-4.0 소스 트리밑에 들어가는 하부 디렉터리 구조를 그림 1.6, “테스트세트 CVS 모듈 디렉터리 구조”에 보여주고 있습니다. 표 1.2, “JBoss CVS 소스 트리에서의 탑-레벨 디렉터리 설명.”에서는 각 탑-레벨 디렉터리의 주 목적을 설명하고 있습니다.

표 1.2. JBoss CVS 소스 트리에서의 탑-레벨 디렉터리 설명.

디렉터리설명
aopJBoss AOP 1.0 Final
aspectsJBoss AOP를 위한 aspect 라이브러리
build릴리즈 빌드를 시작하는 메인 빌드 디렉터리
cacheJBoss TreeCache 모듈
cluster클러스터링 지원 서비스 소스 모듈
common다른 소스 모듈들에서 사용되는 common 유틸리티 타입 코드의 소스 모듈
connectorJCA 지원 및 어플리케이션 서버 통합 소스 모듈
consoleJMX MBeans를 볼 수 있는 관리 어플리케이션
deploymentcommon Buildmagic 요소를 포함한 소스 모듈
hibernatehibernate deployer 서비스
iiopRMI/IIOP transport 서비스 소스 모듈
j2ee중요 J2EE 인터페이스들과 클래스들
jaxrpcJ2EE 웹 서비스 모듈
jboss.netEJB와 MBeans상에서 SOAP 프로토콜을 사용하여 호출하도록 지원되는 웹 서비스 지원 소스 모듈
jms자바 메시지 서비스 모듈
jmxJBoss JMX 수행 소소 모듈
jmx-remotingJMX 리모팅 서비스 모듈, JBoss 네트워크 환경내에서 MBeans로의 액세스 및 전송이 가능하게 하는 모듈
managementJBoss JSR-77 소스 모듈
mediaJBoss Media (EMB) Enterprise Media Beans JSR-86 소스 모듈
messagingJBoss JMS 수행 소스 모듈
namingJBoss JNDI 수행 소스 모듈
remotingJBoss Remoting framework(JBR) 소스 모듈
securityJAAS에 기반을 둔 JBoss의 표준 J2EE 선언적 보안 수행 소스 모듈
serverEJB 2.0 컨테이너 수행과 관련된 소스
systembootstrap 서비스에 기반을 둔 JMX microkernel과 표준 배치 서비스 소스 모듈
testsuiteJUnit 유닛 테스트 소스 모듈
thirdpartyJBoss 모듈에서 사용되는 제3자 바이너리 jars를 포함하는 모듈
tomcat내장된 Tomcat-5.0.x 서비스 소스 모듈
toolsJBoss 빌드 과정에서 사용되어지는 jars 파일들(ant 포함)
transactionJTA 트랜잭션 관리자
varia고수준의 모듈중에 없거나 또는 통합될 수 없는 다양한 유틸리티 서비스들
webserviceJBossWS/JBoss.NET 소스 모듈
xdoclet이클립스에서 xdoclet을 위한 모듈

1.4.8. JBossTest 유닛 테스트세트 사용하기

JBoss 설치와 빌드에 대한 보다 전문적인 테스팅은 JBoss 테스트세트를 사용하여 가능합니다. JBossTest 세트는 JBoss 서버 어플리케이션중에 클라이언트용 유닛 테스트의 컬렉션입니다. 유닛 테스트 프레임워크인 JUnit (http://www.junit.org)을 사용한 Ant 기반의 패키지입니다. JBossTest 세트는 개발팀에서 새로운 기능의 테스트와 이에 따른 버그 수정의 용이성을 위해 AQ 벤치마크로 활용되고 있습니다. 매일 저녁 수행되는 이 테스트를 통해 얻어진 결과들은 개발자 메일링을 통해 제공되어 집니다.

유닛의 테스트는 Ant를 사용하여 실행되고 이때 사용된 소스는 CVS 소스 트리의 jboss-4.0/testsuite디렉터리내에 포함되어 있습니다. 테스트세트 CVS 모듈의 구조는 그림 1.6, “테스트세트 CVS 모듈 디렉터리 구조”를 참고하십시오.

테스트세트 CVS 모듈 디렉터리 구조

그림 1.6. 테스트세트 CVS 모듈 디렉터리 구조

테스트 세트의 소스는 크게 src/mainsrc/resources로 구성되어 있습니다. src/main 트리에는 유닛 테스트를 위한 자바 소스 코드들이 포함되어 있습니다. src/resources 트리에는 배치 서술자, JAR 선언(manifest), 웹 컨텐츠등과 같은 리소스들이 포함되어 있습니다. 각각의 유닛 테스트에 대한 루트 패키지는 org.jboss.test입니다. 일반적인 구조는 개별 유닛 테스트 서브패키지(예를 들면, security) 하위에 포함되는 유닛 테스트 클래스들로 구성됩니다. test 서브패키지는 Ant 빌드 스크립트로 유닛 테스트될 수 있도록 디렉터리만을 검색하기 때문에 네이밍 약속이 필요합니다. 테스트에 EJBs가 포함되어 있는 경우, 네이밍 약속에는 인터페이스들과 이에 대한 콤포넌트를 위한 ejb 서브패키지가 포함됩니다. 유닛 테스트 자체에서는 클래스 파일을 위한 네이밍 약속을 따를 필요가 있습니다. 유닛 테스트 클래스는 반드시 XXXUnitTest.java와 같은 형태로 이름이 규정되어야 하며, 여기서 XXX는 테스트되어진 클래스 혹은 테스트되어진 기능의 이름중 하나가 될 수 있습니다.

testsuite 디렉터리에 있는 빌드 스크립트(build.xml)를 사용하여 유닛 테스트를 실행시키기 위한 타겟 키는 다음과 같습니다:

  • tests: 이 타겟은 모든 유닛 테스트들을 빌드시키고 실행시키고, 이에 대한 결과를 HTML과 텍스트 형태로 각각 testsuite/output/reports/htmltestsuite/output/reports/text 디렉터리에 만들어줍니다.
  • tests-standard-unit: 모든 유닛 테스트들을 빌드시키고 키 유닛 테스트의 서브세트를 실행시킵니다. 이 타겟은 총체적인 문제점을 테스트하기 위해 서버를 빠르게 점검할때 유용합니다.
  • test: 이 타겟은 특정 패키지내에서 모든 테스트들을 실행시킬 수 있도록 합니다. 이 타겟을 실행하기위해서는 먼저 명령어 라인에 -Dtest=package를 사용하여 패키지의 이름을 지정하는 테스트 속성의 설정이 필요합니다. 테스트 하고자 하는 패키지의 이름은 org.jboss.test 밑에 있습니다. 즉, org.jboss.test.naming패키지내의 모든 유닛 테스트를 실행하고자 할 경우, 다음과 같이 명령문을 사용하면 됩니다: build.sh -Dtest=naming test
  • one-test: 이 타겟은 단일 유닛 테스트 실행을 가능하게 합니다. 이 타겟을 실행시키기 위해서는 -Dtest=classname 옵션으로 유닛 테스트를 위한 클래스이름을 지정해주어야 합니다. 즉, org.jboss.test.naming.test.ENCUnitTestCase를 실행시켜보고자 할 때는 다음과 같은 명령문을 사용하면 됩니다: build.sh -Dtest=org.jboss.test.naming.test.ENCUnitTestCase one-test
  • tests-report: 이 타겟은 testsuite/output/reports 디렉터리에 현재 JUnix XML 결과를 사용하여 html과 텍스트 보고서를 각각 testsuite/output/reports/htmltestsuite/output/reports/text 디렉터리에 생성시킵니다. 수동으로 테스트의 서브세트를 실행시켜 그 결과에 대한 요약 보고서를 html 보고서로 보고자할 때 유용합니다.

테스트가 끝나면 testsuite/output/reports 디렉터리에는 각각의 JUnit 테스트 실행에 따른 하나 이상의 XML 파일이 만들어지게 됩니다. tests-report 타겟은 이러한 결과를 HTML 보고서는 html 디렉터리에, 텍스트 보고서는 text 디렉터리에 위치시켜 줍니다. 그림 1.7, “테스트세트에 의해 생성된 동작 보고서 상태에 대한 HTML 뷰의 예”에 JBoss 4.0.0 릴리즈에서 테스트 세트를 실행한 결과화면을 보여주고 있습니다.

JBoss 배포판의 경우 테스트세트의 실행 결과를 JBOSS_DIST/docs/tests 디렉터리에서 찾을 수 있습니다.

테스트세트에 의해 생성된 동작 보고서 상태에 대한 HTML 뷰의 예

그림 1.7. 테스트세트에 의해 생성된 동작 보고서 상태에 대한 HTML 뷰의 예

실제 JBoss 인스턴스의 적용을 위해서는 매우 많은 테스트가 필요합니다. 빌드 스크립트는 JBoss 인스턴스를 시작시키지 않습니다. 테스트를 시작하기전에 all 환경으로 JBoss 서버를 직접 시작시켜주셔야 합니다.



[1] 원래의 문서는 리눅스상에서 jboss-3.2를 대상으로 씌여졌지만, 번역하면서 가능한 최신 버전의 JBoss 릴리즈를 WindowXP에서 구현할 수 있도록 내용이 수정되면서 원문과는 많은 다른 사항들이 추가되거나 수정되어졌습니다.