WAS를 start/stop/restart하거나 웹어플리케이션을 deploy/undeploy/redeploy하는 작업을 자동으로 처리하기 위해 쓸 수 있는 방법은 어떤게 있을까?

1. 스크립트 실행
작업을 정의한 스크립트를 실행한다. 아마 이게 제일 속편한 방법일지도 모른다.
Ant에서는 telnet, exec, sshexec 등의 타스크를 이용하여 실행하면 된다.

Ant sshexec 타스크를 통해서 원격지의 Tomcat을 start하는 예제

<target name="remote-tomcat-start">
  <sshexec host="${ssh.hostname}"
  port="${ssh.port}"
  username="${ssh.username}"
  passphrase=""
  trust="true"
  keyfile="${ssh.key.file}"
  command="${tomcat.home}/bin/startup" />
  <sleep seconds="${sleep.time}" />
</target>


2. WAS에서 제공하는 Ant 타스크 또는 Maven 플러그인 이용
대부분의 WAS가 어드민화면을 통하지 않고 여러가지 작업을 수행할 수 있는 수단을 제공한다.

Tomcat에서 제공하는 deploy 타스크를 이용하여 war를 deploy하는 Ant 예제

    <target name="install" description="Install application in Tomcat"
        depends="package-web">
        <deploy url="${tomcat.manager.url}"
            username="${tomcat.username}"
            password="${tomcat.password}"
            path="/${webapp.name}"
            war="file:${webapp.dist}/${webapp.war}"/>
    </target>


3. Cargo 이용
Cargo는 WAS 마다 다른 형태의 API를 래핑하여 표준적인 방법으로 WAS를 핸들링할 수 있게 해준다. 그러나 아직 지원하는 WAS가 많지 않다.

Ant에서 cargo 타스트를 이용하여 Tomcat을 start하는 예제

  <cargo containerId="tomcat5x" home="${tomcat.home}" output="${tomcatlog.dir}/output.log"
      log="${tomcatlog.dir}/cargo.log" action="start">
    <configuration home="${tomcatconfig.dir}">
      <property name="cargo.servlet.port" value="8080"/>
      <property name="cargo.logging" value="high"/>
      <deployable type="war" file="${mywarfile}"/>
    </configuration>
  </cargo>
Posted by 에코지오
,

weblogic 10 환경에서 ant를 통해 웹어플리케이션을 redeploy하기 위해 삽질을 했으나 결국 실패했다.

1. 먼저 cargo를 써보려했으나 cargo는 아직 weblogic10을 지원하지 않는다.

2.ant 에서 아래처럼 작성하고 실행하니 아무런 일도 일어나지 않는다.
(클래스패스에 weblogic/server/lib/*.jar는 걸린상태)

 <taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy"/>
 <target name="redeploy">
  <wldeploy action="redeploy" verbose="true" name="MyWebApp"
                   user="weblogic" password="weblogic"
                   adminurl="t3://127.0.0.1:7001" targets="AdminServer" />
 </target>

3. 커맨드 창에서 직접 명령을 실행하니 weblogic.utils.Debug 클래스가 없다는 에러가 난다.

java -cp weblogic.jar weblogic.Deployer -adminurl http://127.0.0.1:7001 -username weblogic -password weblogic redeploy -name MyWebApp

wls-api.jar를 클래스패스에 추가하고 실행하니 이번엔 weblogic/rmi/extensions/RemoteRuntimeException 클래스가 없다는 에러가 난다. 슬슬 짜증이 난다.

4. 웹로직 문서에 나온대로 weblogic/server/bin/setWLSEnv.cmd를 먼저 실행 후 3번을 다시 시도해보니 성공!

정녕 순수 ant로 redeploy하는 방법은 없는 것인가? 혹시 weblogic에 내장된 ant를 써야하는 건가?
아니면 내가 뭐 빠뜨렸나...?

Posted by 에코지오
,