Site Search :
Standard Enterprise XML Methodology Pattern Setting Tunning Other
Article Contributors
GuestBook
Javapattern Maven
XSourceGen Dev
JetSpeed Test
JLook Image
jLook Family Site


IBM Webshpere 5.0 의 서버시작, 중지 및 EJB Deploy ANT Build
 
IBM Webshpere 5.0 의 서버시작과 중지, EJB Deploy를 ANT의 스크립트를 만들어내어 처리할 수 있도록 properties및 build.xml파일을 만들어본다. ( 2003/07/09 ) 230
Written by ienvyou - 최지웅
1 of 1
 

이번 아티클에서는 웹스피어의 구동에 대한 ANT build 파일 및 websphere deploy용 
ANT Task Define을 정의해보고자 한다.

현재 나와있는 K생명사의 개발환경이 웹스피어인데 자세한 사항은 보안상 하지 않겠다.

이클립스를 내장한 WSAD를 사용하여 EJB를 만들고 하면 쉽겠지만 현재 놀새~는 모든
엔터티빈에 대한 코드를 습관상 text base를 이용하여 항상 만들고 있다.

여기서 볼것은 웹스피어 5.0을 ant task로 startup 및 shutdown을 시킬 수 있도록 만들었으며
생성된 ejb를 웹스피어 메뉴중 전개된 EJB코드 생성 없이 빠른 시간안에 admin tool에서 
deploy시킬 수 있도록 환경구성을 하도록 한다.

별반 다른 주변환경을 설명할 필요도 없고, 당신이 만약 이러한 것이 필요하다면
언젠가는 이글을 필요에 의하여 읽을 것이므로, 설명은 최대한 간단하게 하도록 하겠다.

우선 Webshpere에 대한 환경이 설정이 build.xml파일에 필요하므로 이름하여 build.properties파일을
선언하여 우리가 필요한 변수를 선언하도록 한다.

예제는 아래와 같다.

▶ build.properties


#choose classic, modern, jikes, or jvc
#
#기본적인 javac모듈은 IBM에서 제공하는 JDK를 이용하여 서버를 구동하여야 한다.
#ANT의 기본모듈은 상관이 없으며, 연결된 서버만을 이용한다.
#
JAVAC=modern
#자바컴파일러의 위치를 지정해준다.
java.home=C:/IBM/WebSphere/AppServer/java

#Config URL을 세팅한다.
com.ibm.SOAP.ConfigURL=C:/IBM/WebSphere/AppServer/properties/soap.client.props
com.ibm.CORBA.ConfigURL=C:/IBM/WebSphere/AppServer/properties/sas.client.props

#인코딩된 결과값의 출력위치를 지정
ws.output.encoding=console 

# 서버구동 및 deploy에 필요한 클래스를 추가하여 사용하도록 한다.
ws.classpath=C:/IBM/WebSphere/AppServer/properties; \n
C:/IBM/WebSphere/AppServer/lib/bootstrap.jar; \n
C:/IBM/WebSphere/AppServer/lib/j2ee.jar;C:/IBM/WebSphere/AppServer/lib/lmproxy.jar; \n
C:/IBM/WebSphere/AppServer/java/jre/lib/ext/mail.jar; \n
C:/IBM/WebSphere/AppServer/lib/wasjmx.jar; \n
C:/IBM/WebSphere/AppServer/lib/processmgmt.jar

# 웹스피어 인스톨디렉토리를 지칭한다.
was.install.root=C:/IBM/WebSphere/AppServer

#웹스피어 확장라이브러리 디렉토리를 선언한다.
ws.ext.dirs=C:/IBM/WebSphere/AppServer/java/lib;C:/IBM/WebSphere/AppServer/classes; \n
C:/IBM/WebSphere/AppServer/lib; \n
C:/IBM/WebSphere/AppServer/lib/ext; \n
C:/IBM/WebSphere/AppServer/web/help; \n
C:/IBM/WebSphere/AppServer/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime;

# 서버시작과 종료에 필요한 클래스가 launcher로 입력되도록 한다.
stop.class=com.ibm.ws.management.tools.WsServerStop
start.class=com.ibm.ws.management.tools.WsServerLauncher

# 환결설정디렉토리를 지정한다.
config.root=C:/IBM/WebSphere/AppServer/config

# cell 머신
was.cell=spider

