제5장 Ant Task

본 장에서는 Ant Task에 대해서 설명한다.

5.1. 개요

JEUS에서는 애플리케이션을 개발하면서 특정 작업을 자동화하기 위해 다음과 같은 Ant Task를 제공한다. 사용자는 Ant를 통해 실행해야 할 Task를 기술한 Build 파일을 작성해야 한다.

본 절에서는 각 기능들의 Build 파일에 기술되어야 할 내용들에 대해서 설명하고, 이를 통해 각 Ant Task를 실행하는 과정을 설명한다. Ant에 대한 설정법과 사용법은 http://ant.apache.org를 참조한다.

Build 파일 : build.xml

build.xml은 Ant Task를 기술한 XML 형식의 Ant Build 파일이다. Build 파일의 중요한 부분은 <project>에 포함되어 있으며, 일반적으로 1개의 프로젝트에 여러 개의 <target>이 존재한다. <target>은 실제 실행해야 하는 Ant Task 작업을 정의한다.

JEUS에서 제공하는 Ant Task를 사용하기 위해서는 다음과 같이 Task definition을 build.xml에 추가해야 한다.

<taskdef resource="jeus/util/ant/jeusant.properties">
    <classpath>
        <path refid="jeus.libraries"/>
    </classpath>
</taskdef>

프로젝트의 속성들은 <project>의 하위에 정의하며, "${property-name}"의 표현식을 통해 프로젝트 내에서 속성 값들을 사용할 수 있다.

주의

JEUS에서 제공하는 Ant Task를 이용할 때는 가급적 Build 파일의 project에 "jeus.home"을 설정해주는 것이 안전하다. 이는 하나의 project에서 다수의 서로 다른 target을 수행할 때 특정 Target은 JEUS_HOME 정보를 필요로 하는 것이 존재할 수 있기 때문이다.

JEUS_HOME은 static final 변수여서 하나의 JVM에서 처음 설정되는 값으로 고정되는 특징이 있다. 만약 JEUS_HOME 정보가 필요없는 Target이 먼저 수행되면, JEUS_HOME에 null 값이 설정된다. 다음 순서로 JEUS_HOME이 필요한 Target이 수행될 때 앞의 Target이 설정한 JEUS_HOME의 값을 이용하게 되므로 원하는 동작과 다르게 동작할 수 있다.

5.2. Setup Ant Task

본 절에서는 JEUS 환경을 구성하는 Ant Task를 설명한다.

5.2.1. create-domain

create-domain Ant Task를 통해 새로운 도메인 환경을 구성할 수 있다.

JEUS_HOME/setup 하위에 제공되는 build.xml에 존재하는 Task로써 다음 파일에서기본 설정 값을 확인할 수 있다.

JEUS_HOME/setup/domain-config-template.properties

다음은 create-domain Task의 속성에 대한 설명이다.

속성설명

domain

환경을 구성할 도메인의 이름이다. (기본값: jeus_domain)

servername

JEUS Master Server의 이름이다. (기본값: adminServer)

nodename

JEUS Master Server에서 사용하는 node 이름이다. (기본값: node1)

jeus.address

JEUS Master Server의 기본 동작 주소이다. (기본값: 0.0.0.0 )

jeus.port

JEUS Master Server의 기본 동작 포트이다. (기본값: 9736)

jms.port

JEUS Master Server의 JMS 동작 포트이다. (기본값: 9741)

http.port

JEUS Master Server의 HTTP 동작 포트이다. (기본값: 8808)

jvm.config

JEUS Master Server의 JVM 설정이다.

(기본값: -Xmx1024m -XX:MaxPermSize=128m)

jeus.username

도메인의 관리 계정 이름이다. 도메인의 관리 계정 이름으로 반드시 변경할 것을 권장한다. (기본값: administrator)

jeus.password

도메인의 관리 계정 패스워드로 평문으로는 jeus이며 base64로 인코딩된 값이다. Ant 설정을 통해 변경하거나 jeusadmin의 set-password 명령어를 통해 반드시 변경할 것을 권장한다. (기본값: {base64}amV1cw==)

usevirtualmulticast

SCF(System Clustering Framework)를 사용할 때 TCP 통신을 이용한 가상 멀티캐스트를 사용할지 여부를 설정한다. (true | false, 기본값: false)

heartbeataddress

SCF에 사용되는 heartbeat 주소이다.

uservirtualmulticast 값이 true일 경우 적용되지 않는다. (기본값: 230.30.1.1)

heartbeatport

SCF에 사용되는 heartbeat 포트이다.

uservirtualmulticast 값이 true일 경우 적용되지 않는다. (기본값: 3030)

예제

다음은 Ant Task를 통한 도메인 생성 예제이다.

도메인의 이름은 'domain1', JEUS Master Server의 이름은 'adminServer', JEUS Master Server의 jvm 설정은 '-Xmx512m -XX:MaxPermSize=256m'로 설정한 예제이다. 모두 기본값이 존재하므로 굳이 옵션을 모두 줄 필요는 없으나 아래의 예제에는 방법을 설명하기 위해 옵션을 설정하였다.

JEUS_HOME/setup$ ant create-domain -Ddomain=domain1 -Dservername=adminServer
-Djvm.config="-Xmx512m -XX:MaxPermSize=256m" -Dheartbeataddress=230.30.1.1
-Dheartbeatport=3030
Buildfile: JEUS_HOME/setup/build.xml

create-domain:
[echo] Creating a domain configuration: domaindir="JEUS_HOME/domains/domain1
domain = domain1, server-name = adminServer, admin password={base64}amV1cw==,
server base port=9736, server base listen address=${jeus.address}
[mkdir] Created dir: JEUS_HOME/domains/domain1
[mkdir] Created dir: JEUS_HOME/domains/domain1/.applications
[mkdir] Created dir: JEUS_HOME/domains/domain1/.deploymentplans
[mkdir] Created dir: JEUS_HOME/domains/domain1/bin
[mkdir] Created dir: JEUS_HOME/domains/domain1/config
[mkdir] Created dir: JEUS_HOME/domains/domain1/lib
[mkdir] Created dir: JEUS_HOME/domains/domain1/lib/application
[mkdir] Created dir: JEUS_HOME/domains/domain1/servers
[mkdir] Created dir: JEUS_HOME/domains/domain1/config/servlet
[mkdir] Created dir: JEUS_HOME/domains/domain1/config/security
[copy] Copying 2 files to JEUS_HOME/domains/domain1/config
[copy] Copying 1 file to JEUS_HOME/domains/domain1/config/servlet
[copy] Copying 1 file to JEUS_HOME/domains/domain1/config/security
[copy] Copied 1 empty directory to 1 empty directory under JEUS_HOME/domains/domain1/config/security
[copy] Copying 3 files to JEUS_HOME/domains/domain1/config/security
[echo] productionmode = true
[java] JVM args ignored when same JVM is used.
[copy] Copying 3 files to JEUS_HOME/domains/domain1/bin
[mkdir] Created dir: JEUS_HOME/domains/domain1/servers/adminServer
[mkdir] Created dir: JEUS_HOME/domains/domain1/servers/adminServer/bin
[mkdir] Created dir: JEUS_HOME/domains/domain1/servers/adminServer/.workspace
[mkdir] Created dir: JEUS_HOME/domains/domain1/servers/adminServer/.workspace/deployed
[mkdir] Created dir: JEUS_HOME/domains/domain1/servers/adminServer/.workspace/deployed/deploymentplans
[mkdir] Created dir: JEUS_HOME/domains/domain1/servers/adminServer/logs
[mkdir] Created dir: JEUS_HOME/domains/domain1/servers/adminServer/lib
[mkdir] Created dir: JEUS_HOME/domains/domain1/servers/adminServer/lib/application

BUILD SUCCESSFUL
Total time: 2 seconds
JEUS_HOME/setup$

5.3. EJB Ant Task

JEUS를 기반으로 EJB 컴포넌트를 개발할 때 작업을 편리하게 수행할 수 있도록 몇 가지의 Ant Task를 제공한다.

5.3.1. appcompiler

appcompiler Ant Task는 pre-deployment 작업 후 EJB 모듈 또는 개별적인 EJB Bean에 대해서 필요한 RMI Stub과 Skeleton 클래스를 임의로 생성하는 경우 사용한다. 또한 이것은 클라이언트에서 원격지에 있는 디플로이된 Bean과 통신할 때 필요한 클래스 파일들 즉 EJB 클라이언트 JAR를 생성할 수 있다.

다음은 appcompiler Ant Task 속성에 대한 설명이다.

속성설명

jeusHome

JEUS_HOME을 설정한다. (String 타입)

client

생성될 Stub 클래스들이 포함될 클라이언트 뷰 파일을 설정한다. (String 타입)

keep

컴파일 과정에서 생성된 소스를 유지할 것인지를 설정한다. (기본값: false)

jspmap

servlet-mapping table(jeus_jspmap.xml)을 생성할 것인지를 설정한다.

(기본값: false)

ejbJar

컴파일할 때 사용할 ejb-jar.xml 파일을 설정한다. (String 타입)

jeusEjbDd

컴파일할 때 사용할 jeus-ejb-dd.xml 파일을 설정한다. (String 타입)

name

deploy에 사용할 이름을 설정한다. (String 타입)

target

컴파일할 대상 애플리케이션, stand-alone 모듈 파일을 설정한다. (필수 입력항목, String 타입)

예제

다음은 build.xml을 작성한 예제와 build.xml을 통해 appcompiler를 실행하는 예제이다.

  • build.xml 작성 예제

    [예 5.1] appcompiler Ant Task build 파일 예제 : <build.xml>

    <?xml version="1.0"?>
    
    <project name="example" default="appcompiler" basedir=".">
      <property environment="env"/>
      <!-- jeus.home project property is required
           when you run the various tasks in an ant jvm and
           one of the various tasks requirs JEUS_HOME information -->
      <property name="jeus.home" value="${env.JEUS_HOME}"/>
    
      <!-- set properties to be needed for appcompiler task -->
      <property name="client" value="client_view.jar"/>
      <property name="keep" value="false"/>
      <property name="jspmap" value="false"/>
      <property name="ejbjar" value="ejb-jar.xml"/>
      <property name="jeusejbdd" value="jeus-ejb-dd.xml"/>
      <property name="targetfile" value="ejb"/>
    
      <!-- set the library-classpath or to run the task class -->
      <path id="jeus.libraries">
        <fileset dir="${jeus.home}/lib/system" includes="*.jar"/>
      </path>
    
      <!-- include the task definition resource file -->
      <taskdef resource="jeus/util/ant/jeusant.properties">
        <classpath>
          <path refid="jeus.libraries"/>
        </classpath>
      </taskdef>
    
      <target name="init">
      </target>
    
      <!-- appcompiler task -->
      <target name="appcompiler" depends="init">
        <appcompiler jeusHome="${jeus.home}"
                     client="${client}"
                     keep="${keep}"
                     jspmap="${jspmap}"
                     ejbJar="${ejbjar}"
                     jeusEjbDd="${jeusejbdd}"
                     target="${targetfile}"/>
      </target>
    
    </project>


  • 실행 예제

    $ ant appcompiler
    Buildfile: build.xml
    
    init:
    
    appcompiler:
    
    BUILD SUCCESSFUL
    Total time: 3 minutes 7 seconds

