제5장 Ant Task

내용 목차

5.1. 개요
5.2. Setup Ant Task
5.2.1. create-domain
5.3. 서버 제어 Ant Task
5.3.1. boot
5.3.2. down
5.3.3. 실행하기
5.4. EJB Ant Task
5.4.1. appcompiler
5.4.2. ejbddinit
5.5. 웹 서비스 Ant Task
5.5.1. java2wsdl
5.5.2. wsdl2java
5.5.3. wsgen
5.5.4. wsimport
5.5.5. xjc
5.5.6. schemagen
5.6. 웹 서비스 Maven Plugin
5.6.1. wsgen
5.6.2. wsimport
5.7. jeusadmin 명령어 실행
5.8. Maven Plugin
5.8.1. 설치
5.8.2. Maven Plugin Goals

본 장에서는 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에 추가해야 한다. 프로젝트의 속성들은 <project>의 하위에 정의하며, "${property-name}"의 표현식을 통해 프로젝트 내에서 속성 값들을 사용할 수 있다.

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

주의

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의 값을 이용하게 되므로 원하는 동작과 다르게 동작할 수 있다.

또한 JEUS에서는 jant 스크립트를 제공하며, ant를 사용하기 위한 설정값들이 같이 포함되어 제공된다. ant의 설정이 제대로 되지 않은 경우 정상적으로 동작하지 않는 상황이 있을수 있으니, jant를 사용하기를 권장한다.

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)
servernameDAS의 이름이다. (기본값: adminServer)
nodenameDAS에서 사용하는 node 이름이다. (기본값: node1)
jeus.addressDAS의 기본 동작 주소이다. (기본값: 0.0.0.0 )
jeus.portDAS의 기본 동작 포트이다. (기본값: 9736)
jms.portDAS의 JMS 동작 포트이다. (기본값: 9741)
http.portDAS의 HTTP 동작 포트이다. (기본값: 8808)
jvm.configDAS의 JVM 설정이다. (기본값: -Xmx1024m -XX:MaxPermSize=128m)
jeus.username도메인의 관리 계정 이름이다. 도메인의 관리 계정 이름으로 반드시 변경할 것을 권장한다. (기본값: administrator)
jeus.password도메인의 관리 계정 패스워드로 평문으로는 jeus이며 base64로 인코딩된 값이다. Ant 설정을 통해 변경하거나 jeusadmin의 set-password 명령을 통해 반드시 변경할 것을 권장한다. (기본값: {base64}amV1cw==)
usevirtualmulticastGMS를 사용할 때 TCP 통신을 이용한 가상 멀티캐스트를 사용할지 여부를 설정한다. true 또는 false로 입력한다. (기본값: false)
heartbeataddress

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

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

heartbeatport

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

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

예제

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