# 노드 머신
was.node=spider

# 서버의 이름을 지정한다.
server.name=server1

# 서버를 구동시키기 위한 실행파일을 지정한다.
execute.class.name=com.ibm.ws.bootstrap.WSLauncher

이제 Ant로 startup, shutdown시킬 수 있도록 build.xml파일을 설정한다. ▶ build.xml


    <project name="Handling_websphere_by_Carouser" default="help" basedir=".">

    <!-- set global properties for this build -->
    <property environment="env"/>
    <property file="./build.properties"/>

    <target name="help">
    <echo>
        Websphere Application Server Handling
        Toplevel targets:
           help		-- 	this message
           stopserver		--	stop the WAS5.0
    </echo>
    </target>

    <!-- #### IBM Websphere Appliation Server start ########## -->
    <target name="startserver">
    <!-- Create the time stamp -->
    <tstamp/>
    <echo>${ws.classpath}</echo>

    <!-- Create the build directory structure used by compile -->
    <java classname="${execute.class.name}" fork="yes">
        <jvmarg value="-Dcom.ibm.CORBA.ConfigURL=${com.ibm.CORBA.ConfigURL}"/>
        <jvmarg value="-Dws.output.encoding=${ws.output.encoding}"/>
        <jvmarg value="-Dwas.install.root=${was.install.root}"/>
        <jvmarg value="-Dws.ext.dirs=${ws.ext.dirs}"/>

         <arg value="${start.class}"/> 
         <arg value="${config.root}"/> 
         <arg value="${was.cell}"/> 
         <arg value="${was.node}"/> 
         <arg value="${server.name}"/> 
         <classpath>
            <pathelement path="${ws.classpath}"/>
         </classpath>
    </java>
    </target>
    <!-- ##### IBM Websphere Appliation Server start target End ######  -->



    <!-- ###### IBM Websphere Appliation Server stop ##### -->
    <target name="stopserver">
    <!-- Create the time stamp -->
    <tstamp/>
    <echo>${ws.classpath}</echo>

    <!-- Create the build directory structure used by compile -->
    <java classname="${execute.class.name}" fork="yes">

        <jvmarg value="-Dcom.ibm.SOAP.ConfigURL=${com.ibm.SOAP.ConfigURL}"/>
        <jvmarg value="-Dcom.ibm.CORBA.ConfigURL=${com.ibm.CORBA.ConfigURL}"/>
        <jvmarg value="-Dws.output.encoding=${ws.output.encoding}"/>
        <jvmarg value="-Dwas.install.root=${was.install.root}"/>
        <jvmarg value="-Dws.ext.dirs=${ws.ext.dirs}"/>

         <arg value="${stop.class}"/> 
         <arg value="${config.root}"/> 
         <arg value="${was.cell}"/> 
         <arg value="${was.node}"/> 
         <arg value="${server.name}"/> 
         <classpath>
            <pathelement path="${ws.classpath}"/>
         </classpath>
    </java>
    </target>
    <!-- #########IBM Websphere Appliation Server stop target End ##### -->

    </project>


당신이 위의 build.properties정도만 환경에 맞게끔 수정하여 프롬프트 창에서 $build_home>ant startserver 라고만 입력하게 되면 서버를 구동을 시작할 것이며 $build_home>ant stopserver 라고 입력하게 되면 서버는 작동을 중지할 것이다. " 첫번째 단계"라는 웹스피어 툴이 있기는 하지만 BSD환경이라면 위의 스크립트가 굉장히 유용하게 쓰일 것이다. 왜냐~ Makefile을 다시 만들 필요가 없기 때문이다. 자. 이제 그러면 ejb를 하나 작성했다고 했을때 그 ejb를 webshpere용의 전개코드용으로 생성까지 시킬수 있는 task를 define해보도록 하자. 웹로직용 ejbc를 포함한 건 이미 개발아티클인 아래의 글을 보도록 하라. Weblogic EJB Deploy using ANT build 아래는 웹로직과 같은 경우인 웹스피어용 ejb deploy task를 보여주도록 하겠다. ▶ build.properties

#choose classic, modern, jikes, or jvc
JAVAC=modern
#JAVA_HOME=/export/home/bea/jdk141_02
PROJECT_HOME=.
APPLICATIONS=.

# 웹스피어 홈디렉토리
websphere.home=C:/IBM/WebSphere/AppServer