5.3.2. ejbddinit

ejbddinit Ant Task는 JEUS EJB DD를 생성할 때 이용한다. ejbddinit에 대한 자세한 설명은 “4.4. ejbddinit”을 참고한다.

다음은 ejbddinit Ant Task의 속성에 대한 설명이다.

속성설명

propertyFile

ejbddinit 실행할 때 참조할 프로퍼티 파일을 지정한다. (String 타입)

logginginglevel

ejbddinit 실행할 때 화면에 출력되는 로그의 레벨을 지정한다.

이 레벨은 Jave SE logging API의 레벨을 따른다. (기본값: INFO)

target

ejbddint 실행 대상이 되는 EJB 모듈의 경로를 지정한다. EJB 모듈은 JAR archive 또는 디렉터리일 수 있다.

(필수 입력항목, 프로퍼티 파일이 Target 정보를 설정한 경우 생략 가능)

ejbddinit Ant Task 스크립트에 제한적으로 ejbddinit 프로퍼티를 설정할 수 있다.

ejbddinit 프로퍼티 파일의 프로퍼티는 ejbddinit Ant Task 스크립트에서 다음과 같은 규칙으로 설정되어야 한다. ejbddinit 프로퍼티에 대한 자세한 내용은 절 4.4. “프로퍼티 목록”을 참고한다.

ejbddinit 프로퍼티 파일ejbddinit Ant 스크립트

export-name=%{ejb-class}

<property name="export-name" value="%{ejb-class}"/>

thread-max=100

<property name="thread-max" value="100"/>

HelloBean.export-port=55555

build.xml에서는 특정 EJB 컴포넌트(HelloBean)에 대한 ejbddinit 프로퍼티 설정이 불가능

ejbddinit 프로퍼티 파일과 같이 Ant 스크립트에서도 export-name 프로퍼티에 대하여 "%{ejb-class}"와 같은 패턴을 사용할 수 있다. export-name 과 관련된 패턴 사용에 관한 내용은 절 4.4. “export-name 프로퍼티에 대한 패턴 지원”을 참고한다.

Ant 스크립트에서는 특정 EJB 컴포넌트에 대한 ejbddinit 프로퍼티 설정은 지원하지 않으므로 특정 EJB 컴포넌트에 대한 ejbddinit 프로퍼티 설정이 필요한 경우에는 ejbddinit 프로퍼티 파일을 따로 작성해야 한다. 특정 EJB 컴포넌트에 대한 설정은 ejbddinit 프로퍼티 파일과 Ant 스크립트의 공통 설정보다 우선한다. ejbddinit 프로퍼티 파일과 ejbddinit Ant 스크립트에 동일한 설정이 존재할 경우에는 Ant 스크립트의 설정을 우선한다.

예제

ejbddinit Ant 스크립트 작성 예와 ejbddinit Ant Task를 실행하는 예는 아래와 같다.

  • ejbddinit Ant 스크립트 작성 예

    [예 5.2] ejbddinit Ant 스크립트 예제

    <?xml version="1.0"?>
    <project name="example" default="ejbddinit" basedir=".">
      <property environment="env"/>
      <!-- jeus.home project property is required
           when you run the various tasks in an ant jvm and
           one of the various tasks requirs JEUS_HOME information -->
      <property name="jeus.home" value="${env.JEUS_HOME}"/>
    
      <!-- set properties to be needed for ejbddinit task -->
      <property name="targetfile" value="ejb.jar"/>
      <property name="logginglevel" value="FINE"/>
      <property name="propertyfile" value="ejbddinit.properties"/>
    
      <!-- set properties to be needed for ejbddinit properties -->
      <property name="export-name" value="%{ejb-class}"/>
      <property name="thread-max" value="100"/>
    
      <!-- set the library-classpath or to run the task class -->
      <path id="jeus.libraries">
        <fileset dir="${jeus.home}/lib/system" includes="*.jar"/>
      </path>
    
      <!-- include the task definition resource file -->
      <taskdef resource="jeus/util/ant/jeusant.properties">
        <classpath>
          <path refid="jeus.libraries"/>
        </classpath>
      </taskdef>
    
      <target name="init">
      </target>
    
      <!-- ejbddinit task -->
      <target name="ejbddinit" depends="init">
        <ejbddinit loggingLevel="${logginglevel}"
                   property="${propertyfile}"
                   target="${targetfile}"
                   exportName="${export-name}"
                   threadMax="${thread-max}">
        </ejbddinit>
      </target>
    </project>


  • ejbddinit Ant Task 실행 예

    $ ant ejbddinit
    Buildfile: build.xml
    
    init:
    
    ejbddinit:
    [ejbddinit] LoadFile: /jeus/sample/ejbddinit.properties
    [ejbddinit] Source=/jeus/sample/ejbddinit/ejb.jar
    [ejbddinit] Successfully configured the parameters.
    [ejbddinit] Deployment descriptor initialization started.
    [ejbddinit] Creating JEUS descriptors.
    [ejbddinit] Deployment descriptor initialization finished.
    
    BUILD SUCCESSFUL
    Total time: 2 seconds

5.4. 웹 서비스 Ant Task

본 절에서는 JEUS에서 웹 서비스 생성과 웹 서비스 클라이언트를 위해 제공하는 Ant Task에 대해서 설명한다.

5.4.1. java2wsdl

java2wsdl Task는 SET(Service Endpoint Interface) 클래스와 임의의 Java로 구현한 클래스로부터 다음의 파일을 생성한다.

  • 웹 서비스의 WSDL파일

  • JAX-RPC 매핑 파일

참고

java2wsdl Ant Task를 정의하는 클래스는 jeus.util.ant.webservices.Java2WsdlTask이다.

다음은 java2wsdl의 속성에 대한 설명이다.

속성설명

configfilepath

웹 서비스 설정 파일의 경로를 설정한다. (필수 입력항목, String 타입)

classpath

웹 서비스를 구성하는 컴파일된 Java 클래스에 대한 클래스 패스를 설정한다.

(필수 입력항목, String 타입)

destDir

생성된 WSDL 파일이 놓일 디렉터리의 절대 경로를 설정한다. (String 타입)

level

로그 레벨을 설정한다. (String 타입)

verbose

Verbose 메시지를 출력 여부를 설정한다. (기본값: false)

Nested Element

<java2wsdl>은 Ant의 <classpath> element를 가지고 있다.

예제

build.xml을 작성한 예제와 이 build.xml을 통해 java2wsdl을 실행시키는 예를 설명한다.

  • build.xml 작성 예제

    [예 5.3] java2wsdl Ant Task build 파일 예제 : <build.xml>

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="java2wsdl" default="build" basedir=".">
        <property name="is.app-client.module" value="true" />
        <import file="../../common/common-build.xml" />
        <taskdef name="java2wsdl"
                 classname="jeus.util.ant.webservices.Java2WsdlTask">
            <classpath refid="jeus.libraries.classpath" />
        </taskdef>
        <target name="-post-compile">
            <java2wsdl destDir="${build.classes.dir}"
                       verbose="true"
                       configfilepath="${src.conf}/service-config.xml">
                <classpath refid="classpath" />
            </java2wsdl>
        </target>
    </project>


  • 실행 예제

    $ jant
    
    ...
    
    [java2wsdl] Building Web Services : DocLitEchoService
    [java2wsdl] Generating WSDL File - jeus/build/classes/DocLitEchoService.wsdl
    [java2wsdl] Generating JAX-RPC Mapping File - jeus/build/classes/DocLitEchoService-mapping.xml
    
    ...
    
    BUILD SUCCESSFUL
    Total time: 11 seconds

5.4.2. wsdl2java

wsdl2java Task는 웹 서비스의 WSDL로부터 다음의 2개 중에 하나를 생성한다.

  • 클라이언트 측 웹 서비스의 Stub Java 소스 코드들

  • 서버 측 웹 서비스의 인터페이스 Java 소스 코드들

참고

wsdl2java Ant Task를 정의하는 클래스는 'jeus.util.ant.webservices.Wsdl2JavaTask' 이다.

다음은 wsdl2java의 속성에 대한 설명이다.

속성설명

wsdl

Java 소스 파일을 생성하기 위해서 사용되는 WSDL의 URL이나 절대 경로를 설정한다. (필수 입력항목, String 타입)

mode

Java 소스 파일을 생성하기 위해서 사용되는 MODE를 설정한다. (필수 입력항목, String 타입)

다음 중에 하나를 설정한다.

  • gen:client

  • gen:server

  • gen

  • import:client

  • import:server

  • import

destDir

생성된 Java 파일이 놓일 디렉터리의 절대 경로를 설정한다.

(필수 입력항목, String 타입)

classDestDir

컴파일된 클래스 파일이 생성될 디렉터리를 설정한다. (String 타입)

inputMapping

Java 클래스를 생성하기 위하여 사용되는 입력 JAX-RPC 매핑 파일을 설정한다. (String 타입)

package

WSDL의 모든 Namespace URI에 대한 Java 패키지 이름을 설정한다.

(String 타입)

outputMapping

입력 WSDL에 대한 출력 JAX-RPC 매핑 파일을 설정한다. (String 타입)

doCompile

true일 때 생성된Java 소스 파일들은 컴파일된다. (기본값: true)

username

WSDL의 URL로 접근할 때 필요한 사용자 이름이다. (String 타입)

password

WSDL의 URL로 접근할 때 필요한 패스워드이다. (String 타입)

keepSrc

true로 설정하면 생성된Java 소스 파일들은 삭제되지 않는다. (기본값: true)

nowrapped

true로 설정하면 WSDL에 대한 wrapped MODE 탐지를 사용할 수 없다.