도메인의 이름은 'domain1', DAS의 이름은 'adminServer', DAS의 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/bin
    [mkdir] Created dir: JEUS_HOME/domains/domain1/config
    [mkdir] Created dir: JEUS_HOME/domains/domain1/data
    [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 1 file to JEUS_HOME/domains/domain1/config
     [copy] Copying 2 files 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
     [java] heart beat address has been set : 230.30.1.1
     [java] heart beat port has been set : 3030
     [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/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: 6 seconds
JEUS_HOME/setup$ 

5.3. 서버 제어 Ant Task

본 절에서는 서버를 제어하는 Ant Task를 설명한다.

5.3.1. boot

boot Task는 서버를 기동한다. boot Task를 통해 서버를 기동할 때에는 노드 매니저로 명령을 보내 노드 매니저에서 해당 서버를 기동한다. 따라서 반드시 노드 매니저가 기동된 상태여야 한다.

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

속성설명
domainName기동할 서버가 속한 도메인 이름을 설정한다. (필수 입력항목)
serverName기동할 서버의 이름을 설정한다. (필수 입력항목)
host노드매니저에 접속할 Host를 설정한다. (필수 입력항목)
port노드 매니저에 접속할 Port를 설정한다. (필수 입력항목)
connectionType노드 매니저에 접속할 connection type을 설정한다. ssl, plain 중 하나로 설정할 수 있다.
truststorePath노드 매니저가 ssl type으로 기동되어 있는 경우 노드 매니저 접속을 위해 인증하는 데 필요한 Truststore 파일의 경로를 설정한다.
truststorePassword노드 매니저가 ssl type으로 기동되어 있는 경우 노드 매니저 접속을 위해 인증하는 데 필요한 Truststore 파일의 패스워드를 설정한다.
adminServer기동할 서버가 DAS인지 MS인지 여부를 설정한다. (필수 입력항목)
force서버를 기동할 때 deploy 실패 등의 이유로 인해 서버가 STANDBY 상태에 머무르는 경우 서버를 강제로 RUNNING 상태로 만들어 줄지 여부를 설정한다.
standby서버를 STANDBY 상태까지만 기동한다.
username서버를 기동할 사용자명을 설정한다. (필수 입력항목)
password서버를 기동할 패스워드를 설정한다. (필수 입력항목)

5.3.2. down

down Task는 JEUS를 종료한다.

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

속성설명
domainName종료할 서버가 속한 도메인 이름을 설정한다. (필수 입력항목)
serverName종료할 서버의 이름을 설정한다. (필수 입력항목)
host노드 매니저에 접속할 Host를 설정한다. (필수 입력항목)
port노드 매니저에 접속할 Port를 설정한다. (필수 입력항목)
connectionType노드 매니저에 접속할 connection type을 설정한다. ssl, plain 중 하나로 설정할 수 있다.
truststorePath노드 매니저가 ssl type으로 기동되어 있는 경우 노드 매니저 접속을 위해 인증하는 데 필요한 Truststore 파일의 경로를 설정한다.
truststorePassword노드 매니저가 ssl type으로 기동되어 있는 경우 노드 매니저 접속을 위해 인증하는 데 필요한 Truststore 파일의 패스워드를 설정한다.
username서버를 종료할 사용자명을 설정한다. (필수 입력항목)
password서버를 종료할 패스워드를 설정한다. (필수 입력항목)

5.3.3. 실행하기

build.xml을 작성한 예제와 해당 파일을 통해 서버의 boot, down을 실행하는 예제에 대해 설명한다.

build.xml 작성 예제

다음은 domain1에 'adminServer'라는 이름을을 가진 DAS를 boot, down하는 build.xml 예제이다.

[예 5.1] boot & down Ant Task build 파일 예제 : <<build.xml>>

<?xml version="1.0"?>
<project name="example" default="boot" 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 boot & down task -->
  <property name="domain.name" value="domain1"/>
  <property name="server.name" value="adminServer"/>
  <property name="das.url" value=""/>
  <property name="force" value="false"/>
  <property name="standby" value="false"/>
  <property name="host" value="192.168.34.66"/>
  <property name="port" value="7736"/>
  <property name="connect.type" value="plain"/>
  <property name="truststore.path" value=""/>
  <property name="truststore.password" value=""/>
  <property name="username" value="administrator"/>
  <property name="password" value="jeusadmin"/>
  <property name="isAdminServer" value="false"/>

  <!-- 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>

  <!-- boot task -->
  <target name="boot" depends="init">
    <boot domainName="${domain.name}"
          serverName="${server.name}"
          host="${host}"
          port="${port}"
          connectionType="${connect.type}"
          truststorePath="${truststore.path}"
          truststorePassword="${truststore.password}"
          adminServer="${isAdminServer}"
          dasUrl="${das.url}"
          force="${force}"
          standby="${standby}"
          username="${username}"
          password="${password}"/>
	</target>

  <!-- down task -->
  <target name="down" depends="init">
    <down domainName="${domain.name}"
          serverName="${server.name}"
          host="${host}"
          port="${port}"
          connectionType="${connect.type}"
          truststorePath="${truststore.path}"
          truststorePassword="${truststore.password}"
          username="${username}"
          password="${password}"/>
	</target>
</project>


실행 예제

Ant를 통해 서버를 기동하기 위해서는 노드 매니저가 'startNodeManager' 스크립트를 통해 기동된 상태여야 한다. 이 상태에서 boot 명령을 실행하면 서버가 기동되고, 여기서 down 명령을 실행하면 다시 서버가 종료 된다.

  • boot

    c:\jeus>ant boot
    Buildfile: build.xml
    
    init:
    
    boot:
         [boot] Succeed to start server [adminServer]
    
    BUILD SUCCESSFUL
    Total time: 11 seconds
  • down

    c:\jeus>ant down
    Buildfile: build.xml
    
    init:
    
    down:
         [down] Succeed to stop server [adminServer]
    
    BUILD SUCCESSFUL
    Total time: 0 seconds

5.4. EJB Ant Task

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

5.4.1. appcompiler

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

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

속성설명
jeusHomeJEUS_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 타입)
namedeploy에 사용할 이름을 설정한다.
target

컴파일할 대상 애플리케이션, stand-alone 모듈 파일을 설정한다.

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

예제

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

  • build.xml 작성 예제

    [예 5.2] 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.4.2. ejbddinit

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

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

속성설명
propertyFileejbddinit 실행할 때 참조할 프로퍼티 파일을 지정한다. (String 타입)
logginginglevel

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

이 레벨은 J2SE 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=55555build.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.3] 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.5. 웹 서비스 Ant Task

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

5.5.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 타입)
verboseVerbose 메시지를 출력 여부를 설정한다.

Nested Element

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

예제

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

  • build.xml 작성 예제

    [예 5.4] 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>

  • 실행 예제

    ~/jeus$ 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.5.2. wsdl2java

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

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

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

참고

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

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

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

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

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

  • gen:client

  • gen:server

  • gen

  • import:client

  • import:server

  • import

destDir

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

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

classDestDir컴파일된 클래스 파일이 생성될 디렉터리를 설정한다. (String 타입)
inputMappingJava 클래스를 생성하기 위하여 사용되는 입력 JAX-RPC 매핑 파일을 설정한다. (String 타입)
package

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

(String 타입)

outputMapping입력 WSDL에 대한 출력 JAX-RPC 매핑 파일을 설정한다. (String 타입)
doCompiletrue일 때 생성된Java 소스 파일들은 컴파일된다. (기본값: true)
usernameWSDL의 URL로 접근할 때 필요한 사용자 이름이다. (String 타입)
passwordWSDL의 URL로 접근할 때 필요한 패스워드이다. (String 타입)
keepSrctrue로 설정하면 생성된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 타입)
DDGenJEUS의 기본적인 배치 서술자(webservices.xml 파일과 MODE가 web인 경우 web.xml, ejb인 경우 ejb-jar.xml 파일)를 생성할 때 사용한다. (String 타입)
level로그 레벨을 설정한다. (String 타입)
verboseVerbose 출력은 true일때 가능하다. (기본값: false)

