SSISO Community

시소당

Ant 에 의한 J2EE 어플리케이션의 패키지화

좀더 자세한 정보를 원하시면 이곳을 참조하기 바란다.
이곳에는 deploy를 콘솔로 하는방법및 보다 체계적인 방법을 소개하고 있다.
http://e-docs.bea.com/wls/docs70/programming/packaging.html


Ant 에 의한 J2EE 어플리케이션의 패키지화

Apache Ant 를 사용해 J2EE 어플리케이션을 구축 및 패키지화하는 방법을 설명한다.
Ant 는, make 커멘드와 닮았지만 ,Java 어플리케이션을 구축하기 위한 툴이다.
Ant 라이브러리는 WebLogic Server 에 부속되어 있어, 제품 패키지로부터 Java 어플리케이션을 간단하게 구축할 수 있게 되어 있다.

개발자는, eXtensible Markup Language (XML)를 사용해, Ant 에 의한 스크립트를 작성한다.

Ant 기능의 자세한 설명에 대해서는,
http://jakarta.apache.org/ant/manual/index.html

Java 파일의 컴파일
Ant 에는, Java 파일을 컴파일 하는 javac 태스크가 있다. 현재의 디렉토리의 모든 Java 파일을 classes 디렉토리에 컴파일 하는 예이다.

코드:
 <target name=”compile”>
   <javac srcdir=”. ” destdir=”classes”/>
 </target>


javac 태스크에 관한 모든 옵션을 확인하고 싶은 경우는, Apache Ant 의 온라인 메뉴얼을 참조하라.

WebLogic Server 컴파일러의 실행

코드:
 <java classname="weblogic.ejbc" fork="yes" failonerror="yes">
   <sysproperty key="weblogic.home" value="${WL_HOME}"/>
      <arg line="-compiler java ${dist}/std_ejb_basic_containerManaged.jar
      ${APPLICATIONS}/ejb_basic_containerManaged.jar"/>
   <classpath>
      <pathelement path="${CLASSPATH}"/>
   </classpath>
 </java>


상 기의 예에서는, fork 시스템 호출을 사용해, ejbc 를 실행하는 Java 프로세스를 작성한다. 이 예에서는, system 프롭퍼티를 지정해 weblogic.home 를 정의해, arg 태그로 커멘드 라인 인수를 지정하고 있다.
호출원인 Java 프로세스의 클래스 패스는, classpath 태그로 지정한다.


J2EE 디플로이먼트 유닛의 패키지화

J2EE 어플리케이션은, 그 컴포넌트 타입에 의해 이하와 같은 특정의 파일 확장자(extension)가 붙은 JAR 파일에 패키지화된다.

EJB 는 JAR 파일로 패키지화된다.
Web 어플리케이션은 WAR로 패키지화 된다.
자원 어댑터는 RAR 파일로 패키지화 된다.


엔터프라이즈 어플리케이션은 EAR 파일에 패키지화된다.
이러한 컴퍼넌트는, J2EE 사양에 따라 구조화 됩니다. 표준 XML 디플로이먼트 디스크립터 뿐만이 아니라,
컴퍼넌트도 WebLogic Server 고유의 XML 디플로이먼트 디스크립터에 의해 패키지화된다.

Ant 가 제공하는 태스크에 의해, JAR 파일의 구축이 용이하게 된다.
Ant 에서는, EAR 파일과 WAR 파일을 구축하는 특별한 태스크도 제공하고 있다.

WAR 태스크를 나타내어본다.

코드:
<war warfile="cookie.war" webxml="web.xml" manifest="manifest.txt">
    <zipfileset dir=". " prefix="WEB-INF" includes="weblogic.xml"/>
    <zipfileset dir=". " prefix="images" includes="*. gif,*. jpg"/>
    <classes dir="classes" includes="**/CookieCounter.class"/>
    <fileset dir=". " includes="*. jsp,*. html">
    </fileset>
 </war>