(기본값: false)

dataHandlerOnly

true로 설정하면 MIME 타입에 대하여 javax.activation.DataHandler를 적용한다.

(기본값: false)

nodatabinding

모든 WSDL massage part에 대하여 javax.xml.soap.SOAPElement를 적용한다.

(기본값: false)

soapver

stub/tie 클래스에서 사용되는 SOAP 버전을 설정한다.

  • 11 : SOAP 1.1(기본값)

  • 12 : SOAP 1.2

resolveDir

원격의 WSDL 파일(스키마 포함)을 로컬 저장소에 저장할 때 값을 설정할 수 있다. (String 타입)

DDGen

JEUS의 기본적인 배치 서술자(webservices.xml 파일과 MODE가 web인 경우 web.xml, ejb인 경우 ejb-jar.xml 파일)를 생성할 때 사용한다. (String 타입)

level

로그 레벨을 설정한다. (String 타입)

verbose

Verbose 출력은 true일 때 가능하다. (기본값: false)

Nested Element

<wsdl2java>는 중첩된 Ant의 <classpath>와 <mapping> element를 가지고 있다. <wsdl2java> Ant Task의 구조는 다음과 같다(+는 한 개 이상의 element를 가질 수 있음을 의미한다).

[그림 5.1] wsdl2java Task 구성

figure webservice anttasks wsdl2java

<mapping>

Java 패키지와 WSDL Namespace 사이의 매핑이다. 사용자가 <mapping>을 생략하면 모든 Namespace URI는 <wsdl2java> element인 package attribute에 기술된 패키지로 매핑된다.

다음은 <mapping>의 속성에 대한 설명이다.

속성설명

package

Java 패키지의 이름이다. (필수 입력항목, String 타입)

namespace

WSDL의 Namespace URI이다. (필수 입력항목, String 타입)

참고

만약 사용자가 <wsdl2java> element의 package 속성을 설정하면 이 속성 값이 <mapping> element로 설정된 값에 우선한다. 즉, <mapping> element로 설정된 값은 무의미해진다.

예제

build.xml을 작성한 예제와 이 build.xml을 통해 wsdl2java를 실행하는 예제를 설명한다.

  • build.xml 작성 예제

    [예 5.4] wsdl2java Ant Task build 파일 예제 : <build.xml>

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="wsdl2java" default="build" basedir=".">
        <property name="is.app-client.module" value="true" />
        <import file="../../../common/common-build.xml" />
        <taskdef name="wsdl2java"
                 classname="jeus.util.ant.webservices.Wsdl2JavaTask">
            <classpath refid="jeus.libraries.classpath" />
        </taskdef>
        <target name="-pre-compile">
            <mkdir dir="${build.classes.dir}" />
            <wsdl2java destDir="${build.classes.dir}"
                       verbose="true"
                       mode="import:server"
                       doCompile="true"
                       noDataBinding="true"
                       package="sample.nodatabinding.service"
                       outputmapping="${build.classes.dir}/BookQuoteService-mapping.xml"
                       wsdl="${src.conf}/BookQuoteService.wsdl">
                <classpath refid="classpath" />
            </wsdl2java>
        </target>
    </project>


  • 실행 예제

    $ jant
    Buildfile: build.xml
    ...
    [wsdl2java] Compiling generated sources(1)...
    ...
    BUILD SUCCESSFUL
    Total time: 6 seconds

5.4.3. wsgen

wsgen Task는 service endpoint interface 클래스(그리고 임의의 Java로 구현한 클래스)로부터 다음을 생성한다.

  • Portable Artifacts

  • 웹 서비스의 WSDL파일(옵션)

참고

wsgen Ant Task를 정의하는 클래스는 'jeus.webservices.jaxws.tools.WsGen2' 이다.

다음은 wsgen 속성에 대한 설명이다.

속성설명

sei

service endpoint interface 클래스 이름을 설정한다. (필수 입력항목, String 타입)

destdir

생성된 클래스 파일이 놓일 디렉터리의 절대 경로를 설정한다.

(필수 입력항목, String 타입)

classpath

입력으로 들어오는 클래스 파일들을 찾을 위치를 설정한다. (String 타입)

cp

classpath 속성과 같다. (String 타입)

resourcedestdir

genwsdl 속성과 함께 사용한다. WSDL 파일을 생성할 위치를 설정한다.

(String 타입)

sourcedestdir

생성되는 소스 파일들의 위치를 설정한다. (String 타입)

keep

생성되는 파일들을 보존 여부를 설정한다. (기본값: false)

verbose

Verbose 메시지를 출력 여부를 설정한다. (기본값: false)

genwsdl

WSDL 파일이 생성 여부를 설정한다. (기본값: false)

protocol

genwsdl 속성과 함께 사용한다.

wsdl:binding Element에 사용될 프로토콜을 설정한다.

기본값은 soap1.1이며 Xsoap1.2 Xsoap1.2와 같은 값들이 가능하다. Xsoap1.2는 표준은 아니며 extension 속성과 함께 쓰일 수 있다. (String 타입)

servicename

genwsdl 속성과 함께 사용한다. 생성되는 WSDL 파일의 특정 wsdl:service Element의 이름을 설정할 때 사용한다. (String 타입)

portname

genwsdl 속성과 함께 사용한다. 생성되는 WSDL 파일의 특정 wsdl:portname Element의 이름을 설정할 때 사용된다. (String 타입)

extension

벤더 특정의 확장성을 설정할 때 사용한다. 상호 운용 및 이식성이 떨어질 수 있다. (Boolean 타입)

policy

웹 서비스 정책 설정 파일을 읽어 들인다. (String 타입)

예제

build.xml을 작성한 예제와 이 build.xml을 통해 wsgen을 실행한는 예제이다.

  • build.xml 작성 예제

    [예 5.5] wsgen Ant Task build 파일 예제 : <build.xml>

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="wsgen" default="build" basedir=".">
        <property name="is.app-client.module" value="true" />
        <import file="../../common/common-build.xml" />
        <taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen">
            <classpath refid="jeus.libraries.classpath" />
        </taskdef>
        <target name="-post-compile">
            <wsgen sei="fromjava.server.AddNumbersImpl"
                   destdir="${build.classes.dir}"
                   classpath="${build.classes.dir}"
                   resourcedestdir="${build.classes.dir}"
                   sourcedestdir="${build.classes.dir}"
                   genwsdl="true" />
        </target>
    </project>


  • 실행 예제

    $ jant
    Buildfile: build.xml
    ...
    
         [echo] Compiling wsgen...
    ...
    
    BUILD SUCCESSFUL
    Total time: 6 seconds

5.4.4. wsimport

wsimport Task는 웹 서비스의 WSDL로부터 다음의 2개 중에 하나를 생성한다.

  • 클라이언트 측 웹 서비스의 Stub Java 소스 코드들

  • 서버 측 웹 서비스의 인터페이스 Java 소스 코드들

참고

wsimport Ant Task를 정의하는 클래스는 'jeus.webservices.jaxws.tools.WsImport2' 이다.

다음은 wsimport 속성에 대한 설명이다.

속성설명

wsdl

Java 소스 파일을 생성하기 위해서 사용되는 WSDL의 URL이나 절대 경로를 설정한다. (필수 입력항목, String 타입)

destDir

생성된 Java 파일이 놓일 디렉터리의 절대 경로를 설정한다. (String 타입)

sourcedestdir

생성된 소스 파일들이 놓일 위치를 설정한다. 이 속성을 지정하면 keep 속성이 자동으로 설정된다. (String 타입)

keep

생성되는 파일들을 보존 여부를 설정한다. (기본값: false)

verbose

Verbose 출력은 true일때 가능하다. (기본값: false)

binding

외부의 JAX-WS 또는 JAXB 바인딩 파일들을 설정한다. (String 타입)

extension

벤더 특정의 확장성을 설정할 때 사용한다. 상호 운용 및 이식성이 떨어질 수 있다. (Boolean 타입)

wsdllocation

WSDL URI를 이 속성에 명시하면 그 URI 값이 생성되는 SEI와 서비스 인터페이스의 @WebService.wsdlLocation Annotation과 @WebServiceClient.wsdlLocation Annotation에 설정된다. (String 타입)

catalog

TR9401, XCatalog, OASIS XML Catalog 형식과 같은 외부의 Entity 참조값을 설정할 수 있다. 또한 Ant xmlcatalog 타입을 사용할 수 있다. (String 타입)

package

WSDL의 모든 Namespace URI에 대한 Java 패키지 이름을 설정한다.

(String 타입)

target

이곳에 지정된 JAXWS 스펙 버전에 따라 코드를 생성한다. (String 타입)

quiet

출력 메시지들을 출력 여부를 설정한다. (기본값: false)

policy

웹 서비스 정책 설정 파일을 읽어 들인다. (String 타입)

예제

다음은 build.xml을 작성한 예제와 build.xml을 통해 wsimport을 실행하는 예제이다.

  • build.xml 작성 예제

    [예 5.6] wsimport Ant Task build 파일 예제 : <build.xml>

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="wsimport" default="build" basedir=".">
    	<property name="is.app-client.module" value="true" />
        <import file="../../common/common-build.xml" />
        <taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
            <classpath refid="jeus.libraries.classpath" />
        </taskdef>
        <target name="-pre-compile">
            <mkdir dir="${build.classes.dir}" />
            <wsimport wsdl="${src.conf}/AddNumbers.wsdl"
                      destDir="${build.classes.dir}"
                      sourcedestdir="${build.classes.dir}"
                      package="fromwsdl.server" />
        </target>
    </project>


  • 실행 예제

    $ jant
    Buildfile: build.xml
    ...
    
     [wsimport] Consider using <depends>/<produces> so that wsimport won't do
    unnecessary compilation
     [wsimport] parsing WSDL...
     [wsimport]
     [wsimport]
     [wsimport] generating code...
    ...
    
    BUILD SUCCESSFUL
    Total time: 6 seconds

5.4.5. xjc

xjc Task는 XML 스키마 파일을 Java 프로그래밍 언어로 된 JAXB Content 클래스들로 변환한다.

다음은 xjc 속성에 대한 설명이다.

속성설명

wsdl

컴파일하려는 스키마 파일이다. (필수 입력항목, String 타입)

binding

스키마 파일에 적용될 외부 추가 바인딩 파일이다. (String 타입)

package