Nested Element

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

[그림 5.1] wsdl2java Task 구성

wsdl2java Task 구성


<mapping>

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

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

속성설명
packageJava 패키지의 이름이다. (필수 입력항목, String 타입)
namespaceWSDL의 Namespace URI이다. (필수 입력항목, String 타입)

참고

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

예제

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

  • build.xml 작성 예제

    [예 5.5] 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>

  • 실행 예제

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

5.5.3. wsgen

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

  • Portable Artifacts

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

참고

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

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

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

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

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

classpath입력으로 들어오는 클래스 파일들을 찾을 위치를 설정한다. (String 타입)
cpclasspath 속성과 같다. (String 타입)
resourcedestdir

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

(String 타입)

sourcedestdir생성되는 소스 파일들의 위치를 설정한다. (String 타입)
keep생성되는 파일들을 보존 여부를 설정한다.
verboseVerbose 메시지를 출력 여부를 설정한다.
genwsdlWSDL 파일이 생성 여부를 설정한다.
protocol

genwsdl 속성과 함께 사용한다.

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

servicenamegenwsdl 속성과 함께 사용한다. 생성되는 WSDL 파일의 특정 wsdl:service Element의 이름을 설정할 때 사용한다. (String 타입)
portnamegenwsdl 속성과 함께 사용한다. 생성되는 WSDL 파일의 특정 wsdl:portname Element의 이름을 설정할 때 사용된다. (String 타입)
extension벤더 특정의 확장성을 설정할 때 사용한다. 상호 운용 및 이식성이 떨어질 수 있다. (boolean 타입)
policy웹 서비스 정책 설정 파일을 읽어 들인다. (String 타입)

예제

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

  • build.xml 작성 예제

    [예 5.6] 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>

  • 실행 예제

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

5.5.4. wsimport

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

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

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

참고

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

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

속성설명
wsdlJava 소스 파일을 생성하기 위해서 사용되는 WSDL의 URL이나 절대 경로를 설정한다. (필수 입력항목, String 타입)
destDir생성된 Java 파일이 놓일 디렉터리의 절대 경로를 설정한다. (String 타입)
sourcedestdir생성된 소스 파일들이 놓일 위치를 설정한다. 이 속성을 지정하면 keep 속성이 자동으로 설정된다. (String 타입)
keep생성되는 파일들을 보존 여부를 설정한다.
verboseVerbose 출력은 true일때 가능하다. (기본값: false)
binding외부의 JAX-WS 또는 JAXB 바인딩 파일들을 설정한다. (String 타입)
extension벤더 특정의 확장성을 설정할 때 사용한다. 상호 운용 및 이식성이 떨어질 수 있다. (boolean 타입)
wsdllocationWSDL URI를 이 속성에 명시하면 그 URI 값이 생성되는 SEI와 서비스 인터페이스의 @WebService.wsdlLocation Annotation과 @WebServiceClient.wsdlLocation Annotation에 설정된다. (String 타입)
catalogTR9401, XCatalog, OASIS XML Catalog 형식과 같은 외부의 Entity 참조값을 설정할 수 있다. 또한 Ant xmlcatalog 타입을 사용할 수 있다. (String 타입)
package

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

(String 타입)

target이곳에 지정된 JAXWS 스펙 버전에 따라 코드를 생성한다. (String 타입)
quiet출력 메시지들을 출력 여부를 설정한다.
policy웹 서비스 정책 설정 파일을 읽어 들인다. (String 타입)

예제

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

  • build.xml 작성 예제

    [예 5.7] 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>

  • 실행 예제

    ~/jeus$ 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.5.5. xjc

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

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

속성설명
wsdl컴파일하려는 스키마 파일이다. (필수 입력항목, String 타입)
binding스키마 파일에 적용될 외부 추가 바인딩 파일이다. (String 타입)
package이 옵션을 명시하면 생성되는 코드는 이 Java 패키지 하위에 위치한다. 이 옵션은 Command Line의 -p 옵션과 동일한 효과를 갖는다. (String 타입)
destdir생성된 코드는 이 디렉터리 하위에 생성된다. (필수 입력항목, String 타입)
readonlytrue일 경우에 Java 소스 파일들은 읽기 가능 모드이다. (기본값: false)
extensiontrue일 경우에 XJC 바인딩 컴파일러는 확장 모드로 실행된다. (기본값: false)
catalogTR9401, 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.8] 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>

  • 실행 예제

    ~/jeus$ 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.5.6. schemagen

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

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

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

예제

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

  • build.xml 작성 예제

    [예 5.9] 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>

  • 실행 예제

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

5.6. 웹 서비스 Maven Plugin

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

5.6.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 1.6 환경에서는 Maven option에 '-Djava.endorsed.dirs=$JEUS_HOME/lib/endorsed'를 추가한다.

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

속성설명
seiSEI 클래스의 이름을 설정한다. (필수 입력항목, String 타입)
destDir

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

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

resourceDestDir

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

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

sourceDestDir

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

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

