728x90
반응형

저번 Tips #1에서 어플리케이션 디플로이 경로 설정에 대해 말씀드리면서 운영환경에서는 Hot Deploy를 사용하지 말라고 했는데요.

이는 Hot Deploy가 활성화 되어 있을 경우, 운영자 또는 누군가가 디플로이 경로에서 실수로 파일을 건드리거나 할 경우 바로 서비스에 반영되는 과정에서 세션이 끊어지거나 진행중인 트랜잭션에 문제가 생기는 등 장애를 발생시킬 수 있기 때문입니다.

 

JBoss에서 권장하는 바와 같이 Hot Deploy 기능을 비활성화하려면 conf/jboss-service.xml에서 DeploymentScanner 서비스의 ScanEnabled 속성을 false로 설정하면 됩니다.

<mbean code="org.jboss.deployment.scanner.URLDeploymentScanner"

      name="jboss.deployment:type=DeploymentScanner,flavor=URL">

<!-- A flag to disable the scans -->

      <attribute name="ScanEnabled">false</attribute>

</mbean>

 

그런데 Hot Deploy를 꺼둔 상태에서 피치못할 사정으로 운영중에 어플리케이션을 추가로 디플로이해야 하거나, 변경사항을 반영하기 위해 리디플로이해야 한다면 어떻게 해야할까요?

이에 대한 일반적인 대답은 서버를 내렸다 올리십시오입니다.

하지만 고객은 단순히 어플리케이션을 추가로 디플로이하는데 기존 서비스를 일시적으로라도 중지해야 한다는 문제로 부정적일 수 있습니다.

이 경우에는 jmx-console 또는 twiddle을 사용해 수동으로 디플로이하는 방법을 알려주시면 됩니다.

 

JBoss Tech Tips #2 어플리케이션 수동 디플로이 / 언디플로이 / 리디플로이

 

1. jmx-console을 사용한 어플리케이션 수동 디플로이

1) 웹브라우저로 jmx-console에 들어간다.

2) jboss.system 하위의 MainDeployer 서비스를 찾아 링크를 클릭해 JMX MBean View 화면으로 들어간다.

   (*) ObjectName Filterservice=MainDeployer를 입력하고 ApplyFilter 버튼을 누르면 바로 찾을 수 있다.

 

 

3) void deploy() 오퍼레이션을 찾습니다. 실제 화면에서 보면 deploy() 오퍼레이션이 ParamType에 따라 3가지가 있습니다. 이 중 사용할 것은 ParamTypejava.lang.String인 것입니다.

 

4) ParamValue에 어플리케이션의 경로를 입력하고 Invoke 버튼을 누릅니다.

   Ex) /app/web/webapp1.war

       file:/C:/web/app/webapp1.war

 

5) 성공적으로 디플로이 되었다면 Console 로그상에 아래 메시지가 나타날 것입니다.

10:27:30,551 INFO  [TomcatDeployer] deploy, ctxPath=/clusterTest2, warUrl=file:/C:/Temp/tmp/clusterTest2.war

 

 

MainDeployer의 오퍼레이션을 살펴보면 deploy()외에 undeploy(), redeploy()가 있는 것을 볼 수 있습니다.

undeploy(), redeploy()도 마찬가지로 ParamTypejava.lang.String인 것을 찾아 ParamValue에 어플리케이션의 경로명을 입력하면 됩니다.

성공적으로 리디플로이, 언디플로이 되면 Console 로그상에 아래 메시지가 나타날 것입니다.

-         리디플로이시 메시지

10:32:03,383 INFO  [TomcatDeployer] undeploy, ctxPath=/clusterTest, warUrl=file:/C:/Temp/tmp/clusterTest.war

10:32:03,433 INFO  [TomcatDeployer] deploy, ctxPath=/clusterTest, warUrl=file:/C:/Temp/tmp/clusterTest.war

-         언디플로이시 메시지

10:32:10,623 INFO  [TomcatDeployer] undeploy, ctxPath=/clusterTest, warUrl=file:/C:/Temp/tmp/clusterTest.war

 

2. twiddle을 사용한 디플로이 / 리디플로이 / 언디플로이

1) deploy

>twiddle.bat -u admin -p admin invoke "jboss.system:service=MainDeployer" deploy "file:/C:/Temp/tmp/clusterTest.war"

'null'

 

2) redeploy

>twiddle.bat -u admin -p admin invoke "jboss.system:service=MainDeployer" redeploy "file:/C:/Temp/tmp/clusterTest.war"

'null'

 

3) undeploy

>twiddle.bat -u admin -p admin invoke "jboss.system:service=MainDeployer" undeploy "file:/C:/Temp/tmp/clusterTest.war"

'null'

 

실제 사용하기에는 twiddle이 편합니다.

 

주의사항

deploy/ 하위의 어플리케이션을 디플로이했다면 다음 서버 재시작시 자동으로 디플로이 되지만, 다른 경로의 어플리케이션이라면 반드시 conf/jboss-service.xml DeploymentScanner 설정에 해당 어플리케이션 경로를 추가해줘야 서버 재기동시에 다시 디플로이됩니다.

      <attribute name="URLs">

         deploy/,file:/C:/Temp/tmp/clusterTest.war

      </attribute>

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,