이 옵션을 명시하면 생성되는 코드는 이 Java 패키지 하위에 위치한다. 이 옵션은 Command Line의 -p 옵션과 동일한 효과를 갖는다. (String 타입)

destdir

생성된 코드는 이 디렉터리 하위에 생성된다. (필수 입력항목, String 타입)

readonly

true일 경우에 Java 소스 파일들은 읽기 가능 모드이다. (기본값: false)

extension

true일 경우에 XJC 바인딩 컴파일러는 확장 모드로 실행된다. (기본값: false)

catalog

TR9401, XCatalog, OASIS XML Catalog 포맷과 같은 외부 카탈로그 파일을 설정할 때 사용한다. (String 타입)

removeOldOutput

"yes" 값으로 설정되면 produces Element가 가리키는 파일들은 XJC 바인딩 컴파일러가 소스 파일들을 재컴파일하기 전에 모두 삭제된다. (String 타입, "yes"|"no")

source

사용할 스키마 컴파일러의 버전을 명시한다. (String 타입, 1.0|2.0)

예제

다음은 build.xml을 작성한 예제와 build.xml을 통해 xjc를 실행하는 예제이다.

  • build.xml 작성 예제

    [예 5.7] xjc Ant Task build 파일 예제 : <build.xml>

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="xjc" default="build" basedir=".">
        <property name="is.app-client.module" value="true" />
        <import file="../../common/common-build.xml" />
        <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
            <classpath refid="jeus.libraries.classpath" />
        </taskdef>
        <target name="-pre-compile">
            <mkdir dir="${build.classes.dir}" />
            <xjc schema="${src.conf}/ts.xsd"
                 package="com.tmaxsoft"
                 destdir="${build.classes.dir}">
                <produces dir="${build.classes.dir}/com/tmaxsoft"
                          includes="**/*.java" />
                <classpath refid="jeus.libraries.classpath" />
                <classpath refid="classpath" />
            </xjc>
        </target>
    </project>


  • 실행 예제

    $ jant
    Buildfile: build.xml
    
    ...
    
          [xjc] jeus/build/classes/com/tmaxsoft is not found and thus excluded from
    the dependency check
          [xjc] Compiling file:/jeus/src/conf/ts.xsd
          [xjc] Writing output to jeus/build/classes
    
    ...
    
    BUILD SUCCESSFUL
    Total time: 4 seconds

5.4.6. schemagen

schemagen Task는 Java 클래스들에 나타나는 각각의 Namespace에 대해 하나의 스키마 파일을 생성한다.

다음은 schemagen의 속성에 대한 설명이다.

속성설명

destdir

생성되는 스키마 파일을 위치시킬 디렉터리를 설정한다. (String 타입)

classpath

클래스 패스를 설정한다. (String 타입)

예제

build.xml을 작성한 예제와 build.xml을 통해 schemagen을 실행하는 예제이다.

  • build.xml 작성 예제

    [예 5.8] schemagen Ant Task build 파일 예제 : <build.xml>

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="schemagen" default="build" basedir=".">
        <property name="is.app-client.module" value="true" />
        <import file="../../common/common-build.xml" />
        <taskdef name="schemagen" classname="com.sun.tools.jxc.SchemaGenTask">
            <classpath refid="jeus.libraries.classpath" />
        </taskdef>
        <target name="-pre-compile">
            <mkdir dir="${build.classes.dir}" />
            <schemagen destdir="${build.classes.dir}">
                <src path="${src.dir}" />
                <classpath refid="jeus.libraries.classpath" />
                <classpath refid="classpath" />
            </schemagen>
        </target>
    </project>


  • 실행 예제

    $ jant
    Buildfile: build.xml
    
    ...
    
    [schemagen] Generating schema from 2 source files
    [schemagen] Note: Writing jeus/schema1.xsd
    
    ...
    
    BUILD SUCCESSFUL
    Total time: 5 seconds

5.5. 웹 서비스 Maven Plugin

본 절에서는 JEUS에서 JAX-WS 기반의 웹 서비스 생성과 웹 서비스 클라이언트를 위해 제공하는 Maven Plugin에 대해서 설명한다.

5.5.1. wsgen

wsgen Plugin은 service endpoint interface 클래스(그리고 임의의 Java로 구현한 클래스)로부터 다음을 생성한다.

  • Portable Artifacts

  • 웹 서비스의 WSDL파일(옵션)

wsgen plugin은 JEUS_HOME/lib/client/jeus-ws-maven-plugin.jar으로 제공된다.

wsgen plugin을 사용하기 위해서는 다음 작업이 선행되어야 한다.

  1. jeus-ws-maven-plugin.jar 파일을 로컬 Repository에 install한다.

  2. JDK 7 환경에서는 Maven option에 다음을 추가한다.

    -Djava.endorsed.dirs=JEUS_HOME/lib/endorsed

다음은 wsgen plugin 속성에 대한 설명이다.

속성설명

sei

SEI 클래스의 이름을 설정한다. (필수 입력항목, String 타입)

destDir

생성된 클래스 파일이 놓일 디렉터리의 절대 경로를 설정한다.

(기본값: ${project.build.outputDirectory})

resourceDestDir

genwsdl 속성과 함께 사용한다. WSDL 파일을 생성할 위치를 설정한다.

(기본값: ${project.build.directory}/generated-sources/wsdl)

sourceDestDir

생성되는 소스 파일들의 위치를 설정한다.

(기본값: ${project.build.directory}/generated-sources/wsgen)

keep

생성되는 파일들을 보존 여부를 설정한다. (기본값: true)

verbose

Verbose 메시지를 출력 여부를 설정한다. (기본값: false)

genWsdl

WSDL 파일이 생성 여부를 설정한다. (기본값: false)

protocol

genwsdl 속성과 함께 쓰이며 wsdl:binding Element에 사용될 프로토콜을 설정한다. 기본값은 soap1.1 이며 Xsoap1.2 Xsoap1.2와 같은 값들이 가능하다. Xsoap1.2는 표준은 아니며 extension 속성과 함께 쓰일 수 있다. (String 타입)

servicename

genwsdl 속성과 함께 사용한다. 생성되는 WSDL 파일의 특정 wsdl:service Element의 이름을 설정할 때 사용한다. (String 타입)

portname

genwsdl 속성과 함께 사용한다. 생성되는 WSDL 파일의 특정 wsdl:portname Element의 이름을 설정할 때 사용된다. (String 타입)

extension

벤더 특정의 확장성을 설정할 때 사용한다. 상호 운용 및 이식성이 떨어질 수 있다. (기본값: false)

예제

