메뉴 건너뛰기

tnt_os

jboss JBoss Hot Deploy , 핫 디플로이 설정

구퍼 2009.10.19 17:47 조회 수 : 7357

JBoss는 최초 설치 시 기본적으로 Hot Deploy를 지원하도록 설정이 되어 있다.

그래서, 아래 디렉토리에 war 파일을 넣고 빼는 것 만으로도 웹 애플리케이션이 Deploy 되고 Undeploy 된다.

 

- $JBOSS_HOME/server/default(실제 구동 컨테이너)/deploy/

 

Hot Deploy에 대한 설정은 아래 파일에서 변경할 수 있다.

 

- $JBOSS_HOME/server/default(실제 구동 컨테이너)/conf/jboss-service.xml

 

<server>
   ......
   <mbean code="org.jboss.deployment.scanner.URLDeploymentScanner"
      name="jboss.deployment:type=DeploymentScanner,flavor=URL">
      ......
      <attribute name="ScanEnabled">true</attribute>
      ......
   </mbean>
</server>

 

ScanEnabled를 true로 설정하면 스캐너가 /deploy 디렉토리를 스캔하여 Hot Deploy 를 하게 되고,

이 값을 false로 설정하면 스캔을 하지 않으며 당연히 Hot Deploy도 되지 않는다.

 

여기서, 한 가지 중요한 점이 있다.

위의 Hot Deploy는 /WEB-INF/classes와 /WEB-INF/lib/*.jar의 변화를 무시한다는 점이다.

즉, 웹애플리케이션과 JSP의 변화에 대해서는 Hot Deploy가 되지만,

Class와 JAR 파일은 Hot Deploy가 되지 않는다.

 

Class와 JAR 파일을 Hot Deploy 하기 위해서는 아래 파일에 설정을 추가하여야 한다.

 

- $JBOSS_HOME/server/default(실제 구동 컨테이너)/deploy/jbossweb-tomcat55.sar/context.xml (JBoss 4.0.x 이하)

  $JBOSS_HOME/server/default(실제 구동 컨테이너)/deploy/jboss-web.deployer/context.xml (JBoss 4.2.x 이상)

 

<Context cookies="true" reloadable="true" crossContext="true">
      ......
</Context>


기본 설정은 attribute 자체가 없으므로 추가를 하면 된다.

reloadable을 true로 설정하면 Class나 JAR 변경 시 Hot Deploy가 된다.

 

여기에 하나의 문제가 더 있다.

현재 업무에서 사용하는 환경이 JBoss 4.0.3이고, war 파일은 Symbolic Link를 사용하고 있다.

그런데 위와 같이 reloadable을 true로 설정하고 클래스를 변경하면,

Exception이 발생하면서 Hot Deploy가 실패를 한다.

 

여기 저기 인터넷을 뒤져보니 대략 원인이 두 가지로 압축된다.

첫째는 Symbolic Link의 사용이다.

Symbolic Link를 사용하지 않고 등록한 war는 Class에 대해 Hot Deploy가 된다.

또, 다른 원인은 4.0.3에 있는 RunAsListener의 버그때문일 수도 있을 것 같다.

 

[JBAS-2387] - RunAsListener should fail gracefully when it has no associated metadata

(https://jira.jboss.org/jira/browse/JBAS-2387)

 

Servlet의 init/destory event에 대한 핸들러인데

로컬에서 동일한 버전으로 Hot Deploy 테스트 시에는 문제가 없었으나,

Symbolic Link를 사용하는 서버에서는 문제가 발생한다.

 

테스트 여건이 안되서 더 확인은 못했지만,

war 파일을 Symbolic Link를 사용하지 않고 /deploy 디렉토리 하위에 직접 넣거나,

아님 RunAsListener 버그가 Fix된 4.0.3SP1 이상의 JBoss를 사용하면 해결이 될 것 같다.

번호 제목 글쓴이 날짜 조회 수
31 ubuntu에서 cron process 현황조회 총관리자 2014.06.16 316
30 linux에 jboss설치하기 구퍼 2011.01.06 4077
29 jboss4.03에서 기본포트 80을 다른 포트로 변경하기 구퍼 2010.12.30 3497
28 USB 메모리나 하드에 WIndows XP 설치하기 (USB에 XP설치) 구퍼 2010.09.14 9258
27 회사에서 원격 데스크탑 포트가 막혀있을때 구퍼 2010.09.13 6814
26 JBoss Application Server Port 일괄 변경 방법 총관리자 2010.06.16 8138
25 ipmate 2.1.1이 window7에서 레지스트리 읽기 오류발생시 해결 총관리자 2010.05.17 7575
24 콘솔 없는 유닉스서버 IP 변경하는 방법 구퍼 2009.11.02 3713
» JBoss Hot Deploy , 핫 디플로이 설정 구퍼 2009.10.19 7357
22 jboss와 호환 jdk버젼 매트릭스 구퍼 2009.10.19 3285
21 JBOSS IP접근문제 하늘과컴 2007.12.04 4694
20 다른 데이터베이스를 이용하기 하늘과컴 2007.11.27 2331
19 connection 반납하지 않는 프로그램 확인방법 하늘과컴 2007.10.30 5641
18 servlet사용시 web.xml설정 내용 박상현 2007.03.08 4765
17 이클립스 웹로직 8.0 연동시 핫디플로이 박상현 2006.09.05 4984
16 라이브러리 링크정보를 보는 ldd 명령 원우석 2004.07.31 4812
15 ksh에서 리스트데이터를 차례대로 처리할때 원우석 2004.07.31 2967
14 Weblogic 8.1 에서 jsp 사용하기 박상현 2004.07.27 3477
13 내부 네트웍에서 특정 ip에 대한 정보 보기 박상현 2004.07.14 2570
12 문자열 조작명령어 원우석 2004.04.24 4083
위로