# 클래스 패스
build.classpath=.;C:/IBM/WebSphere/AppServer/lib/j2ee.jar; \n
C:/IBM/WebSphere/AppServer/java/jre/lib/ext/ibmorb.jar; \n
C:/IBM/WebSphere/AppServer/lib/lmproxy.jar; \n
C:/IBM/WebSphere/AppServer/lib/bootstrap.jar; \n
C:/IBM/WebSphere/AppServer/java/jre/lib/wsexception.jar

#서버의 디플로이 되어져야 할 디렉토리
dist.server=D:/temp/test_war.ear

# ejb가 디플로이 되어질 클래스파일들의 위치
build.target.class.dir=build

# ejb dtd가 있는 IBM host디렉토리
dtd.home=C:/IBM/WebSphere/AppServer/deploytool/itp/plugins/com.ibm.etools.j2ee
build.xml

<project name="ejb-basic-statelessSession" default="all" basedir=".">

  <!-- set global properties for this build -->
  <property environment="env"/>
  <property file="./conf/build.properties"/>
  <property name="build" value="build"/>
  <property name="dist" value="dist"/>
  <property name="jar.name" value="Increment"/>


<!-- Classpath Declaration -->
<path id="compilation-classpath">
	<pathelement path="${build.classpath}"/>
	<fileset dir="${dist}">
		<include name="**/*.jar"/>
		<include name="**/*.zip"/>
	</fileset>
</path>


  <target name="all" depends="init, compile_ejb, jar_ejb, deploy, clean"/>

  <target name="init">
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create the build directory structure used by compile
    and copy the deployment descriptors into it-->
    <mkdir dir="${build}"/>
    <mkdir dir="${build}/META-INF"/>
    <mkdir dir="${dist}"/>
    <copy todir="${build}/META-INF">
      <fileset dir="xml">
        <include name="*.xml"/>
		<include name="*.*xmi"/>
        <exclude name="build.xml"/>
      </fileset>
    </copy>
  </target>
  

  <!-- Compile ejb classes into the build directory (jar preparation) -->
  <target name="compile_ejb" depends="init">
  	<echo>${build.classpath}</echo>
    <javac srcdir="." destdir="${build}" classpath="${build.classpath}"/>
  </target>

  <!-- Make a standard ejb jar file, including XML deployment descriptors -->
  <target name="jar_ejb" depends="compile_ejb">
    <jar jarfile="${dist}/_${jar.name}.jar"
      basedir="${build}">
    </jar>
  </target>


<target name="deploy" depends="jar_ejb">
  <taskdef name="wsejbdeploy" classname="com.ibm.websphere.ant.tasks.WsEjbDeploy">
      <classpath>
        <fileset dir="${websphere.home}/lib">
          <include name="*.jar"/>
        </fileset>
      </classpath>
    </taskdef>

	<wsejbdeploy inputJar="${dist}/_${jar.name}.jar"
 		wasHome="${websphere.home}"
 		workingDirectory="${dist}"
 		outputJar="${dist}/${jar.name}.jar"
		classpathref="compilation-classpath" />
</target>



  <target name="clean">
    <delete dir="${build}"/>
	<delete file="${dist}/_${jar.name}.jar"/>
    <delete dir="ejbcgen"/>
  </target>
</project>


EJB의 디플로이 순서는 target의 all의 depends를 보면 알겠지만 우선 init - 초기 환경설정 compile_ejb - ejb소스 컴파일 jar_ejb - jar파일로 변환 deploy - 웹스피어용 deploy코드 생성 clean - 생성디렉토리 삭제 의 순으로 이루어진다. ANT를 조금이라도 다룬 당신이라면 별로 어렵지 않을 내용으로 보인다. 수정해줘야 할것은 build.xml파일의 <property name="jar.name" value="Increment"/> 부분인데 build.xml파일을 수정하고 싶지 않다면 해당 프로퍼티를 conf의 환경으로 설정해도 무방할 것이다. 어찌 고치든지 놀새~는 상관이 없다. 건투를 빌며 궁금한 사항이 있으면 놀새~네 게시판이 없으므로 방명록에 글남기기 바란다. 단굘~!
 
1
References
 
Copyright ⓒ 2003 www.javapattern.info & www.jlook.com, an jLOOK co.,LTD