keep생성되는 파일들을 보존 여부를 설정한다. (기본값: true)
verboseVerbose 메시지를 출력 여부를 설정한다. (기본값: false)
genWsdlWSDL 파일이 생성 여부를 설정한다. (기본값: false)
protocolgenwsdl 속성과 함께 쓰이며 wsdl:binding Element에 사용될 프로토콜을 설정한다. 기본값은 soap1.1이며, Xsoap1.2 Xsoap1.2와 같은 값들이 가능하다. Xsoap1.2는 표준은 아니며 extension 속성과 함께 쓰일 수 있다. (String 타입)
servicenamegenwsdl 속성과 함께 사용한다. 생성되는 WSDL 파일의 특정 wsdl:service Element의 이름을 설정할 때 사용한다. (String 타입)
portnamegenwsdl 속성과 함께 사용한다. 생성되는 WSDL 파일의 특정 wsdl:portname Element의 이름을 설정할 때 사용된다. (String 타입)
extension벤더 특정의 확장성을 설정할 때 사용한다. 상호 운용 및 이식성이 떨어질 수 있다. (기본값: false)

예제

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

  • pom.xml 작성 예제

    [예 5.10] 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>

  • 실행 예제

    ~/wsgen$ 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.6.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 1.6 환경에서는 mavan option에 '-Djava.endorsed.dirs=$JEUS_HOME/lib/endorsed'를 추가한다.

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

속성설명
wsdlDirectoryJava 소스 파일을 생성하기 위해서 사용되는 WSDL 파일들을 포함한 디렉터리 경로를 설정한다. (기본값: ${basedir}/src/wsdl)
wsdlFilesLocal WSDL 파일 리스트를 설정한다. (String 타입)
wsdlUrlsExternal WSDL URL 리스트를 설정한다. (String 타입)
destDir

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

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

sourceDestDir생성된 소스 파일들이 놓일 위치를 설정한다. 이 속성을 지정하면 keep 속성이 자동으로 설정된다. (기본값: ${project.build.directory}/generated-sources/wsimport)
keep생성되는 파일들을 보존 여부를 설정한다. (기본값: true)
verboseVerbose 출력은 true일 때 가능하다. (기본값: false)
bindingDirectory

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

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

bindingFilesJAX-WS 또는 JAXB 바인딩 파일 리스트를 설정한다. (String 타입)
extension벤더 특정의 확장성을 설정할 때 사용한다. 상호 운용 및 이식성이 떨어질 수 있다. (기본값: false)
wsdlLocationWSDL URI를 이 속성에 명시하면 그 URI 값이 생성되는 service end-point interface와 서비스 인터페이스의 @WebService.wsdlLocation Annotation과 @WebServiceClient.wsdlLocation Annotation에 설정된다.
catalogTR9401, 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.11] 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>

  • 실행 예제

    ~/wsimport$ 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.7. 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 jeus -p jeus -host localhost -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>
  • jeus.home은 JEUS가 설치되어 있는 위치를 가리킨다. 위 예제에서는 시스템 환경 변수 JEUS_HOME에 해당 위치가 저장되어 있는 것으로 가정하였다.

    참고

    JEUS에서 제공하는 jant 스크립트를 사용하여 ant를 실행할 경우 JEUS_HOME을 별도로 지정하지 않아도 된다.

  • unix.jeusadmin과 windows.jeusadmin은 jeusadmin 툴을 실행하기 위한 스크립트의 위치를 가리킨다. 일반적으로 jeusadmin 스크립트는 JEUS_HOME/bin 아래에 위치한다. UNIX와 Windows 운영체제에서 스크립트 이름이 다르기 때문에 property를 2개 사용하였다.

  • jeusadmin.args는 jeusadmin 툴을 실행할 때 사용할 인자값들이다. 사용자 이름, 비밀번호, 호스트 주소, 포트 번호, 상세 출력(verbose) 여부 등 필요한 옵션을 설정한다. 옵션에 대한 자세한 내용은 “4.2.1.1. jeusadmin”을 참고한다.

  • cmd.target은 실행할 명령어를 지정한다. 예제에서는 server-info 명령어를 사용하여 서버 상태를 확인하고자 하였으므로, 'server-info -server ${server.name} -state'로 설정하였다. jeusadmin에서 사용할 수 있는 명령어에 대한 자세한 사항은 “Part II, 콘솔 명령어와 툴”을 참고한다.

  • check-server-state-windows와 check-server-state-unix target들에서는 exec task를 사용하여 jeusadmin을 실행한다. osfamily 속성을 사용하여 운영체제의 종류에 맞는 스크립트가 실행될 수 있게 하였다. <exec> 태그에서 spawn 속성을 false로 주어야 Ant를 통해 수행 결과를 확인할 수 있다. 만약 명령어 수행이 실패하였을 때 Ant build가 실패하게 할 경우 failonerror 속성을 true로 설정한다.

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

user1@host1:~/jeus/bin$jant check-server-state
Buildfile: /home/user1/jeus/bin/build.xml

check-server-state:

check-server-state-unix:
     [echo] /home/user/workspace/jeus7/jeus7/target/jeus/bin/jeusadmin -u jeus -p jeus -host localhost -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
user1@host1:~/jeus/bin$

5.8. Maven Plugin

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

참고

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

5.8.1. 설치

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

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

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