J2EE 디플로이먼트유닛을 패키지화하는 순서는 아래와 같다.

1. webxml 파라미터를 사용해 표준 XML 디플로이먼트 디스크립터를 지정한다.

2. war 태스크에 의해, XML 디플로이먼트 디스크립터가 WAR 어카이브(archive) WEB-INF/web.xml 의 표준명에 자동적으로 맵핑된다.

3. Apache Ant 에 의해, manifest 파라미터로 지정된 manifest 파일이, 표준명 META-INF/MANIFEST.MF 아래에 저장된다.

4. Apache Ant ZipFileSet 커멘드를 사용해, WEB-INF 디렉토리에 격납되는 일련의 파일
(이 경우는, WebLogic Server 고유의 디플로이먼트 디스크립터, weblogic.xml 만)을 정의한다.

5. 다음에, ZipFileSet 커멘드를 사용해, 모든 화상을 images 디렉토리에 패키지화한다.

6. classes 태그는, WEB-INF/classes 디렉토리의 서브 렛 클래스를 패키지화한다.

7. 마지막으로, 모든 . jsp 파일과 . html 파일을 현재의 디렉토리로부터 어카이브(archive)에 추가한다.
8. 구조가 WAR 파일과 같은 디렉토리내에 파일을 staging 해,
그 디렉토리로부터 JAR 파일을 작성해도, 같은 결과를 얻을 수 있다.
Ant JAR 태스크의 특별 기능을 사용하는 것으로써, 파일을 특정의 디렉토리 계층에 카피하는 수고를 줄일 수 있다.

9. 아래의 예에서는, Web 어플리케이션과 EJB 를 1 개씩 구축해, 그것들을 정리해 EAR 파일에 패키지화하고 있다.


코드:
 <project name="app" default="app.ear">
       <property name="wlhome" value="/bea/wlserver6. 1"/>
    <property name="srcdir" value="/bea/myproject/src"/>
    <property name="appdir" value="/bea/myproject/config/mydomain/applications"/>
    <target name="timer.war">
        <mkdir dir="classes"/>
        <javac srcdir="${srcdir}" destdir="classes" includes="myapp/j2ee/timer/*.java"/>
         <war warfile="timer.war" webxml="timer/web.xml" manifest="timer/manifest.txt">
           <classes dir="classes" includes="**/TimerServlet.class"/>
        </war>
    </target>
    <target name="trader.jar">
    <mkdir dir="classes"/>
    <javac srcdir="${srcdir}" destdir="classes" includes="myapp/j2ee/trader/*.java"/>
    <jar jarfile="trader0.jar" manifest="trader/manifest.txt">
       <zipfileset dir="trader" prefix="META-INF" includes="*ejb-jar.xml"/>
       <fileset dir="classes" includes="**/Trade*.class"/>
       </jar>
       <ejbc source="trader0.jar" target="trader.jar"/>
    </target>
    <target name="app.ear" depends="trader.jar, timer.war">
       <jar jarfile="app.ear">
          <zipfileset dir=". " prefix="META-INF" includes="application.xml"/>
          <fileset dir=". " includes="trader.jar, timer.war"/>
       </jar>
    </target>
    <target name="deploy" depends="app.ear">
       <copy file="app.ear" todir="${appdir}/>
    </target>
 </project>



Ant 의 실행

BEA 에서는, Ant 를 실행하는 간단한 스크립트를 server/bin 디렉토리에서 제공하고 있다.
디폴트에서는, Ant 는 build.xml 빌드 파일을 로드한다.만, -f 플래그를 사용하면 이 지정은 오버라이드(override) 할 수 있다.
이하의 커멘드로, 상기의 빌드 스크립트를 사용해 어플리케이션을 구축해, 디플로이 할 수 있다.

ant -f yourbuildscript.xml

 

출처 : http://java.techedu.net/


572 view

4.0 stars