pom.xml을 작성한 예제와 이 pom.xml을 통해 wsgen plugin을 실행하는 예제에 대한 설명이다.

  • pom.xml 작성 예제

    [예 5.9] wsgen plugin pom 파일 예제 : <pom.xml>

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>jeus.webservices.maven.sample</groupId>
        <artifactId>wsgen_sample</artifactId>
        <version>0.0.1</version>
        <packaging>war</packaging>
    
        <name>${project.artifactId}</name>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>jeus.ws</groupId>
                    <artifactId>jeus-ws-maven-plugin</artifactId>
                    <version>0.0.1</version>
                    <executions>
                        <execution>
                            <id>wsgen_test</id>
                            <goals>
                                <goal>wsgen</goal>
                            </goals>
                            <configuration>
                                <sei>jeus.webservices.sample.EchoService</sei>
                                <extension>true</extension>
                                <genWsdl>true</genWsdl>
                                <keep>true</keep>
                                <inlineSchemas>true</inlineSchemas>
                            </configuration>
                        </execution>
                    </executions>
    
                    <dependencies>
                        <dependency>
                            <groupId>com.sun</groupId>
                            <artifactId>tools</artifactId>
                            <version>1.6</version>
                            <scope>system</scope>
                            <systemPath>${java.home}/../lib/tools.jar</systemPath>
                        </dependency>
                        <dependency>
                            <groupId>com.sun.xml.ws</groupId>
                            <artifactId>jaxws-tools</artifactId>
                            <version>2.2</version>
                            <scope>system</scope>
                            <systemPath>${jeus.home}/lib/system/jaxws-tools.jar</systemPath>
                        </dependency>
                    </dependencies>
                </plugin>
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.3.2</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                        <encoding>UTF-8</encoding>
                        <compilerArguments>
                            <endorseddirs>${jeus.home}/lib/endorsed</endorseddirs>
                        </compilerArguments>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>


  • 실행 예제

    $ mvn -Djeus.home=${JEUS_HOME} process-classes
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building wsgen_sample 0.0.1
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ wsgen_sample ---
    [INFO] skip non existing resourceDirectory /jeus/wsgen/src/main/resources
    [INFO]
    [INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ wsgen_sample ---
    [INFO] Nothing to compile - all classes are up to date
    [INFO]
    [INFO] --- jeus-ws-maven-plugin:0.0.1:wsgen (wsgen_test) @ wsgen_sample ---
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 3.773s
    [INFO] ------------------------------------------------------------------------

5.5.2. wsimport

wsimport Plugin은 웹 서비스의 WSDL로부터 다음의 2개 중에 하나를 생성한다.

  • 클라이언트 측 웹 서비스의 Stub Java 소스 코드들

  • 서버 측 웹 서비스의 인터페이스 Java 소스 코드들

wsimport plugin은 JEUS_HOME/lib/client/jeus-ws-maven-plugin.jar으로 제공된다. wsimport plugin을 사용하기 위해서는 다음 작업이 선행되어야 한다.

  1. jeus-ws-maven-plugin.jar 파일을 로컬 Repository에 install한다.

  2. JDK 7 환경에서는 mavan option에 다음을 추가한다.

    -Djava.endorsed.dirs=JEUS_HOME/lib/endorsed

다음은 wsimport plugin 속성에 대한 설명이다.

속성설명

wsdlDirectory

Java 소스 파일을 생성하기 위해서 사용되는 WSDL 파일들을 포함한 디렉터리 경로를 설정한다. (기본값: ${basedir}/src/wsdl)

wsdlFiles

Local WSDL 파일 리스트를 설정한다. (String 타입)

wsdlUrls

External WSDL URL 리스트를 설정한다. (String 타입)

destDir

생성된 Java 파일이 놓일 디렉터리 경로를 설정한다.

(기본값: ${project.build.outputDirectory})

sourceDestDir

생성된 소스 파일들이 놓일 위치를 설정한다. 이 속성을 지정하면 keep 속성이 자동으로 설정된다. (기본값: ${project.build.directory}/generated-sources/wsimport)

keep

생성되는 파일들을 보존 여부를 설정한다. (기본값: true)

verbose

Verbose 출력은 true일 때 가능하다. (기본값: false)

bindingDirectory

JAX-WS 또는 JAXB 바인딩 파일들을 포함한 디렉터리 경로를 설정한다.

(기본값: ${basedir}/src/jaxws)

bindingFiles

JAX-WS 또는 JAXB 바인딩 파일 리스트를 설정한다. (String 타입)

extension

벤더 특정의 확장성을 설정할 때 사용한다. 상호 운용 및 이식성이 떨어질 수 있다. (기본값: false)

wsdlLocation

WSDL URI를 이 속성에 명시하면 그 URI 값이 생성되는 service end-point interface와 서비스 인터페이스의 @WebService.wsdlLocation Annotation과 @WebServiceClient.wsdlLocation Annotation에 설정된다.

catalog

TR9401, XCatalog, OASIS XML Catalog 형식과 같은 외부의 Entity 참조값을 설정할 수 있다. 또한 Ant xmlcatalog 타입을 사용할 수 있다.

packageName

WSDL의 모든 Namespace URI에 대한 Java 패키지 이름을 설정한다.

(String 타입)

target

이곳에 지정된 JAXWS 스펙 버전에 따라 코드를 생성한다. (String 타입)

quiet

출력 메시지들을 출력 여부를 설정한다. (기본값: false)

예제

다음은 pom.xml을 작성한 예제와 pom.xml을 통해 wsimport plugin을 실행하는 예제에 대한 설명이다.

  • pom.xml 작성 예제

    [예 5.10] wsimport plugin pom 파일 예제 : <pom.xml>

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>jeus.webservices.maven.sample</groupId>
        <artifactId>wsimport_sample</artifactId>
        <version>0.0.1</version>
        <packaging>war</packaging>
    
        <name>${project.artifactId}</name>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>jeus.ws</groupId>
                    <artifactId>jeus-ws-maven-plugin</artifactId>
                    <version>0.0.1</version>
                    <executions>
                        <execution>
                            <id>wsimport_test</id>
                            <goals>
                                <goal>wsimport</goal>
                            </goals>
                            <configuration>
                                <packageName>jeus.webservices.sample.test</packageName>
                                <wsdlDirectory>${basedir}/src/wsdl</wsdlDirectory>
                                <wsdlFiles>
                                    <wsdlFile>EchoService.wsdl</wsdlFile>
                                </wsdlFiles>
                            </configuration>
                        </execution>
                    </executions>
    
                    <dependencies>
                        <dependency>
                            <groupId>com.sun</groupId>
                            <artifactId>tools</artifactId>
                            <version>1.6</version>
                            <scope>system</scope>
                            <systemPath>${java.home}/../lib/tools.jar</systemPath>
                        </dependency>
                        <dependency>
                            <groupId>com.sun.xml.ws</groupId>
                            <artifactId>jaxws-tools</artifactId>
                            <version>2.2</version>
                            <scope>system</scope>
                            <systemPath>${jeus.home}/lib/system/jaxws-tools.jar</systemPath>
                        </dependency>
                    </dependencies>
                </plugin>
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.3.2</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                        <encoding>UTF-8</encoding>
                        <compilerArguments>
                            <endorseddirs>${jeus.home}/lib/endorsed</endorseddirs>
                        </compilerArguments>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>


  • 실행 예제

    $ mvn -Djeus.home=${JEUS_HOME} generate-sources
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building wsimport_sample 0.0.1
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] --- jeus-ws-maven-plugin:0.0.1:wsimport (wsimport_test) @ wsimport_sample ---
    [INFO] Processing: file:/jeus/wsimport/src/wsdl/EchoService.wsdl
    [INFO] jaxws:wsimport args: [-keep, -s, /jeus/wsimport/target/generated-sources/wsimport,
    -Xnocompile, -p, jeus.webservices.sample.test, file:/jues/wsimport/src/wsdl/EchoService.wsdl]
    parsing WSDL...
    
    
    
    Generating code...
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 2.052s
    [INFO] ------------------------------------------------------------------------

5.6. jeusadmin 명령어 실행

Ant Build 파일(일반적으로 build.xml)을 편집하여 jeusadmin 명령어를 실행하는 방법을 소개한다. 예제를 통해 Ant Target을 작성하는 방법을 설명한다.

예제

다음은 Ant를 사용하여 server-info 명령어 수행하는 예제이다.

<project name="check-server-state-example" default="check-server-state">
    <property environment="env"/>
    <property name="jeus.home" value="${env.JEUS_HOME}"/>
    <property name="jeus.home.bin" value="${jeus.home}/bin"/>
    <property name="unix.jeusadmin" value="${jeus.home.bin}/jeusadmin"/>
    <property name="windows.jeusadmin" value="${jeus.home.bin}/jeusadmin.cmd"/>
    <property name="jeusadmin.args" value="-u administrator -p jeus -host host1 -port 9736 -verbose"/>
    <property name="server.name" value="adminServer"/>
    <property name="cmd.target" value="server-info -server ${server.name} -state"/>

    <condition property="isWindows">
        <os family="windows"/>
    </condition>
    <condition property="isUnix">
        <os family="unix"/>
    </condition>

    <target name="check-server-state">
        <antcall target="check-server-state-unix"/>
        <antcall target="check-server-state-windows"/>
    </target>

    <target name="check-server-state-windows" if="isWindows">
        <echo>${windows.jeusadmin} ${jeusadmin.args} ${cmd.target}</echo>
        <exec executable="${windows.jeusadmin}" osfamily="windows" spawn="false"
              failonerror="true">
            <arg line="${jeusadmin.args}"/>
            <arg value="${cmd.target}"/>
        </exec>
    </target>

    <target name="check-server-state-unix" if="isUnix">
        <echo>${unix.jeusadmin} ${jeusadmin.args} ${cmd.target}</echo>
        <exec executable="${unix.jeusadmin}" osfamily="unix" spawn="false"
              failonerror="true">
            <arg line="${jeusadmin.args}"/>
            <arg value="${cmd.target}"/>
        </exec>
    </target>
</project>

예제를 UNIX 운영체제에서 실행한 결과는 다음과 같다.

JEUS_HOME/bin$jant check-server-state
Buildfile: JEUS_HOME/bin/build.xml

check-server-state:

check-server-state-unix:
     [echo] JEUS_HOME/bin/jeusadmin -u administrator -p jeus -host host1 -port 9736 -verbose server-info -server adminServer -state
     [exec] Verbose output is enabled.
     [exec] Attempting to connect to localhost:9736.
     [exec] The connection has been established to Domain Administration Server adminServer in the domain domain1.
     [exec] RUNNING
     [exec]

check-server-state-windows:

BUILD SUCCESSFUL
Total time: 1 second
JEUS_HOME/bin$

5.7. Maven Plugin

본 절에서는 JEUS Maven Plugin에 대해 설명한다. JEUS Maven Plugin을 사용하면 Apache Maven을 사용하여 JEUS 서버를 기동하거나, 애플리케이션을 배포하는 등과 같은 작업을 수행할 수 있다.

참고

본 절에서는 Apache Maven에 대한 기본적인 내용은 서술하지 않으며, 독자가 이미 Apache Maven에 대한 충분한 지식을 갖추고 있고, Apache Maven이 이미 정상적으로 설치되어 있다고 가정하고 설명을 진행한다. Apache Maven에 대한 사항은 http://maven.apache.org을 참고하도록 한다.

5.7.1. 설치

JEUS Maven Plugin을 사용하기 위해서는 플러그인을 설치하는 작업을 먼저 진행해야 한다.

JEUS Maven Plugin은 다음 경로에서 찾을 수 있다.

JEUS_HOME/lib/systemapps/jeus-maven-plugin.jar

설치 과정은 다음과 같다.

  1. jeus-maven-plugin.jar를 임의의 디렉터리에 복사한다(디렉터리 이름은 임의로 설정한다).

    mkdir /home/user1/jeus-maven-plugin
    cd /home/user1/jeus-maven-plugin
    cp JEUS_HOME/lib/systemapps/jeus-maven-plugin.jar /home1/user/jeus-maven-plugin
  2. 임의의 디렉터리로 이동한 후 jeus-maven-plugin.jar에 압축되어 있는 pom.xml을 푼다.

    jar xvf /home/user1/jeus-maven-plugin/jeus-maven-plugin META-INF/maven/com.tmax.jeus/jeus-maven-plugin/pom.xml
  3. 다음 명령어를 이용하여 JEUS Maven Plugin을 사용자의 maven local repository에 설치한다.

    mvn install:install-file -Dfile=/home/user1/jeus-maven-plugin/jeus-maven-plugin.jar -DpomFile=META-INF/maven/com.tmax.jeus/jeus-maven-plugin/pom.xml

5.7.2. Maven Plugin Goals

JEUS Maven Plugin에서 제공하는 goal들에 대해 설명한다.

5.7.2.1. start-master-xml

