1. ejbddinit

ejbddinit은 ejb-jar.xml 정보와 사전에 생성된 프로퍼티 파일 및 사용자 입력 값 등을 이용해서 JEUS EJB DD(jeus-ejb-dd.xml)를 자동으로 생성하는 툴이다.

EJB를 deploy할 때 필요한 항목들은 기본값으로 설정하므로 JEUS EJB DD는 반드시 존재해야하는 것은 아니다. 따라서 EJB를 새로 개발할 경우 불필요할 수 있지만, JEUS EJB DD를 사용하던 기존 방법으로 애플리케이션을 작성하거나 다른 제품에서 전환(migration)하는 경우 쉽게 템플릿을 작성하는 용도로 사용할 수 있다.

Java EE 6부터 지원하는 annotation-based 방식은 소스 파일 내에 설정할 수 있으므로 지원하지 않는다.

다음은 툴 사용법, 파라미터 및 예제에 대한 설명이다.

  • 사용법

    ejbddinit [-property property_file_path]
              [-level log_level]
              [-source application_file_or_directory_name]
  • 파라미터

    파라미터 설명

    [-property property_file_path]

    프로퍼티 파일의 경로를 지정한다. jeus-ejb-dd.xml을 목적에 맞게 생성하기 위해서는 이 옵션을 반드시 설정해야 한다. 프로퍼티를 JEUS EJB DD의 태그에 대응시켜 값을 설정할 수 있다. 설정 가능한 프로퍼티 목록은 프로퍼티 목록을 참고한다.

    • 예1)

      export-port=40001

      모든 EJB에 대해서 export-port를 40001로 설정하여 jeus-ejb-dd.xml 파일을 생성한다.

    • 예2)

      SampleBean.export-port=40004

      ejb.jar에서 EJB 이름이 SampleBean으로 설정된 EJB 대해서 export-port를 40004로 설정하여 jeus-ejb-dd.xml 파일을 생성한다. 이와 같이 각 프로퍼티 이름 앞에 점(.)을 구분자로 하여 특정 EJB 이름을 명시할 수 있다. 동일한 설정에 대하여 특정 EJB 이름을 명시한 프로퍼티와 그렇지 않은 프로퍼티가 존재할 때 전자가 우선 적용된다.

    [-level log_level]

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

    [-source application_file_or_directory_name]

    대상 EJB 모듈의 경로를 설정한다. EJB 모듈은 '.jar' 확장자를 갖는 압축 파일이거나 디렉터리이다.

    성공적으로 JEUS EJB DD를 생성하면, EJB 모듈이 디렉터리일 경우 META-INF 폴더 하위에 jeus-ejb-dd.xml을 생성한다. EJB 모듈이 압축 파일인 경우 본래의 파일 이름 끝에 ".new"를 붙인 이름으로 새로운 압축 파일을 만들고 압축 파일 내부의 META-INF 디렉터리 하위에 jeus-ejb-dd.xml을 생성한다.

  • 예제

    • usage를 출력한다.

      $ ejbddinit
    • ejbddinit.properties에 정의된 프로퍼티를 바탕으로 EJB 모듈인 ejb.jar에 대하여 ejb.jar.new 파일을 생성한다. 생성된 ejb.jar.new 파일 내부의 META-INF 디렉터리 하위에 jeus-ejb-dd.xml이 위치한다.

      $ ejbddinit -property ejbddinit.properties -source ejb.jar
    • ejbddinit.properties에 정의된 프로퍼티를 바탕으로 EJB 모듈인 ejb_dir의 META-INF 디렉터리 하위에 jeus-ejb-dd.xml을 생성한다.

      $ ejbddinit -property ejbddinit.properties -source ejb_dir
    • ejbddinit.properties에 정의된 프로퍼티를 바탕으로 jeus-ejb-dd.xml을 생성한다. source 옵션 값을 입력하지 않았으므로 ejbddinit.properties에 EJB 모듈 경로가 설정되어 있어야 한다.

      $ ejbddinit -property ejbddinit.properties
    • ejbddinit.properties에 정의된 프로퍼티를 바탕으로 EJB 모듈인 ejb.jar에 대하여 ejb.jar.new 파일을 생성한다. 생성된 ejb.jar.new 파일 내부의 META-INF 디렉터리 하위에 jeus-ejb-dd.xml이 위치한다. FINE 레벨의 로그가 화면에 출력된다.

      $ ejbddinit -property ejbddinit.properties -level FINE -source ejb.jar

      ejbddinit은 Ant Task를 지원한다. ejbddinit ant task는 ejbddinit에서 설명한다.

프로퍼티 목록

다음은 ejbddinit에서 지원하는 프로퍼티 목록이다. 각 프로퍼티에 대한 상세 설명은 대응되는 jeus-ejb-dd.xml 태그의 description을 참고한다.

프로퍼티 Type 비고

source

String

대상 EJB 모듈의 경로이다. jeus-ejb-dd.xml의 태그와 관련 없다.

logging-level

String

ejbddinit를 실행할 때 화면에 출력되는 로그의 레벨로 jeus-ejb-dd.xml의 태그와 관련 없다.

export-name

String

jeus-ejb-dd.xml의 <export-name> 태그에 대응한다. 특정 EJB에 대해서만 사용을 권장한다. 사용하는 경우 패턴을 지원한다. 자세한 내용은 export-name 프로퍼티에 대한 패턴 지원을 참고한다.

local-export-name

String

jeus-ejb-dd.xml의 <local-export-name> 태그에 대응한다. 특정 EJB에 대해서만 사용을 권장한다.

export-port

int (not negative)

jeus-ejb-dd.xml의 <export-port> 태그에 대응한다.

export-iiop

boolean