설치 과정은 다음과 같다.

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

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

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

    mvn install:install-file -Dfile=/home/user/jeus-maven-plugin/jeus-maven-plugin.jar -DpomFile=META-INF/maven/jeus.tool/jeus-maven-plugin/pom.xml

5.8.2. Maven Plugin Goals

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

5.8.2.1. start-das

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

  • 이름

    jeus.tool:jeus-maven-plugin:start-das

  • 매개변수

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

    매개변수 이름프로퍼티 이름타입설명
    jeusHomejeus.homejava.lang.String

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

    (필수 입력항목)

    hostjeus.server.hostjava.lang.String

    DAS의 host address를 설정한다.

    (필수 입력항목)

    portjeus.server.portjava.lang.IntegerDAS의 port 번호를 설정한다. (필수 입력항목)
    userjeus.user.namejava.lang.StringJEUS 사용자 이름을 설정한다.
    passwordjeus.user.passwordjava.lang.StringJEUS 사용자 비밀번호를 설정한다.
    domainjeus.domain.namejava.lang.String

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

    (필수 입력항목)

    serverjeus.server.namejava.lang.StringDAS 이름을 설정한다. (필수 입력항목)
    filenamejeus.auth.filejava.lang.StringJEUS 인증할 때 사용할 계정 정보 파일을 설정한다. startDomainAdminServer 스크립트에서 제공하는 f 옵션과 동일하다.
    waitingTimejeus.boot.timeoutjava.lang.IntegerJEUS를 기동시키고 난 후 플러그인에서는 일정 시간 동안 기다리면서 서버가 제대로 기동되었는지 여부를 검사하여 goal이 성공적으로 수행되었는지 여부를 판단한다. 이때 얼마나 기다릴지 설정하는 값이다. (단위: 초, 기본값: 10초)
    cacheloginjeus.server.start.cacheloginboolean기동할 때 사용한 인증 정보를 저장할지 여부를 설정한다. (기본값: false)
    forcejeus.server.start.forcedboolean기동할 때 설정되어 있는 애플리케이션이 모두 RUNNING 상태가 되지 않더라도 부팅이 완료되게 한다. (기본값: false)
    rollingjeus.server.start.rollingboolean

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

    (기본값: false)

    verbosejeus.server.start.verboseboolean

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

    (기본값: false)

    standbyjeus.server.start.standbyboolean

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

    (기본값: false)

  • 사용 예제

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

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

    <!-- JEUS Maven Plugin - start-das -->
    <plugin>
        <groupId>jeus.tool</groupId>
        <artifactId>jeus-maven-plugin</artifactId>
        <version>7.0.0.2</version>
        <configuration>
          <jeusHome>/home/user/jeus</jeusHome>
        <host>localhost</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <domain>domain1</domain>
        <server>adminServer</server>
      </configuration>
    </plugin>

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

    $ mvn jeus.tool:jeus-maven-plugin:start-das
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building maven-sample-project 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- jeus-maven-plugin:7.0.0.2:start-das (default-cli) @ maven-sample ---
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 11.414s
    [INFO] Finished at: Mon Feb 17 16:16:39 KST 2014
    [INFO] Final Memory: 2M/61M
    [INFO] ------------------------------------------------------------------------
    

5.8.2.2. start-ms

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

  • 이름

    jeus.tool:jeus-maven-plugin:start-ms
  • 매개변수

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

    매개변수 이름프로퍼티 이름타입설명
    jeusHomejeus.homejava.lang.String

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

    (필수 입력항목)

    hostjeus.server.hostjava.lang.String

    DAS의 host address를 설정한다.

    (필수 입력항목)

    portjeus.server.portjava.lang.IntegerDAS의 port 번호를 설정한다. (필수 입력항목)
    userjeus.user.namejava.lang.StringJEUS 사용자 이름을 설정한다.
    passwordjeus.user.passwordjava.lang.StringJEUS 사용자 비밀번호를 설정한다.
    domainjeus.domain.namejava.lang.String

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

    (필수 입력항목)

    serverjeus.server.namejava.lang.StringDAS 이름을 설정한다. (필수 입력항목)
    filenamejeus.auth.filejava.lang.StringJEUS를 인증할 때 사용할 계정 정보 파일을 설정한다. startDomainAdminServer 스크립트에서 제공하는 f 옵션과 동일하다.
    waitingTimejeus.boot.timeoutjava.lang.IntegerJEUS를 기동시키고 난 후 플러그인에서는 일정 시간 동안 기다리면서 서버가 제대로 기동되었는지 여부를 검사하여 goal이 성공적으로 수행되었는지 여부를 판단한다. 이때 얼마나 기다릴지 설정하는 값이다. (단위: 초, 기본값: 10초)
    cacheloginjeus.server.start.cacheloginboolean기동할 때 사용한 인증 정보를 저장할지 여부를 설정한다. (기본값: false)
    forcejeus.server.start.forcedboolean기동할 때 설정되어 있는 애플리케이션이 모두 RUNNING 상태가 되지 않더라도 부팅이 완료되게 한다. (기본값: false)
    rollingjeus.server.start.rollingboolean

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

    (기본값: false)

    verbosejeus.server.start.verboseboolean상세 출력 사용 여부를 설정한다. (기본값: false)
    standbyjeus.server.start.standbyboolean

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

    (기본값: false)

    dasurljeus.server.start.dasurljava.lang.StringMS가 속한 domain을 관리하는 DAS의 url을 설정한다. (필수 입력항목)
  • 사용 예제

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

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

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

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

    $ mvn jeus.tool:jeus-maven-plugin:start-ms
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building maven-sample-project 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- jeus-maven-plugin:7.0.0.2:start-ms (default-cli) @ maven-sample ---
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 11.161s
    [INFO] Finished at: Mon Feb 17 16:36:16 KST 2014
    [INFO] Final Memory: 2M/61M
    [INFO] ------------------------------------------------------------------------