DAS(start-das)를 기동한다. 내부적으로는 JEUS_HOME/bin 아래에 있는 스크립트를 실행한다.

  • 사용법

    com.tmax.jeus:jeus-maven-plugin:start-master-xml
  • 매개변수

    아래 매개변수 중 user와 password, filename은 필수 입력항목이 아니지만, user/password 또는 filename 중 하나는 반드시 설정해야 한다.

    매개변수 이름프로퍼티 이름타입설명

    jeusHome

    jeus.home

    java.lang.String

    JEUS가 설치되어 있는 경로를 설정한다.

    (필수 입력항목)

    host

    jeus.server.host

    java.lang.String

    DAS의 host address를 설정한다.

    (필수 입력항목)

    port

    jeus.server.port

    java.lang.Integer

    DAS의 포트 번호를 설정한다. (필수 입력항목)

    user

    jeus.user.name

    java.lang.String

    JEUS 사용자 이름을 설정한다.

    password

    jeus.user.password

    java.lang.String

    JEUS 사용자 비밀번호를 설정한다.

    domain

    jeus.domain.name

    java.lang.String

    DAS가 속한 domain 이름을 설정한다.

    (필수 입력항목)

    server

    jeus.server.name

    java.lang.String

    DAS 이름을 설정한다. (필수 입력항목)

    filename

    jeus.auth.file

    java.lang.String

    JEUS 인증할 때 사용할 계정 정보 파일을 설정한다. startDomainAdminServer 스크립트에서 제공하는 f 옵션과 동일하다.

    waitingTime

    jeus.boot.timeout

    java.lang.Integer

    JEUS를 기동시키고 난 후 플러그인에서는 일정 시간 동안 기다리면서 서버가 제대로 기동되었는지 여부를 검사하여 goal이 성공적으로 수행되었는지 여부를 판단한다. 이때 얼마나 기다릴지 설정하는 값이다. (단위: 초, 기본값: 10초)

    cachelogin

    jeus.server.start.cachelogin

    boolean

    기동할 때 사용한 인증 정보를 저장할지 여부를 설정한다. (기본값: false)

    force

    jeus.server.start.forced

    boolean

    기동할 때 설정되어 있는 애플리케이션이 모두 RUNNING 상태가 되지 않더라도 부팅이 완료되게 한다. (기본값: false)

    rolling

    jeus.server.start.rolling

    boolean

    Rolling patch 기능 사용 여부를 설정한다.

    (기본값: false)

    verbose

    jeus.server.start.verbose

    boolean

    상세 출력 사용 여부를 설정한다.

    (기본값: false)

    standby

    jeus.server.start.standby

    boolean

    Standby booting 사용 여부를 설정한다.

    (기본값: false)

  • 예제

    매개변수는 pom.xml에 설정하거나 command line에서 실행할 때 지정할 수 있다.

    다음은 pom.xml에 설정을 한 예제이다.

    <!-- JEUS Maven Plugin - start-das -->
    <plugin>
        <groupId>com.tmax.jeus</groupId>
        <artifactId>jeus-maven-plugin</artifactId>
        <version>8.0.0.0</version>
        <configuration>
          <jeusHome>/home/user1/jeus</jeusHome>
        <host>host1</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <domain>domain1</domain>
        <server>adminServer</server>
      </configuration>
    </plugin>

    goal을 실행하였을 경우 출력되는 결과는 다음과 같다.

    $ mvn com.tmax.jeus:jeus-maven-plugin:start-master-xml
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< com.tmax.jeus:jeus-maven-plugin >-------------------
    [INFO] Building JEUS Maven Plugin 8.0.0.0
    [INFO] ----------------------------[ maven-plugin ]----------------------------
    [INFO]
    [INFO] --- jeus-maven-plugin:8.0.0.0:start-master-xml (default-cli) @ jeus-maven-plugin ---
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  30.857 s
    [INFO] Finished at: 2022-08-30T07:52:10+09:00
    [INFO] ------------------------------------------------------------------------

5.7.2.2. start-ms-xml

MS를 기동한다. 내부적으로는 JEUS_HOME/bin 아래에 있는 스크립트를 실행한다.

  • 사용법

    com.tmax.jeus:jeus-maven-plugin:start-ms-xml
  • 매개변수

    아래 매개변수 중 user와 password, filename은 필수 입력항목이 아니지만, user/password 또는 filename 중 하나는 반드시 설정해야 한다.

    매개변수 이름프로퍼티 이름타입설명

    jeusHome

    jeus.home

    java.lang.String

    JEUS가 설치되어 있는 경로를 설정한다.

    (필수 입력항목)

    host

    jeus.server.host

    java.lang.String

    DAS의 host address를 설정한다.

    (필수 입력항목)

    port

    jeus.server.port

    java.lang.Integer

    DAS의 포트 번호를 설정한다. (필수 입력항목)

    user

    jeus.user.name

    java.lang.String

    JEUS 사용자 이름을 설정한다.

    password

    jeus.user.password

    java.lang.String

    JEUS 사용자 비밀번호를 설정한다.

    domain

    jeus.domain.name

    java.lang.String

    DAS가 속한 domain 이름을 설정한다.

    (필수 입력항목)

    server

    jeus.server.name

    java.lang.String

    DAS 이름을 설정한다. (필수 입력항목)

    filename

    jeus.auth.file

    java.lang.String

    JEUS를 인증할 때 사용할 계정 정보 파일을 설정한다. startDomainAdminServer 스크립트에서 제공하는 f 옵션과 동일하다.

    waitingTime

    jeus.boot.timeout

    java.lang.Integer

    JEUS를 기동시키고 난 후 플러그인에서는 일정 시간 동안 기다리면서 서버가 제대로 기동되었는지 여부를 검사하여 goal이 성공적으로 수행되었는지 여부를 판단한다. 이때 얼마나 기다릴지 설정하는 값이다. (단위: 초, 기본값: 10초)

    cachelogin

    jeus.server.start.cachelogin

    boolean

    기동할 때 사용한 인증 정보를 저장할지 여부를 설정한다. (기본값: false)

    force

    jeus.server.start.forced

    boolean

    기동할 때 설정되어 있는 애플리케이션이 모두 RUNNING 상태가 되지 않더라도 부팅이 완료되게 한다. (기본값: false)

    rolling

    jeus.server.start.rolling

    boolean

    Rolling patch 기능 사용 여부를 설정한다.

    (기본값: false)

    verbose

    jeus.server.start.verbose

    boolean

    상세 출력 사용 여부를 설정한다. (기본값: false)

    standby

    jeus.server.start.standby

    boolean

    Standby booting 사용 여부를 설정한다.

    (기본값: false)

    dasurl

    jeus.server.start.dasurl

    java.lang.String

    MS가 속한 domain을 관리하는 DAS의 url을 설정한다. (필수 입력항목)

  • 예제

    매개변수는 pom.xml에 설정하거나 command line에서 실행할 때 지정할 수 있다.

    다음은 pom.xml에 설정을 한 예제이다.

    <!-- JEUS Maven Plugin - start-ms -->
    <plugin>
      <groupId>com.tmax.jeus</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>8.0.0.0</version>
      <configuration>
        <jeusHome>/home/user1/jeus</jeusHome>
        <host>host1</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <domain>domain1</domain>
        <server>server1</server>
        <dasurl>host1:9736</dasurl>
      </configuration>
    </plugin>

    goal을 실행하였을 경우 출력되는 결과는 다음과 같다.

    $ mvn jeus.tool:jeus-maven-plugin:start-ms
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< com.tmax.jeus:jeus-maven-plugin >-------------------
    [INFO] Building JEUS Maven Plugin 8.0.0.0
    [INFO] ----------------------------[ maven-plugin ]----------------------------
    [INFO]
    [INFO] --- jeus-maven-plugin:8.0.0.0:start-ms-xml (default-cli) @ jeus-maven-plugin ---
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  6.174 s
    [INFO] Finished at: 2022-08-30T08:13:58+09:00
    [INFO] ------------------------------------------------------------------------

5.7.2.3. stop-jeus

접속한 서버를 종료시킨다. 내부적으로는 콘솔 툴(jeusadmin)에서 제공하는 one-step execution 기능을 사용하여 local-shutdown 명령어를 실행한다.

  • 사용법

    com.tmax.jeus:jeus-maven-plugin:stop-jeus
  • 매개변수

    매개변수 이름프로퍼티 이름타입설명

    jeusHome

    jeus.home

    java.lang.String

    JEUS가 설치되어 있는 경로를 설정한다.

    (필수 입력항목)

    host

    jeus.server.host

    java.lang.String

    jeusadmin으로 접속할 서버의 주소이다.

    (필수 입력항목)

    port

    jeus.server.port

    java.lang.Integer

    jeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)

    user

    jeus.user.name

    java.lang.String

    JEUS 사용자 이름을 설정한다.

    (필수 입력항목)

    password

    jeus.user.password

    java.lang.String

    JEUS 사용자 비밀번호를 설정한다.

    (필수 입력항목)

    args

    없음

    java.util.List

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.

    arg

    jeus.jeusadmin.command.arguments

    java.lang.String

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.

  • 예제

    매개변수는 pom.xml에 설정하거나 command line에서 실행할 때 지정할 수 있다.

    다음은 pom.xml에 설정을 한 예제이다.

    <!-- JEUS Maven Plugin - stop-jeus -->
    <plugin>
      <groupId>com.tmax.jeus</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>8.0.0.0</version>
      <configuration>
        <jeusHome>/home/user1/jeus</jeusHome>
        <host>host1</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
      </configuration>
    </plugin>

    goal을 실행하였을 경우 일반적으로 출력되는 결과는 다음과 같다.

    $ mvn jeus.tool:jeus-maven-plugin:stop-jeus
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< com.tmax.jeus:jeus-maven-plugin >-------------------
    [INFO] Building JEUS Maven Plugin 8.0.0.0
    [INFO] ----------------------------[ maven-plugin ]----------------------------
    [INFO]
    [INFO] --- jeus-maven-plugin:8.0.0.0:stop-jeus (default-cli) @ jeus-maven-plugin ---
    [INFO] jeus.home = D:\gitWorkspace\jeus21\target\jeus
    [INFO] jeusadmin.path = D:\gitWorkspace\jeus21\target\jeus\bin\jeusadmin.cmd
    [INFO] jeusadmin.one-step-execution-command = [local-shutdown]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to JEUS Master Server [adminServer] in the domain [domain1].
    [INFO] The server [adminServer] has been shut down successfully.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  4.381 s
    [INFO] Finished at: 2022-08-30T08:18:08+09:00
    [INFO] ------------------------------------------------------------------------

5.7.2.4. deploy