jeus-ejb-dd.xml의 <export-iiop> 태그에 대응한다.

thread-max

int (not negative)

jeus-ejb-dd.xml의 <thread-max> 태그에 대응한다.

bean-pool-min

int (not negative)

jeus-ejb-dd.xml의 <bean-pool>/<pool-min> 태그에 대응한다.

bean-pool-max

int (not negative)

jeus-ejb-dd.xml의 <bean-pool>/<pool-max> 태그에 대응한다.

connect-pool-min

int (not negative)

jeus-ejb-dd.xml의 <connect-pool>/<pool-min> 태그에 대응한다.

connect-pool-max

int (not negative)

jeus-ejb-dd.xml의 <connect-pool>/<pool-max> 태그에 대응한다.

capacity

int (not negative)

jeus-ejb-dd.xml의 <capacity> 태그에 대응한다.

passivation-timeout

long (not negative or -1 for disable)

jeus-ejb-dd.xml의 <passivation-timeout> 태그에 대응한다.

disconnect-timeout

long (not negative or -1 for disable)

jeus-ejb-dd.xml의 <disconnect-timeout> 태그에 대응한다.

engine-type

String (defined)

jeus-ejb-dd.xml의 <engine-type> 태그에 대응한다.

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

  • EXCLUSIVE_ACCESS

  • SINGLE_OBJECT

  • MULTIPLE_OBJECT

subengine-type

String (defined)

jeus-ejb-dd.xml의 <subengine-type> 태그에 대응한다.

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

  • ReadLocking

  • WriteLocking

  • WriteLockingFind

fetch-size

int (not negative)

jeus-ejb-dd.xml의 <fetch-size> 태그에 대응한다.

init-caching

boolean

jeus-ejb-dd.xml의 <init-caching> 태그에 대응한다.

table-name

String

jeus-ejb-dd.xml의 <table-name> 태그에 대응한다.

creating-table

String (defined)

jeus-ejb-dd.xml의 <creating-table> 태그에 대응한다.

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

  • none

  • use-existing

  • force-create

deleting-table

boolean

jeus-ejb-dd.xml의 <deleting-table> 태그에 대응한다.

db-vendor

String

jeus-ejb-dd.xml의 <db-vendor> 태그에 대응한다.

datasource-name

String

jeus-ejb-dd.xml의 <data-source-name> 태그에 대응한다.

enable-instant-ql

boolean

jeus-ejb-dd.xml의 <enable-instant-ql> 태그에 대응한다.

export-name 프로퍼티에 대한 패턴 지원

export-name은 EJB 모듈 이름이나 ejb-jar.xml에 정의된 EJB 컴포넌트의 <ejb-name>, <ejb-class> 태그의 값들을 이용하여 지정하는 경우가 대부분이므로 이들 값들을 좀 더 편리하게 이용할 수 있도록 패턴을 지원한다.

패턴 이름 패턴 값

%{module-name}

EJB 모듈 이름이다. JAR 파일인 경우 '.jar' 확장자를 제거한 파일 이름이다.

%{ejb-name}

EJB 컴포넌트 이름이다. ejb-jar.xml에 정의된 해당 EJB 컴포넌트의 <ejb-name> 태그의 값이다.

%{ejb-fqn}

EJB 컴포넌트의 EJB 클래스의 fully qualified name이다. ejb-jar.xml에 정의된 해당 EJB 컴포넌트의 <ejb-class> 태그의 값이다.

%{ejb-class}

%{ejb-fqn} 값에서 패키지 이름을 제외한 클래스 이름이다.

다음은 이름이 'sample-ejb’이고 EJB 클래스의 fully qualified name이 'sample.SampleBean’인 EJB 컴포넌트가 이름이 'myejb’인 EJB 모듈에 패키지되어 있다고 가정하는 경우 패턴 사용의 예이다.

  • export-name을 'myejb_sample-ejb’로 지정한다.

    export-name=%{module-name}_%{ejb-name}
  • export-name을 'PREFIX_sample.SampleBean’으로 지정한다.

    export-name=PREFIX_%{ejb-fqn}
  • export-name을 'SampleBean_POSTFIX’로 지정한다.

    export-name=%{ejb-class}_POSTFIX

위의 예에서 알 수 있듯이 export-name을 설정할 때 필요한 기타 문자열(PREFIX나 POSTFIX와 같은)들을 패턴에 붙일 수 있으며 패턴 간의 조합도 가능하다. 패턴 이름은 대소문자 구별 없이 사용할 수 있다.

프로퍼티 파일 예제

다음은 ejbddinit 프로퍼티 파일의 작성 예다. JEUS EJB DD를 생성할 EJB에 대하여 적절히 동작하도록 다음의 예제를 수정해서 사용할 것을 권장한다.

# PROPERTY FILE SAMPLE
# JEUS EJB DD Generation Option

# target file or directory path
source=/home/workspace/ejb.jar

# log-level for EJB DD init
logging-level=DEBUG

# JEUS EJB DD configuration tag and value pairs for all EJBs
db-vendor=mysql
datasource-name=jdbc/__default
creating-table=use-existing
deleting-table=false
engine-type=EXCLUSIVE_ACCESS
subengine-type=ReadLocking
fetch-size=1111
enable-instant-ql=true
export-port=9999
export-iiop=false
thread-max=100
bean-pool-min=10
bean-pool-max=100
capacity=10000
passivation-timeout=300000
disconnect-timeout=-1
connect-pool-min=10
connect-pool-max=100
init-caching=false

# JEUS EJB DD configuration tag and value pairs for BookBean EJB
BookBean.export-name=BookBeanFromProperty
BookBean.local-export-name=LocalBookBeanFromProperty
BookBean.export-port=55555
BookBean.thread-max=100