5.8.2.3. stop-jeus

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

  • 이름

    jeus.tool:jeus-maven-plugin:stop-jeus

  • 매개변수

    매개변수 이름프로퍼티 이름타입설명
    jeusHomejeus.homejava.lang.String

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

    (필수 입력항목)

    hostjeus.server.hostjava.lang.String

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

    (필수 입력항목)

    portjeus.server.portjava.lang.Integerjeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)
    userjeus.user.namejava.lang.String

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

    (필수 입력항목)

    passwordjeus.user.passwordjava.lang.String

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

    (필수 입력항목)

    args없음java.util.List명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.
    argjeus.jeusadmin.command.argumentsjava.lang.String명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.
  • 사용 예제

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

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

    <!-- JEUS Maven Plugin - stop-jeus -->
    <plugin>
      <groupId>jeus.tool</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>7.0.0.2</version>
      <configuration>
        <jeusHome>/home/user/jeus</jeusHome>
        <host>localhost</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] ------------------------------------------------------------------------
    [INFO] Building maven-sample-project 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- jeus-maven-plugin:7.0.0.2:stop-jeus (default-cli) @ maven-sample ---
    [INFO] jeus.home = /home/user/jeus
    [INFO] jeusadmin.path = /home/user/jeus/bin/jeusadmin
    [INFO] jeusadmin.one-step-execution-command = [local-shutdown]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to Domain Administration Server adminServer in the domain domain1.
    [INFO] The server [adminServer] has been shut down successfully.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.690s
    [INFO] Finished at: Mon Feb 17 17:19:10 KST 2014
    [INFO] Final Memory: 2M/61M
    [INFO] ------------------------------------------------------------------------
    

5.8.2.4. deploy

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

  • 이름

    jeus.tool:jeus-maven-plugin:deploy

  • 매개변수

    매개변수 이름프로퍼티 이름타입설명
    jeusHomejeus.homejava.lang.String

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

    (필수 입력항목)

    hostjeus.server.hostjava.lang.String

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

    (필수 입력항목)

    portjeus.server.portjava.lang.Integerjeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)
    userjeus.user.namejava.lang.String

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

    (필수 입력항목)

    passwordjeus.user.passwordjava.lang.String

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

    (필수 입력항목)

    args없음java.util.List명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.
    argjeus.jeusadmin.command.argumentsjava.lang.String명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.
  • 사용 예제

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

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

    <!-- JEUS Maven Plugin - deploy -->
    <plugin>
      <groupId>jeus.tool</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>7.0.0.2</version>
      <configuration>
        <jeusHome>/home/user/jeus</jeusHome>
        <host>localhost</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <args>
          <param>SampleApp</param>
          <param>-servers SampleApp</param>
        </args>
      </configuration>
    </plugin>

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

    $ mvn jeus.tool:jeus-maven-plugin:deploy
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building maven-sample-project 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- jeus-maven-plugin:7.0.0.2:deploy (default-cli) @ maven-sample ---
    [INFO] jeus.home = /home/user/jeus
    [INFO] jeusadmin.path = /home/user/jeus/bin/jeusadmin
    [INFO] jeusadmin.one-step-execution-command = [deploy-application SampleApp -servers adminServer ]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to Domain Administration Server adminServer in the domain domain1.
    [INFO] deploy the application for the application [SampleApp] succeeded.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 1.116s
    [INFO] Finished at: Mon Feb 17 16:50:32 KST 2014
    [INFO] Final Memory: 2M/61M
    [INFO] ------------------------------------------------------------------------
    

5.8.2.5. undeploy

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

  • 이름

    jeus.tool:jeus-maven-plugin:undeploy

  • 매개변수

    매개변수 이름프로퍼티 이름타입설명
    jeusHomejeus.homejava.lang.String

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

    (필수 입력항목)

    hostjeus.server.hostjava.lang.String

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

    (필수 입력항목)

    portjeus.server.portjava.lang.Integer

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

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

    userjeus.user.namejava.lang.StringJEUS 사용자 이름을 설정한다. (필수 입력항목)
    passwordjeus.user.passwordjava.lang.String

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

    (필수 입력항목)

    args없음java.util.List명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.
    argjeus.jeusadmin.command.argumentsjava.lang.String명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.
  • 사용 예제

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

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

    <!-- JEUS Maven Plugin - undeploy -->
    <plugin>
      <groupId>jeus.tool</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>7.0.0.2</version>
      <configuration>
        <jeusHome>/home/user/jeus</jeusHome>
        <host>localhost</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <args>
          <param>SampleApp</param>
        </args>
      </configuration>
    </plugin>

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

    $ mvn jeus.tool:jeus-maven-plugin:undeploy
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building maven-sample-project 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- jeus-maven-plugin:7.0.0.2:undeploy (default-cli) @ maven-sample ---
    [INFO] jeus.home = /home/user/jeus
    [INFO] jeusadmin.path = /home/user/jeus/bin/jeusadmin
    [INFO] jeusadmin.one-step-execution-command = [undeploy-application SampleApp ]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to Domain Administration Server adminServer in the domain domain1.
    [INFO] Undeploying [SampleApp] (This may take time due to graceful undeployment) ..........
    [INFO] undeploy the application for the application [SampleApp] succeeded.
    [INFO] successfully undeployed (elapsed = 147ms)
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.814s
    [INFO] Finished at: Mon Feb 17 17:06:40 KST 2014
    [INFO] Final Memory: 2M/61M
    [INFO] ------------------------------------------------------------------------
    