애플리케이션을 deploy한다. 내부적으로는 콘솔 툴(jeusadmin)에서 제공하는 one-step execution 기능을 사용하여 deploy-application 명령어를 실행한다.

  • 사용법

    com.tmax.jeus:jeus-maven-plugin:deploy
  • 매개변수

    매개변수 이름프로퍼티 이름타입설명

    jeusHome

    jeus.home

    java.lang.String

    JEUS가 설치되어 있는 경로를 설정한다.

    (필수 입력항목)

    host

    jeus.server.host

    java.lang.String

    jeusadmin으로 접속할 서버의 주소이다.

    (필수 입력항목)

    port

    jeus.server.port

    java.lang.Integer

    jeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)

    user

    jeus.user.name

    java.lang.String

    JEUS 사용자 이름을 설정한다.

    (필수 입력항목)

    password

    jeus.user.password

    java.lang.String

    JEUS 사용자 비밀번호를 설정한다.

    (필수 입력항목)

    args

    없음

    java.util.List

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.

    arg

    jeus.jeusadmin.command.arguments

    java.lang.String

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.

  • 예제

    매개변수는 pom.xml에 설정하거나 command line에서 실행할 때 지정할 수 있다.

    다음은 pom.xml에 설정을 한 예제이다.

    <!-- JEUS Maven Plugin - deploy -->
    <plugin>
      <groupId>com.tmax.jeus</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>8.0.0.0</version>
      <configuration>
        <jeusHome>/home/user1/jeus</jeusHome>
        <host>host1</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <args>
          <param>myWeb</param>
          <param>-servers adminServer</param>
        </args>
      </configuration>
    </plugin>

    goal을 실행하였을 경우 일반적으로 출력되는 결과는 다음과 같다.

    $ mvn jeus.tool:jeus-maven-plugin:deploy
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< com.tmax.jeus:jeus-maven-plugin >-------------------
    [INFO] Building JEUS Maven Plugin 8.0.0.0
    [INFO] ----------------------------[ maven-plugin ]----------------------------
    [INFO]
    [INFO] --- jeus-maven-plugin:8.0.0.0:deploy (default-cli) @ jeus-maven-plugin ---
    [INFO] jeus.home = D:\gitWorkspace\jeus21\target\jeus
    [INFO] jeusadmin.path = D:\gitWorkspace\jeus21\target\jeus\bin\jeusadmin.cmd
    [INFO] jeusadmin.one-step-execution-command = [deploy-application servlet]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to JEUS Master Server [adminServer] in the domain [domain1].
    [INFO] deploy the application for the application [servlet] failed. : The target for the application [servlet] is not specified.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  1.217 s
    [INFO] Finished at: 2022-08-30T08:25:29+09:00
    [INFO] ------------------------------------------------------------------------

5.7.2.5. undeploy

deploy했던 애플리케이션을 undeploy한다. 내부적으로는 콘솔 툴(jeusadmin)에서 제공하는 one-step execution 기능을 사용하여 undeploy-application 명령어를 실행한다.

  • 사용법

    com.tmax.jeus:jeus-maven-plugin:undeploy
  • 매개변수

    매개변수 이름프로퍼티 이름타입설명

    jeusHome

    jeus.home

    java.lang.String

    JEUS가 설치되어 있는 경로를 설정한다.

    (필수 입력항목)

    host

    jeus.server.host

    java.lang.String

    jeusadmin으로 접속할 서버의 주소이다.

    (필수 입력항목)

    port

    jeus.server.port

    java.lang.Integer

    jeusadmin으로 접속할 서버의 포트 번호이다.

    (기본값: 9736, 필수 입력항목)

    user

    jeus.user.name

    java.lang.String

    JEUS 사용자 이름을 설정한다. (필수 입력항목)

    password

    jeus.user.password

    java.lang.String

    JEUS 사용자 비밀번호를 설정한다.

    (필수 입력항목)

    args

    없음

    java.util.List

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.

    arg

    jeus.jeusadmin.command.arguments

    java.lang.String

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.

  • 예제

    매개변수는 pom.xml에 설정하거나 command line에서 실행할 때 지정할 수 있다.

    다음은 pom.xml에 설정을 한 예제이다.

    <!-- JEUS Maven Plugin - undeploy -->
    <plugin>
      <groupId>com.tmax.jeus</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>8.0.0.0</version>
      <configuration>
        <jeusHome>/home/user1/jeus</jeusHome>
        <host>host1</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <args>
          <param>myWeb</param>
        </args>
      </configuration>
    </plugin>

    goal을 실행하였을 경우 일반적으로 출력되는 결과는 다음과 같다.

    $ mvn com.tmax.jeus:jeus-maven-plugin:undeploy
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< com.tmax.jeus:jeus-maven-plugin >-------------------
    [INFO] Building JEUS Maven Plugin 8.0.0.0
    [INFO] ----------------------------[ maven-plugin ]----------------------------
    [INFO]
    [INFO] --- jeus-maven-plugin:8.0.0.0:undeploy (default-cli) @ jeus-maven-plugin ---
    [INFO] jeus.home = D:\gitWorkspace\jeus21\target\jeus
    [INFO] jeusadmin.path = D:\gitWorkspace\jeus21\target\jeus\bin\jeusadmin.cmd
    [INFO] jeusadmin.one-step-execution-command = [undeploy-application servlet]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to JEUS Master Server [adminServer] in the domain [domain1].
    [INFO] Undeploying [servlet] (This may take time due to graceful undeployment) ..........
    [INFO] undeploy the application for the application [servlet] succeeded.
    [INFO] successfully undeployed (elapsed = 282ms)
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  1.459 s
    [INFO] Finished at: 2022-08-30T08:24:50+09:00
    [INFO] ------------------------------------------------------------------------

5.7.2.6. start-app

deploy한 애플리케이션의 서비스를 시작한다. 내부적으로는 콘솔 툴(jeusadmin)에서 제공하는 one-step execution 기능을 사용하여 start-application 명령어를 실행한다.

  • 사용법

    com.tmax.jeus:jeus-maven-plugin:start-app
  • 매개변수

    매개변수 이름프로퍼티 이름타입설명

    jeusHome

    jeus.home

    java.lang.String

    JEUS가 설치되어 있는 경로를 설정한다.

    (필수 입력항목)

    host

    jeus.server.host

    java.lang.String

    jeusadmin으로 접속할 서버의 주소이다.

    (필수 입력항목)

    port

    jeus.server.port

    java.lang.Integer

    jeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)

    user

    jeus.user.name

    java.lang.String

    JEUS 사용자 이름을 설정한다. (필수 입력항목)

    password

    jeus.user.password

    java.lang.String

    JEUS 사용자 비밀번호를 설정한다.

    (필수 입력항목)

    args

    없음

    java.util.List

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.

    arg

    jeus.jeusadmin.command.arguments

    java.lang.String

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.

  • 예제

    매개변수는 pom.xml에 설정하거나 command line에서 실행할 때 지정할 수 있다.

    다음은 pom.xml에 설정을 한 예제이다.

    <!-- JEUS Maven Plugin - start-app -->
    <plugin>
      <groupId>com.tmax.jeus</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>8.0.0.0</version>
      <configuration>
        <jeusHome>/home/user1/jeus</jeusHome>
        <host>host1</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <args>
          <param>myWeb</param>
        </args>
      </configuration>
    </plugin>

    goal을 실행하였을 경우 일반적으로 출력되는 결과는 다음과 같다.

    $ mvn com.tmax.jeus:jeus-maven-plugin:start-app
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< com.tmax.jeus:jeus-maven-plugin >-------------------
    [INFO] Building JEUS Maven Plugin 8.0.0.0
    [INFO] ----------------------------[ maven-plugin ]----------------------------
    [INFO]
    [INFO] --- jeus-maven-plugin:8.0.0.0:start-app (default-cli) @ jeus-maven-plugin ---
    [INFO] jeus.home = D:\gitWorkspace\jeus21\target\jeus
    [INFO] jeusadmin.path = D:\gitWorkspace\jeus21\target\jeus\bin\jeusadmin.cmd
    [INFO] jeusadmin.one-step-execution-command = [start-application servlet]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to JEUS Master Server [adminServer] in the domain [domain1].
    [INFO] start the application for the application [servlet] failed. : Changing the state of the application [servlet] from [INSTALLED] to [STARTING] is not possible with the operation [start].
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  1.212 s
    [INFO] Finished at: 2022-08-30T08:28:45+09:00
    [INFO] ------------------------------------------------------------------------

5.7.2.7. stop-app

서비스 중인 애플리케이션을 정지시킨다. 내부적으로는 콘솔 툴(jeusadmin)에서 제공하는 one-step execution 기능을 사용하여 stop-application 명령어를 실행한다.

  • 사용법

    com.tmax.jeus:jeus-maven-plugin:stop-app
  • 매개변수

    매개변수 이름프로퍼티 이름타입설명

    jeusHome

    jeus.home

    java.lang.String

    JEUS가 설치되어 있는 경로를 설정한다.

    (필수 입력항목)

    host

    jeus.server.host

    java.lang.String

    jeusadmin으로 접속할 서버의 주소이다.

    (필수 입력항목)

    port

    jeus.server.port

    java.lang.Integer

    jeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)

    user

    jeus.user.name

    java.lang.String

    JEUS 사용자 이름을 설정한다. (필수 입력항목)

    password

    jeus.user.password

    java.lang.String

    JEUS 사용자 비밀번호를 설정한다.

    (필수 입력항목)

    args

    없음

    java.util.List

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.

    arg

    jeus.jeusadmin.command.arguments

    java.lang.String

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.

  • 예제

    매개변수는 pom.xml에 설정하거나 command line에서 실행할 때 지정할 수 있다.

    다음은 pom.xml에 설정을 한 예제이다.

    <!-- JEUS Maven Plugin - stop-app -->
    <plugin>
      <groupId>com.tmax.jeus</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>8.0.0.0</version>
      <configuration>
        <jeusHome>/home/user1/jeus</jeusHome>
        <host>host1</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <args>
          <param>myWeb</param>
        </args>
      </configuration>
    </plugin>

    goal을 실행하였을 경우 일반적으로 출력되는 결과는 다음과 같다.

    $ mvn com.tmax.jeus:jeus-maven-plugin:stop-app
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< com.tmax.jeus:jeus-maven-plugin >-------------------
    [INFO] Building JEUS Maven Plugin 8.0.0.0
    [INFO] ----------------------------[ maven-plugin ]----------------------------
    [INFO]
    [INFO] --- jeus-maven-plugin:8.0.0.0:stop-app (default-cli) @ jeus-maven-plugin ---
    [INFO] jeus.home = D:\gitWorkspace\jeus21\target\jeus
    [INFO] jeusadmin.path = D:\gitWorkspace\jeus21\target\jeus\bin\jeusadmin.cmd
    [INFO] jeusadmin.one-step-execution-command = [stop-application servlet]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to JEUS Master Server [adminServer] in the domain [domain1].
    [INFO] stop the application for the application [servlet] failed. : Changing the state of the application [servlet] from [INSTALLED] to [STOPPING] is not possible with the operation [stop].
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  1.233 s
    [INFO] Finished at: 2022-08-30T08:29:10+09:00
    [INFO] ------------------------------------------------------------------------

5.7.2.8. install-app