5.8.2.6. start-app

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

  • 이름

    jeus.tool:jeus-maven-plugin:start-app

  • 매개변수

    매개변수 이름프로퍼티 이름타입설명
    jeusHomejeus.homejava.lang.String

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

    (필수 입력항목)

    hostjeus.server.hostjava.lang.String

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

    (필수 입력항목)

    portjeus.server.portjava.lang.Integerjeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)
    userjeus.user.namejava.lang.StringJEUS 사용자 이름을 설정한다. (필수 입력항목)
    passwordjeus.user.passwordjava.lang.String

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

    (필수 입력항목)

    args없음java.util.List명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.
    argjeus.jeusadmin.command.argumentsjava.lang.String명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.
  • 사용 예제

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

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

    <!-- JEUS Maven Plugin - start-app -->
    <plugin>
      <groupId>jeus.tool</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>7.0.0.2</version>
      <configuration>
        <jeusHome>/home/user/jeus</jeusHome>
        <host>localhost</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <args>
          <param>SampleApp</param>
        </args>
      </configuration>
    </plugin>

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

    $ mvn jeus.tool:jeus-maven-plugin:start-app
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building maven-sample-project 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- jeus-maven-plugin:7.0.0.2:start-app (default-cli) @ maven-sample ---
    [INFO] jeus.home = /home/user/jeus
    [INFO] jeusadmin.path = /home/user/jeus/bin/jeusadmin
    [INFO] jeusadmin.one-step-execution-command = [start-application SampleApp ]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to Domain Administration Server adminServer in the domain domain1.
    [INFO] start the application for the application [SampleApp] succeeded.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.678s
    [INFO] Finished at: Mon Feb 17 17:14:07 KST 2014
    [INFO] Final Memory: 2M/61M
    [INFO] ------------------------------------------------------------------------
    

5.8.2.7. stop-app

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

  • 이름

    jeus.tool:jeus-maven-plugin:stop-app

  • 매개변수

    매개변수 이름프로퍼티 이름타입설명
    jeusHomejeus.homejava.lang.String

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

    (필수 입력항목)

    hostjeus.server.hostjava.lang.String

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

    (필수 입력항목)

    portjeus.server.portjava.lang.Integerjeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)
    userjeus.user.namejava.lang.StringJEUS 사용자 이름을 설정한다. (필수 입력항목)
    passwordjeus.user.passwordjava.lang.String

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

    (필수 입력항목)

    args없음java.util.List명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.
    argjeus.jeusadmin.command.argumentsjava.lang.String명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.
  • 사용 예제

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

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

    <!-- JEUS Maven Plugin - stop-app -->
    <plugin>
      <groupId>jeus.tool</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>7.0.0.2</version>
      <configuration>
        <jeusHome>/home/user/jeus</jeusHome>
        <host>localhost</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <args>
          <param>SampleApp</param>
        </args>
      </configuration>
    </plugin>

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

    $ mvn jeus.tool:jeus-maven-plugin:stop-app
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building maven-sample-project 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- jeus-maven-plugin:7.0.0.2:stop-app (default-cli) @ maven-sample ---
    [INFO] jeus.home = /home/user/jeus
    [INFO] jeusadmin.path = /home/user/jeus/bin/jeusadmin
    [INFO] jeusadmin.one-step-execution-command = [stop-application SampleApp ]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to Domain Administration Server adminServer in the domain domain1.
    [INFO] stop the application for the application [SampleApp] succeeded.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.635s
    [INFO] Finished at: Mon Feb 17 17:16:48 KST 2014
    [INFO] Final Memory: 2M/61M
    [INFO] ------------------------------------------------------------------------
    

5.8.2.8. install-app

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

  • 이름

    jeus.tool:jeus-maven-plugin:install-app

  • 매개변수

    매개변수 이름프로퍼티 이름타입설명
    jeusHomejeus.homejava.lang.String

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

    (필수 입력항목)

    hostjeus.server.hostjava.lang.String

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

    (필수 입력항목)

    portjeus.server.portjava.lang.Integerjeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)
    userjeus.user.namejava.lang.StringJEUS 사용자 이름을 설정한다. (필수 입력항목)
    passwordjeus.user.passwordjava.lang.String

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

    (필수 입력항목)

    args없음java.util.List명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.
    argjeus.jeusadmin.command.argumentsjava.lang.String명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.
  • 사용 예제

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

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

    <!-- JEUS Maven Plugin - install-app -->
    <plugin>
      <groupId>jeus.tool</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>7.0.0.2</version>
      <configuration>
        <jeusHome>/home/user/jeus</jeusHome>
        <host>localhost</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <args>
          <param>/home/user/SampleApp.war</param>
          <param>-id SampleApp</param>
        </args>
      </configuration>
    </plugin>

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

    $ mvn jeus.tool:jeus-maven-plugin:install-app
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building maven-sample-project 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- jeus-maven-plugin:7.0.0.2:install-app (default-cli) @ maven-sample ---
    [INFO] jeus.home = /home/user/jeus
    [INFO] jeusadmin.path = /home/user/jeus/bin/jeusadmin
    [INFO] jeusadmin.one-step-execution-command = [install-application /home/user/SampleApp.war -id SampleApp ]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to Domain Administration Server adminServer in the domain domain1.
    [INFO] Successfully installed the application [SampleApp].
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 1.019s
    [INFO] Finished at: Mon Feb 17 17:22:57 KST 2014
    [INFO] Final Memory: 2M/77M
    [INFO] ------------------------------------------------------------------------
    

5.8.2.9. uninstall-app

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

  • 이름

    jeus.tool:jeus-maven-plugin:uninstall-app

  • 매개변수

    매개변수 이름프로퍼티 이름타입설명
    jeusHomejeus.homejava.lang.String

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

    (필수 입력항목)

    hostjeus.server.hostjava.lang.String

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

    (필수 입력항목)

    portjeus.server.portjava.lang.Integerjeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)
    userjeus.user.namejava.lang.StringJEUS 사용자 이름을 설정한다. (필수 입력항목)
    passwordjeus.user.passwordjava.lang.String

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

    (필수 입력항목)

    args없음java.util.List명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.
    argjeus.jeusadmin.command.argumentsjava.lang.String명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.
  • 사용 예제

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

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

    <!-- JEUS Maven Plugin - uninstall-app -->
    <plugin>
      <groupId>jeus.tool</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>7.0.0.2</version>
      <configuration>
        <jeusHome>/home/user/jeus</jeusHome>
        <host>localhost</host>
        <port>9736</port>
        <user>administrator</user>
        <password>jeus</password>
        <args>
          <param>SampleApp</param>
        </args>
      </configuration>
    </plugin>

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

    $ mvn jeus.tool:jeus-maven-plugin:uninstall-app
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building maven-sample-project 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- jeus-maven-plugin:7.0.0.2:uninstall-app (default-cli) @ maven-sample ---
    [INFO] jeus.home = /home/user/jeus
    [INFO] jeusadmin.path = /home/user/jeus/bin/jeusadmin
    [INFO] jeusadmin.one-step-execution-command = [uninstall-application SampleApp ]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to Domain Administration Server adminServer in the domain domain1.
    [INFO] uninstall the application for the application [SampleApp] succeeded. : Successfully deleted [SampleApp].
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.654s
    [INFO] Finished at: Mon Feb 17 17:24:42 KST 2014
    [INFO] Final Memory: 2M/61M
    [INFO] ------------------------------------------------------------------------
    

5.8.2.10. jeusadmin

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

  • 이름

    jeus.tool:jeus-maven-plugin:jeusadmin

  • 매개변수

    매개변수 이름프로퍼티 이름타입설명
    jeusHomejeus.homejava.lang.String

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

    (필수 입력항목)

    hostjeus.server.hostjava.lang.String

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

    (필수 입력항목)

    portjeus.server.portjava.lang.Integerjeusadmin으로 접속할 서버의 포트 번호이다. (기본값: 9736, 필수 입력항목)
    userjeus.user.namejava.lang.StringJEUS 사용자 이름을 설정한다. (필수 입력항목)
    passwordjeus.user.passwordjava.lang.String

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

    (필수 입력항목)

    args없음java.util.List명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다. pom.xml에 설정할 경우 사용하는 것을 권장한다.
    argjeus.jeusadmin.command.argumentsjava.lang.String명령어를 실행할 때 넘겨줄 인자값들을 설정한다. arg와 args 둘 다 설정하였을 경우 arg가 우선한다.
    commandjeus.jeusadmin.commandjava.lang.String

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

    (필수 입력항목)

  • 사용 예제

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

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

    <!-- JEUS Maven Plugin - jeusadmin -->
    <plugin>
      <groupId>jeus.tool</groupId>
      <artifactId>jeus-maven-plugin</artifactId>
      <version>7.0.0.2</version>
      <configuration>
        <jeusHome>/home/user/jeus</jeusHome>
        <host>localhost</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 jeus.tool:jeus-maven-plugin:jeusadmin
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building maven-sample-project 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- jeus-maven-plugin:7.0.0.2:jeusadmin (default-cli) @ maven-sample ---
    [INFO] jeus.home = /home/user/jeus
    [INFO] jeusadmin.path = /home/user/jeus/bin/jeusadmin
    [INFO] jeusadmin.one-step-execution-command = [server-info -server adminServer -state ]
    [INFO] Attempting to connect to localhost:9736.
    [INFO] The connection has been established to Domain Administration Server adminServer in the domain domain1.
    [INFO] RUNNING
    [INFO] 
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.642s
    [INFO] Finished at: Mon Feb 17 17:29:13 KST 2014
    [INFO] Final Memory: 2M/77M
    [INFO] ------------------------------------------------------------------------