애플리케이션을 DAS에 설치한다. 내부적으로는 콘솔 툴(jeusadmin)에서 제공하는 one-step execution 기능을 사용하여 install-application 명령어를 실행한다.

  • 사용법

    com.tmax.jeus:jeus-maven-plugin:install-app
  • 매개변수

    매개변수 이름프로퍼티 이름타입설명

    jeusHome

    jeus.home

    java.lang.String

    JEUS가 설치되어 있는 경로를 설정한다.

    (필수 입력항목)

    host

    jeus.server.host

    java.lang.String

    jeusadmin으로 접속할 서버의 주소이다.

    (필수 입력항목)

    port

    jeus.server.port

    java.lang.Integer

    jeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)

    user

    jeus.user.name

    java.lang.String

    JEUS 사용자 이름을 설정한다. (필수 입력항목)

    password

    jeus.user.password

    java.lang.String

    JEUS 사용자 비밀번호를 설정한다.

    (필수 입력항목)

    args

    없음

    java.util.List

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.

    arg

    jeus.jeusadmin.command.arguments

    java.lang.String

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.

  • 예제

    매개변수는 pom.xml에 설정하거나 command line에서 실행할 때 지정할 수 있다.

    다음은 pom.xml에 설정을 한 예제이다.

    <!-- JEUS Maven Plugin - install-app -->
    <plugin>
      <groupId>com.tmax.jeus</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>8.0.0.0</version>
      <configuration>
        <jeusHome>/home/user1/jeus</jeusHome>
        <host>host1</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <args>
          <param>/home/user/myWeb.war</param>
          <param>-id myWeb</param>
        </args>
      </configuration>
    </plugin>

    goal을 실행하였을 경우 일반적으로 출력되는 결과는 다음과 같다.

    $ mvn com.tmax.jeus:jeus-maven-plugin:install-app
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< com.tmax.jeus:jeus-maven-plugin >-------------------
    [INFO] Building JEUS Maven Plugin 8.0.0.0
    [INFO] ----------------------------[ maven-plugin ]----------------------------
    [INFO]
    [INFO] --- jeus-maven-plugin:8.0.0.0:install-app (default-cli) @ jeus-maven-plugin ---
    [INFO] jeus.home = D:\gitWorkspace\jeus21\target\jeus
    [INFO] jeusadmin.path = D:\gitWorkspace\jeus21\target\jeus\bin\jeusadmin.cmd
    [INFO] jeusadmin.one-step-execution-command = [install-application D:\Tmax_Issue_Stuff\testAPPS_jdk\j8\recent\JDBCTransactionPropagationTester_Caller.war]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to JEUS Master Server [adminServer] in the domain [domain1].
    [INFO] Successfully installed the application [JDBCTransactionPropagationTester_Caller_war].
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  2.348 s
    [INFO] Finished at: 2022-08-30T08:40:40+09:00
    [INFO] ------------------------------------------------------------------------

5.7.2.9. uninstall-app

DAS에 설치되어 있는 애플리케이션을 제거한다. 내부적으로는 콘솔 툴(jeusadmin)에서 제공하는 one-step execution 기능을 사용하여 uninstall-application 명령어를 실행한다.

  • 사용법

    com.tmax.jeus:jeus-maven-plugin:uninstall-app
  • 매개변수

    매개변수 이름프로퍼티 이름타입설명

    jeusHome

    jeus.home

    java.lang.String

    JEUS가 설치되어 있는 경로를 설정한다.

    (필수 입력항목)

    host

    jeus.server.host

    java.lang.String

    jeusadmin으로 접속할 서버의 주소이다.

    (필수 입력항목)

    port

    jeus.server.port

    java.lang.Integer

    jeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)

    user

    jeus.user.name

    java.lang.String

    JEUS 사용자 이름을 설정한다. (필수 입력항목)

    password

    jeus.user.password

    java.lang.String

    JEUS 사용자 비밀번호를 설정한다.

    (필수 입력항목)

    args

    없음

    java.util.List

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.

    arg

    jeus.jeusadmin.command.arguments

    java.lang.String

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.

  • 예제

    매개변수는 pom.xml에 설정하거나 command line에서 실행할 때 지정할 수 있다.

    다음은 pom.xml에 설정을 한 예제이다.

    <!-- JEUS Maven Plugin - uninstall-app -->
    <plugin>
      <groupId>com.tmax.jeus</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>8.0.0.0</version>
      <configuration>
        <jeusHome>/home/user1/jeus</jeusHome>
        <host>host1</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <args>
          <param>myWeb</param>
        </args>
      </configuration>
    </plugin>

    goal을 실행하였을 경우 일반적으로 출력되는 결과는 다음과 같다.

    $ mvn com.tmax.jeus:jeus-maven-plugin:uninstall-app
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< com.tmax.jeus:jeus-maven-plugin >-------------------
    [INFO] Building JEUS Maven Plugin 8.0.0.0
    [INFO] ----------------------------[ maven-plugin ]----------------------------
    [INFO]
    [INFO] --- jeus-maven-plugin:8.0.0.0:uninstall-app (default-cli) @ jeus-maven-plugin ---
    [INFO] jeus.home = D:\gitWorkspace\jeus21\target\jeus
    [INFO] jeusadmin.path = D:\gitWorkspace\jeus21\target\jeus\bin\jeusadmin.cmd
    [INFO] jeusadmin.one-step-execution-command = [uninstall-application servlet]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to JEUS Master Server [adminServer] in the domain [domain1].
    [INFO] uninstall the application for the application [servlet] succeeded. : Successfully deleted [servlet].
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  1.178 s
    [INFO] Finished at: 2022-08-30T08:32:19+09:00
    [INFO] ------------------------------------------------------------------------

5.7.2.10. jeusadmin

지정한 jeusadmin 명령어를 실행한다. 내부적으로는 콘솔 툴(jeusadmin)에서 제공하는 one-step execution 기능을 사용한다.

  • 사용법

    com.tmax.jeus:jeus-maven-plugin:jeusadmin
  • 매개변수

    매개변수 이름프로퍼티 이름타입설명

    jeusHome

    jeus.home

    java.lang.String

    JEUS가 설치되어 있는 경로를 설정한다.

    (필수 입력항목)

    host

    jeus.server.host

    java.lang.String

    jeusadmin으로 접속할 서버의 주소이다.

    (필수 입력항목)

    port

    jeus.server.port

    java.lang.Integer

    jeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)

    user

    jeus.user.name

    java.lang.String

    JEUS 사용자 이름을 설정한다. (필수 입력항목)

    password

    jeus.user.password

    java.lang.String

    JEUS 사용자 비밀번호를 설정한다.

    (필수 입력항목)

    args

    없음

    java.util.List

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.

    arg

    jeus.jeusadmin.command.arguments

    java.lang.String

    명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.

    command

    jeus.jeusadmin.command

    java.lang.String

    실행할 jeusadmin 명령어 이름을 설정한다.

    (필수 입력항목)

  • 예제

    매개변수는 pom.xml에 설정하거나 command line에서 실행할 때 지정할 수 있다.

    다음은 pom.xml에 설정을 한 예제이며, 수행할 명령어는 server-info -server adminServer -state이다.

    <!-- JEUS Maven Plugin - jeusadmin -->
    <plugin>
      <groupId>com.tmax.jeus</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>8.0.0.0</version>
      <configuration>
        <jeusHome>/home/user1/jeus</jeusHome>
        <host>host1</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <command>server-info</command>
        <args>
          <param>-server adminServer</param>
          <param>-state</param>
        </args>
      </configuration>
    </plugin>

    goal을 실행하였을 경우 출력되는 결과는 다음과 같다.

    $ mvn com.tmax.jeus:jeus-maven-plugin:jeusadmin
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< com.tmax.jeus:jeus-maven-plugin >-------------------
    [INFO] Building JEUS Maven Plugin 8.0.0.0
    [INFO] ----------------------------[ maven-plugin ]----------------------------
    [INFO]
    [INFO] --- jeus-maven-plugin:8.0.0.0:jeusadmin (default-cli) @ jeus-maven-plugin ---
    [INFO] jeus.home = D:\gitWorkspace\jeus21\target\jeus
    [INFO] jeusadmin.path = D:\gitWorkspace\jeus21\target\jeus\bin\jeusadmin.cmd
    [INFO] jeusadmin.one-step-execution-command = [server-info]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to JEUS Master Server [adminServer] in the domain [domain1].
    [INFO] Information about Domain (domain1)
    [INFO] ================================================================================
    [INFO] +--------+--------+-----+-----+-----+------------+--------+-----------+--------+
    [INFO] | Server | Status |Node | PID | Clu |   Latest   |  Need  |   Listen  |Running |
    [INFO] |        |        |Name |     |ster | Start Time |   to   |   Ports   |Engines |
    [INFO] |        |        |     |     |     | / Shutdown |Restart |           |        |
    [INFO] |        |        |     |     |     |    Time    |        |           |        |
    [INFO] +--------+--------+-----+-----+-----+------------+--------+-----------+--------+
    [INFO] | adminS | RUNNIN | nod | 153 | N/A | 2022-08-30 | false  | base-0.0. | jms,   |
    [INFO] |erver   |G(00:21 |e1   |076  |     | (화) 오전   |        |0.0:9736   |web, ejb|
    [INFO] |(*)     |:55)    |     |     |     |08:19:43 KST|        | http-serv |        |
    [INFO] |        |        |     |     |     |            |        |er-0.0.0.0 |        |
    [INFO] |        |        |     |     |     |            |        |:8088      |        |
    [INFO] +--------+--------+-----+-----+-----+------------+--------+-----------+--------+
    [INFO] | server1| FAILED | N/A | N/A | N/A | N/A        | N/A    | N/A       | N/A    |
    [INFO] |        |(00:21: |     |     |     |            |        |           |        |
    [INFO] |        |09)     |     |     |     |            |        |           |        |
    [INFO] +--------+--------+-----+-----+-----+------------+--------+-----------+--------+
    [INFO] | server2| SHUTDO | N/A | N/A | cds1| 2022-08-30 | N/A    | N/A       | N/A    |
    [INFO] |        |WN      |     |     |     | (화) 오전   |        |           |        |
    [INFO] |        |        |     |     |     |08:19:43 KST|        |           |        |
    [INFO] +--------+--------+-----+-----+-----+------------+--------+-----------+--------+
    [INFO] | server3| SHUTDO | N/A | N/A | cds1| 2022-08-30 | N/A    | N/A       | N/A    |
    [INFO] |        |WN      |     |     |     | (화) 오전   |        |           |        |
    [INFO] |        |        |     |     |     |08:19:43 KST|        |           |        |
    [INFO] +--------+--------+-----+-----+-----+------------+--------+-----------+--------+
    [INFO] ================================================================================
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  1.236 s
    [INFO] Finished at: 2022-08-30T08:41:39+09:00
    [INFO] ------------------------------------------------------------------------