JEUS

Similar documents
Intro to Servlet, EJB, JSP, WS

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - AnyLink Introduction v3.2.3.doc

Windows 8에서 BioStar 1 설치하기

No Slide Title

Interstage5 SOAP서비스 설정 가이드

untitled

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

Tmax

Interstage4 설치가이드

[JEUS 7] eclipse plug-in 연동 1. 개요 Eclipse 와 JEUS 7 연동시필요한 plug-in 제공및환경설정에관한가이드제공하여 Eclipse 에서 JEUS 7 기동및 종료테스트할수있는방법을기술하였습니다. 2. Plug-in 설치 2.1 [Step

[Brochure] KOR_TunA

교육2 ? 그림

슬라이드 1

목차 JEUS EJB Session Bean가이드 stateful session bean stateful sample 가이드 sample source 결과확인 http session에

슬라이드 1

슬라이드 1

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

개발및운영 Tibero DB Link (Tibero To Oracle) - Local 방식

.

Microsoft Word - Jeus_System_Architecture.doc

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

PowerPoint Template

JEUS 소개

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

J2EE & Web Services iSeminar

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

Microsoft Word - src.doc

Network Programming

Admin Guide for dummy

Tibero

Backup Exec

rmi_박준용_final.PDF


thesis

JEUS

[Brochure] KOR_LENA WAS_

Remote UI Guide

개발및운영 Tibero Perl 연동

歯Writing_Enterprise_Applications_2_JunoYoon.PDF

JVM 메모리구조

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

uFOCS

목차 1. 노드매니저종류 Java Type SSH Type 노드설정파일및로깅 nodes.xml jeusnm.properties <servername>.properties...

슬라이드 1

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

목차 데모 홖경 및 개요... 3 테스트 서버 설정... 4 DC (Domain Controller) 서버 설정... 4 RDSH (Remote Desktop Session Host) 서버 설정... 9 W7CLIENT (Windows 7 Client) 클라이얶트 설정

JEUS 소개

vm-웨어-앞부속

ISP and CodeVisionAVR C Compiler.hwp

PCServerMgmt7

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

제11장 프로세스와 쓰레드

Chap7.PDF

TTA Journal No.157_서체변경.indd

untitled

untitled

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

chapter4

Apache2 + Tomcat 5 + JK2 를 사용한 로드밸런싱과 세션 복제 클러스터링 사이트 구축

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

PRO1_04E [읽기 전용]

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

JEUS

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

Portal_9iAS.ppt [읽기 전용]

DocsPin_Korean.pages

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

C++ Programming

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

API 매뉴얼

Something that can be seen, touched or otherwise sensed

기존에 Windchill Program 이 설치된 Home Directory 를 선택해준다. 프로그램설치후설치내역을확인해보면 Adobe Acrobat 6.0 Support 내역을확인할수 있다.

chapter1,2.doc

Sena Device Server Serial/IP TM Version

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2000) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2000 Exchange Server 2003 GFI MailEssentials 14 for

JEUS 서버 설정 가이드

thesis

Endpoint Protector - Active Directory Deployment Guide

Cloud Friendly System Architecture

untitled

MAX+plus II Getting Started - 무작정따라하기

untitled

API 매뉴얼

기술교육 Architecture & Monitoring

설치및환경설정 JEUS Thread State Notify 설정

Network seminar.key

4. 스위치재부팅을실시한다. ( 만약, Save 질문이나오면 'no' 를실시한다.) SWx#reload System configuration has been modified. Save? [yes/no]: no Proceed with reload? [confirm] (

기술자료

4S 1차년도 평가 발표자료

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Windows Server 2012

단계

Transcription:

JEUS EJB 안내서 JEUS v7.0 Fix#1 Copyright 2013 TmaxSoft Co., Ltd. All Rights Reserved.

Copyright Notice Copyright 2013 TmaxSoft Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구서현동 272-6 우 ) 463-824 Restricted Rights Legend All TmaxSoft Software (JEUS ) and documents are protected by copyright laws and international convention. TmaxSoft software and documents are made available under the terms of the TmaxSoft License Agreement and may only be used or copied in accordance with the terms of this agreement. No part of this document may be transmitted, copied, deployed, or reproduced in any form or by any means, electronic, mechanical, or optical, without the prior written consent of TmaxSoft Co., Ltd. 이소프트웨어 (JEUS ) 사용설명서의내용과프로그램은저작권법과국제조약에의해서보호받고있습니다. 사용설명서의내용과여기에설명된프로그램은 TmaxSoft Co., Ltd. 와의사용권계약하에서만사용이가능하며, 사용권계약을준수하는경우에만사용또는복제할수있습니다. 이사용설명서의전부또는일부분을 TmaxSoft의사전서면동의없이전자, 기계, 녹음등의수단을사용하여전송, 복제, 배포, 2차적저작물작성등의행위를하여서는안됩니다. Trademarks JEUS is registered trademark of TmaxSoft Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies. JEUS 는 TmaxSoft Co., Ltd. 의등록상표입니다. 기타모든제품들과회사이름은각각해당소유주의상표로서참조용으로만사용됩니다. Open Source Software Notice Some modules or files of this product are subject to the terms of the following licenses. : APACHE2.0, CDDL1.0, EDL1.0, OPEN SYMPHONY SOFTWARE1.1, TRILEAD-SSH2, Bouncy Castle, BSD, MIT, SIL OPEN FONT1.1 Detailed Information related to the license can be found in the following directory : ${INSTALL_PATH}/lib/licenses 본제품의일부파일또는모듈은다음의라이선스를준수합니다. : APACHE2.0, CDDL1.0, EDL1.0, OPEN SYM PHONY SOFTWARE1.1, TRILEAD-SSH2, Bouncy Castle, BSD, MIT, SIL OPEN FONT1.1 관련상세한정보는제품의다음의디렉터리에기재된사항을참고해주십시오. : ${INSTALL_PATH}/lib/licenses 안내서정보안내서제목 : JEUS EJB 안내서발행일 : 2013-04-30 소프트웨어버전 : JEUS v7.0 Fix#1 안내서버전 : v2.1.2

내용목차 안내서에대하여... xiii 제1장 EJB 소개... 1 1.1. 개요... 1 1.2. 구성요소... 2 1.3. EJB 환경및설정... 3 1.3.1. 디렉터리구조... 3 1.3.2. XML 설정파일... 5 1.3.3. 관련툴... 6 1.4. EJB 기본설정... 6 제2장 EJB 엔진... 11 2.1. 개요... 11 2.2. 주요기능... 11 2.3. EJB 엔진디렉터리구조... 13 2.4. EJB 엔진설정... 14 2.4.1. Basic 설정... 14 2.4.2. Active Management 설정... 17 2.4.3. Timer Service 설정... 19 2.5. 시스템로그설정... 19 2.6. EJB 엔진제어및모니터링... 19 2.7. EJB 엔진튜닝... 20 2.7.1. Resolution 설정튜닝... 20 2.7.2. Fast Deploy... 21 2.7.3. 최대성능을위한시스템로그설정... 21 2.7.4. Active Management 사용하지않기... 21 2.7.5. HTTP Invoke 모드사용... 21 제3장 EJB 모듈... 23 3.1. 개요... 23 3.2. EJB 모듈관리... 23 3.3. EJB 모듈조립 (Assembling)... 26 3.3.1. EJB 클래스컴파일... 26 3.3.2. Deployment Descriptors(DD) 작성... 27 3.3.3. EJB JAR 파일패키징... 30 3.4. EJB 모듈 Deploy... 30 3.4.1. Deploy... 30 3.4.2. Deploy된 EJB 모듈의디렉터리구조... 34 3.5. EJB 모듈제어및모니터링... 35 3.5.1. EJB 모듈제어... 35 3.5.2. EJB 모듈의모니터링... 38 제4장 EJB의공통특성... 43 JEUS iii

4.1. 개요... 43 4.2. EJB 설정... 45 4.2.1. 기본환경설정... 45 4.2.2. Thread Ticket 설정... 48 4.2.3. External Reference 설정과매핑... 49 4.2.4. HTTP Invoke 환경설정... 52 4.2.5. JEUS RMI 설정... 53 4.2.6. EJB 보안설정... 53 4.3. EJB 모니터링... 58 4.4. EJB 튜닝... 60 4.4.1. Thread Ticket Pool 설정튜닝... 61 제5장 EJB 상호운용성및 RMI/IIOP... 63 5.1. 개요... 63 5.1.1. 트랜잭션상호운용 (OTS)... 63 5.1.2. 보안상호운용 (CSIv2)... 64 5.2. 상호운용설정... 64 5.2.1. COS Naming Service 설정... 64 5.2.2. 상호운용성활성화설정... 65 5.2.3. CSIv2 보안상호운용설정... 65 5.2.4. EJB RMI/IIOP 설정... 66 5.3. RMI/IIOP 클라이언트... 67 5.3.1. JEUS Managed Server... 67 5.3.2. 다른벤더 WAS... 68 5.3.3. standalone 클라이언트... 68 5.4. 알려진문제점 (Known Issues)... 69 제6장 EJB 클러스터링... 71 6.1. 개요... 71 6.2. 주요기능... 72 6.2.1. Load Balancing... 72 6.2.2. Failover(EJB 복구 )... 72 6.2.3. Idempotent 메소드를통한 EJB 복구... 73 6.2.4. Session Replication... 73 6.3. EJB 클러스터링설정... 74 6.3.1. Annotation을통한클러스터링설정... 74 6.3.2. xml을통한클러스터링설정... 76 6.3.3. Stateful Session Bean의클러스터링설정... 77 6.4. EJB Failover의제한... 79 제7장 Session Bean... 81 7.1. Stateless Session Bean... 81 7.1.1. Thread Ticket Pool(TTP) 과 Object Management... 81 7.1.2. Web Service Endpoint... 82 7.2. Stateful Session Bean... 82 iv JEUS EJB 안내서

7.2.1. Thread Ticket Pool(TTP) 과 Object Management... 82 7.2.2. Pooling Session Bean... 84 7.2.3. Bean Pool 설정... 84 7.2.4. 세션데이터유지메커니즘설정... 85 7.3. 공통설정... 85 7.3.1. Object Management 관련설정... 85 제8장 Entity Bean... 89 8.1. 개요... 89 8.2. 주요기능... 91 8.2.1. 공통기능... 91 8.2.2. BMP & CMP 1.1... 95 8.2.3. CMP 1.1/2.0... 96 8.2.4. CMP 2.0... 102 8.3. Entity EJB 설정... 102 8.3.1. 공통설정... 103 8.3.2. CMP 1.1/2.0... 108 8.3.3. CMP 2.0... 113 8.3.4. DB Insert Delay 설정 (CMP Only)... 121 8.4. Entity EJB 튜닝... 122 8.4.1. 공통... 122 8.4.2. BMP & CMP 1.1... 123 8.4.3. CMP 1.1/2.0... 124 8.4.4. CMP 2.0... 124 8.5. 완전한 CMP 2.0 Entity Bean 예제... 125 제9장 Message Driven Bean(MDB)... 131 9.1. 개요... 131 9.2. MDB 설정... 131 9.2.1. 기본환경설정... 131 9.2.2. JMS 설정... 132 9.2.3. JNDI SPI 환경설정... 136 제10장 EJB Timer Service... 139 10.1. Timer Service의설정... 139 10.1.1. Persistent Timer Service 설정 (EJB 엔진 )... 139 10.1.2. Persistent Timer 처리 (jeus-ejb-dd.xml)... 141 10.1.3. Cluster-Wide Timer Service 설정... 142 10.2. 타이머모니터링... 143 10.3. Timer Service 사용주의사항... 145 10.3.1. Persistent Timer와 JDBC Connection... 145 제11장 EJB 클라이언트... 147 11.1. 개요... 147 11.2. EJB 접근을위한클라이언트프로그래밍... 147 JEUS v

11.3. InitialContext 설정... 148 11.3.1. JVM 속성을이용한 Naming 속성값설정... 149 11.3.2. Hashtable을이용한 Naming 속성설정... 150 제12장 부가기능... 151 12.1. WorkArea 서비스... 151 12.1.1. UserWorkArea 인터페이스... 151 12.1.2. PropertyMode 타입... 152 12.1.3. 예외... 152 12.1.4. Nested UserWorkArea... 152 12.1.5. UserWorkArea를사용하는응용프로그램개발... 153 Appendix A. 기본 Java 타입과 DB 필드매핑... 157 A.1. 개요... 157 A.2. Tibero 필드 - 컬럼타입매핑... 157 A.3. Oracle 필드 - 컬럼타입매핑... 158 A.4. Sybase 필드 - 컬럼타입매핑... 159 A.5. MSSQL 필드 - 컬럼타입매핑... 160 A.6. DB2 필드 - 컬럼타입매핑... 161 A.7. Cloudscape 필드 - 컬럼타입매핑... 161 A.8. Informix 필드 - 컬럼타입매핑... 162 Appendix B. Instant EJB QL API Reference... 165 B.1. 개요... 165 B.2. The EJBInstanceFinder Interface... 165 B.3. The EJBInstanceFinder Method... 165 용어해설... 167 색인... 169 vi JEUS EJB 안내서

그림목차 [ 그림 1.1] EJB 구현체의주요구성요소... 2 [ 그림 1.2] EJB 엔진설정... 7 [ 그림 2.1] EJB 엔진디렉터리구조... 13 [ 그림 2.2] EJB 엔진설정 - Basic 설정... 15 [ 그림 2.3] EJB 엔진설정 - Active Management 설정... 17 [ 그림 3.1] EJB 모듈관리순서도... 24 [ 그림 3.2] Java EE EJB 모듈 JAR 파일의구조... 25 [ 그림 3.3] 애플리케이션 deploy - 애플리케이션목록조회... 32 [ 그림 3.4] 애플리케이션 deploy - 속성설정... 33 [ 그림 3.5] 애플리케이션 deploy - 결과... 34 [ 그림 3.6] deploy된 EJB 모듈의디렉터리구조... 34 [ 그림 3.7] deploy된애플리케이션목록... 36 [ 그림 3.8] 애플리케이션 undeploy - 속성설정... 36 [ 그림 3.9] undeploy 애플리케이션 - 결과... 37 [ 그림 4.1] TTP 상태전이도... 48 [ 그림 5.1] 상호운용성활성화설정... 65 [ 그림 5.2] CSIv2 보안상호운용설정 - Interop Ssl Config... 65 [ 그림 6.1] EJB 클러스터링아키텍처... 71 [ 그림 6.2] Session Router Config 설정 - 속성설정... 78 [ 그림 7.1] Stateless Session Bean의 TTP과 Bean Pool... 81 [ 그림 7.2] Stateful Session Bean의 Connection Pool과 TTP, Bean Pool... 83 [ 그림 8.1] JEUS EJB 엔진에서 Entity Bean의 object와 Instance 관리... 91 [ 그림 8.2] ejbload() 주기적호출시나리오... 93 [ 그림 8.3] EXCLUSIVE_ACCESS 모드의시나리오... 93 [ 그림 8.4] SINGLE_OBJECT 엔진모드... 94 [ 그림 8.5] MULTIPLE_OBJECT 엔진모드... 94 [ 그림 10.1] Persistent Timer Service 설정 - 기본설정... 140 [ 그림 10.2] Persistent Timer Service - 고급선택사항... 140 [ 그림 10.3] Cluster-Wide Timer Service 설정... 142 [ 그림 10.4] Timer 모니터링... 143 [ 그림 10.5] 타이머동작취소... 144 [ 그림 12.1] 중첩된 UserWorkArea에서의등록정보... 153 JEUS vii

표목차 [ 표 4.1] JEUS EJB의설정가능한특징들과컴포넌트들... 44 [ 표 4.2] ejb-jar.xml과 JEUS EJB DD 파일의참조태그와관계... 49 [ 표 5.1] keystore와 truestore 파일에관련된 JVM D 파라미터... 66 [ 표 8.1] Entity Bean 종류의설정... 89 [ 표 8.2] 3가지엔진모드의단점과장점... 95 [ 표 8.3] EmployeeBean Instance을위한 EJB 필드들... 121 [ 표 8.4] 결과 ResultSet... 121 [ 표 8.5] Entity Bean 엔진타입선택과클러스터링사용여부... 122 [ 표 A.1] Tibero를위한 EJB CMP 필드-DB 컬럼타입매핑... 157 [ 표 A.2] Oracle을위한 EJB CMP 필드-DB 컬럼타입매핑... 158 [ 표 A.3] Sybase를위한 EJB CMP 필드-DB 컬럼타입매핑... 159 [ 표 A.4] MSSQL을위한 EJB CMP 필드-DB 컬럼타입매핑... 160 [ 표 A.5] DB2를위한 EJB CMP 필드-DB 컬럼타입매핑... 161 [ 표 A.6] Cloudscape를위한 EJB CMP 필드-DB 컬럼타입매핑... 161 [ 표 A.7] Informix를위한 EJB CMP 필드-DB 컬럼타입매핑... 162 JEUS ix

예목차 [ 예 1.1] XML 헤더 : <<domain.xml>>... 5 [ 예 1.2] XML 헤더 : <<ejb-jar.xml >>... 5 [ 예 1.3] XML 헤더 : <<jeus-ejb-dd.xml>>... 6 [ 예 3.1] EJB 표준 DD : <<ejb-jar.xml>>... 27 [ 예 3.2] JEUS EJB DD : <<jeus-ejb-dd.xml>>... 28 [ 예 4.1] Stateful Session Bean class와 DD : <<CounterEJB.java>>... 47 [ 예 4.2] Stateful Session Bean class와 DD : <<jeus-ejb-dd.xml>>... 47 [ 예 4.3] BMP Bean 설정 : <<jeus-ejb-dd.xml>>... 49 [ 예 4.4] External Reference를 JNDI로매핑 : <<CounterEJB.java>>... 50 [ 예 4.5] External Reference를 JNDI로매핑 : <<ejb-jar.xml>>... 51 [ 예 4.6] External Reference를 JNDI로매핑 : <<jeus-ejb-dd.xml>>... 51 [ 예 4.7] HTTP Invoke 환경설정 : <<jeus-ejb-dd.xml>>... 52 [ 예 4.8] 역할할당 (Role Assignment) 설정 : <<jeus-ejb-dd.xml>>... 54 [ 예 4.9] Run-as Identify 설정 : <<jeus-ejb-dd.xml>>... 55 [ 예 4.10] 보안설정 : <<CustomerBean.java>>... 55 [ 예 4.11] 보안설정 : <<EmployeeServiceBean.java>>... 56 [ 예 4.12] 보안설정 : <<ejb-jar.xml>>... 56 [ 예 4.13] 보안설정 : <<jeus-ejb-dd.xml>>... 57 [ 예 4.14] 보안설정 : <<accounts.xml>>... 57 [ 예 5.1] EJB RMI/IIOP 설정 : <<jeus-ejb-dd.xml>>... 66 [ 예 5.2] corbaname lookup 사용... 67 [ 예 5.3] PROVIDER URL 사용... 67 [ 예 5.4] Servelet EJB Injection... 68 [ 예 5.5] RMI/IIOP EJB 매핑 : <<jeus-web-dd.xml>>... 68 [ 예 5.6] standalone 클라이언트사용... 68 [ 예 5.7] NullPointerException이발생하는경우... 69 [ 예 6.1] Annotation을통한클러스터링설정 : <<CounterEJB.java>>... 74 [ 예 6.2] xml을통한클러스터링설정 : <<jeus-ejb-dd.xml>>... 76 [ 예 7.1] Bean Pool 설정 : <<jeus-ejb-dd.xml>>... 84 [ 예 7.2] Object Management 설정 : <<jeus-ejb-dd.xml>>... 86 [ 예 8.1] Oracle DB에서 Primary Key 생성설정 : <<jeus-ejb-dd.xml>>... 99 [ 예 8.2] MS SQL 서버에서자동 Primary Key 생성설정 : <<jeus-ejb-dd.xml>>... 100 [ 예 8.3] Other DB의자동 Primary Key 생성설정 : <<jeus-ejb-dd.xml>>... 101 [ 예 8.4] Entity EJB의기본공통항목설정 : <<jeus-ejb-dd.xml>>... 103 [ 예 8.5] Object Management 관련설정 : <<jeus-ejb-dd.xml>>... 104 [ 예 8.6] ejbload() 와 ejbstore() Persistence 최적화설정 : <<jeus-ejb-dd.xml>>... 106 [ 예 8.7] ejbload() 와 ejbfind() CM Persistence 최적화설정 : <<jeus-ejb-dd.xml>>... 108 [ 예 8.8] DB 스키마정보설정 : <<jeus-ejb-dd.xml>>... 109 [ 예 8.9] One-to-one/One-to-many Relationship 설정 : <<jeus-ejb-dd.xml>>... 114 [ 예 8.10] Many-to-many Relationship Mapping 설정 : <<jeus-ejb-dd.xml>>... 115 JEUS xi

[ 예 8.11] Instant EJB QL 설정 : <<jeus-ejb-dd.xml>>... 116 [ 예 8.12] XML DD 파일에 ">" 와 "<" 문자삽입 : <<ejb-jar.xml>>... 119 [ 예 8.13] DB Insert Delay 설정 : <<jeus-ejb-dd.xml>>... 121 [ 예 8.14] Remote Interface : <<Book.java>>... 125 [ 예 8.15] Home Interface : <<BookHome.java>>... 125 [ 예 8.16] Bean Implementation : <<BookEJB.java>>... 126 [ 예 8.17] Java EE EJB DD : <<ejb-jar.xml>>... 127 [ 예 8.18] JEUS EJB DD : <<jeus-ejb-dd.xml>>... 129 [ 예 9.1] 기본환경설정 : <<jeus-ejb-dd.xml>>... 132 [ 예 9.2] JMS 설정 : <<MyMDB.class>>... 132 [ 예 9.3] JMS 설정 : <<jeus-ejb-dd.xml>>... 133 [ 예 9.4] JNDI SPI 환경설정 : <<jeus-ejb-dd.xml>>... 136 [ 예 10.1] Persistent Timer의처리 : <<jeus-ejb-dd.xml>>... 141 [ 예 11.1] <<HelloClient.java>>... 147 [ 예 12.1] <<UserWorkArea 인터페이스 >>... 151 [ 예 12.2] UserWorkArea 액세스 : <<UserWorkAreaSampleSenderBean.java>>... 153 [ 예 12.3] 새 UserWorkArea 시작 : <<UserWorkAreaSampleSenderBean.java>>... 154 [ 예 12.4] WorkArea에등록정보설정 : <<UserWorkAreaSampleSenderBean.java>>... 154 [ 예 12.5] WorkArea에설정된등록정보가져오기 : <<UserWorkAreaSampleReceiverBean.java>>. 155 [ 예 12.6] UserWorkArea 완료하기 : <<UserWorkAreaSampleSenderBean.java>>... 156 xii JEUS EJB 안내서

안내서에대하여 안내서의대상 본안내서는 JEUS 시스템관리자와 JEUS 에서 Java EE Enterprise JavaBeans(EJB) 을 deploy 하려는개 발자를대상으로한다. 안내서의전제조건 본안내서는 EJB 개념을시작으로 JEUS에서 EJB 엔진, EJB 모듈그리고 EJB 클라이언트까지다루고있다. 본안내서를이해하기위해서는다음의지식을필요로한다. JEUS에대한전반적인이해 "JEUS Server 안내서 " 참조 Java EE 스펙에대한이해 EJB의기본개념 안내서의제한조건 본안내서에서는 EJB 에대한기본적인설명은제공하지않으므로별도의자료를참고한다. 참고 Entity Bean 은 EJB 3.0 부터 JPA 로대체되었으므로 "JEUS JPA 안내서 " 를참조한다. 안내서에대하여 xiii

안내서구성 본안내서는총 12개의장과 2개의 Appendix로구성되어있다. 제1장 EJB 소개 EJB의구성요소와특성그리고간단한설치및환경설정방법에대해서설명한다. 제2장 EJB 엔진 EJB 엔진개념과 JEUS EJB의최상위레벨의개념인구조, 설정, 모니터링과튜닝에대해서설명한다. 제3장 EJB 모듈 EJB 모듈의구조와관리방법에대해서설명한다. 제4장 EJB의공통특성 EJB 공통특성에대해서소개한다. 제5장 EJB 상호운용성및 RMI/IIOP EJB의상호운용성및 RMI/IIOP에대해서설명한다. 제6장 EJB 클러스터링 EJB 클러스터링개념과주요기능설정방법에대해서설명한다. 제7장 Session Bean Stateless Session Bean과 Stateful Session Bean에대해서설명한다. 제8장 Entity Bean EJB들을설정하고튜닝할때필요한모든정보를설명한다. 제9장 Message Driven Bean(MDB) MDB를 EJB 엔진에서사용할때유의해야할사항들을설명한다. 제10장 EJB Timer Service JEUS EJB에서제공하는타이머서비스와이를사용하기위한설정에대해서설명한다. 제11장 EJB 클라이언트 EJB 클라이언트프로그램밍예제와 Initial Context 설정방법에대해서설명한다. 제12장부가기능 JEUS에서 EJB를개발할때사용할수있는부가기능들에대해서설명한다. Appendix A. 기본 Java 타입과 DB 필드매핑 Java 필드종류와 JEUS에서지원하는주요 DB 벤더의데이터베이스컬럼종류와의기본매핑을설명한다. Appendix B. Instant EJB QL API Reference Instant EJB QL API Reference로메소드와인터페이스의사용법에대해서설명한다. xiv JEUS EJB 안내서

안내서규약 표기 <<AaBbCc123>> <Ctrl>+C [Button] 진하게 " "( 따옴표 ) ' 입력항목 ' 하이퍼링크 > +---- ---- 참고주의 [ 그림 1.1] [ 표 1.1] AaBbCc123 의미프로그램소스코드의파일명 Ctrl과 C를동시에누름 GUI의버튼또는메뉴이름강조다른관련안내서또는안내서내의다른장및절언급화면 UI에서입력항목에대한설명메일계정, 웹사이트메뉴의진행순서하위디렉터리또는파일있음하위디렉터리또는파일없음참고또는주의사항주의할사항그림이름표이름 Java 코드, XML 문서 [command argument] < xyz > 옵션파라미터 < 와 > 사이의내용이실제값으로변경됨선택사항. 예 ) A B: A나 B 중하나파라미터등이반복되어서나옴 안내서에대하여 xv

시스템사용환경 본안내서의모든예제와환경구성은 UNIX의스타일에준하여작성되어 Microsoft Windows ( 이하 Windows) 와같이다른환경에서작업하는경우몇가지사항을고려해야한다. 예를들어경로구분자의경우 UNIX 스타일인 / 를 Windows 스타일인 \ 로바꿔서사용한다. 또한환경변수도 Windows 스타일로변경해서사용하면된다. 문서의내용은 Java 표준을고려해서작성했기때문에대부분의내용은동일하게적용된다. 관련안내서 안내서 JEUS Server 안내서 JEUS JPA 안내서 JEUS Applications & Deployment 안내서 JEUS Application Client 안내서 JEUS Reference Book 설명 JEUS 서버에대한설명과시스템관리를위한방법을기술한안내서이다. JEUS에통합된 TopLink Essential의사용방법에대해기술한안내서이다. Java EE 애플리케이션을 JEUS에 Deploy하기위한여러가지방법과툴에대해기술한안내서이다. Java EE 클라이언트와 JEUS 사이의상호운용에대해기술한안내서이다. JEUS를사용할때도움이되는 Reference를기술한안내서이다. 참고자료 EJB 3.1 Specification XML Reference - domain.xml 설정 JEUS_HOME/docs/reference/schema/index.html XML Reference - jeus-ejb-dd.xml 설정 JEUS_HOME/docs/reference/schema/index.html xvi JEUS EJB 안내서

연락처 Korea TmaxSoft Co., Ltd 272-6, Seohyeon-dong, Bundang-gu, Seongnam-si, Gyeonggi-do, 463-824 South Korea Tel: +82-31-8018-1000 Fax: +82-31-8018-1115 Email: info@tmax.co.kr Web (Korean): http://www.tmax.co.kr 기술지원 : http://technet.tmaxsoft.com USA TmaxSoft, Inc. 560 Sylvan Avenue Englewood Cliffs, NJ 07632 U.S.A Tel: +1-201-567-8266 Fax: +1-201-567-7339 Email: info@tmaxsoft.com Web (English): http://www.tmaxsoft.com Japan TmaxSoft Japan Co., Ltd. 5F Sanko Bldg, 3-12-16 Mita, Minato-Ku, Tokyo, 108-0073 Japan Tel: +81-3-5765-2550 Fax: +81-3-5765-2567 Email: info@tmaxsoft.co.jp Web (Japanese): http://www.tmaxsoft.co.jp 안내서에대하여 xvii

China TmaxSoft China Co., Ltd. Beijing Silver Tower, RM 1508, 2# North Rd Dong San Huan, Chaoyang District, Beijing, China, 100027 China Tel: +86-10-6410-6145~8 Fax: +86-10-6410-6144 Email: info.cn@tmaxsoft.com Web (Chinese): http://www.tmaxsoft.com.cn xviii JEUS EJB 안내서

제 1 장 EJB 소개 본장에서는 EJB 의구성요소와특성, 그리고간단한설치와환경설정방법에대해서설명한다. 1.1. 개요 JEUS는 JSR 318 Enterprise JavaBeansTM 3.1( 이하 EJB 3.1) 을지원하고있다. EJB 3.1 표준 ( 이하 EJB 표준 ) 은복잡하고중요한고성능의비즈니스로직을개발할때개발자의노력을최소화하면서도이식성이뛰어난비즈니스컴포넌트를작성할수있는구조를기술하고있다. EJB 3.1에따르면 EJB의정의는다음과같다. "EJB 아키텍처는객체지향분산엔터프라이즈애플리케이션의개발및분산배치를위한컴포넌트이다. EJB로작성된애플리케이션은확장성, 트랜잭션처리그리고동시사용자처리에안전하다. EJB 스펙을준수한애플리케이션은한번작성되면어떠한서버플랫폼에도배치된다." JEUS 는위에서언급한 " 서버플랫폼 " 의역할을담당한다. 본안내서에서는 JEUS 에서구현한 EJB 구현체와엔터프라이즈환경에필수적인부가기능에대해서설 명한다. 참고 더자세한스펙구현정보들은 "JEUS 소개 " 를참조한다. JEUS EJB는클러스터링을통한성능과안정성을더하기위해 JEUS는표준외에 2가지추가기능을제공한다. 성능개선을위한 Load Balancing 기능 안정성확장을위한 Failover 기능이기능들을사용하려면 2개이상의 Managed Server( 이하 MS) 가클러스터로구성되어있어야한다. 참고 EJB 클러스터링에대한자세한내용은 제 6 장 EJB 클러스터링 을참고하고, MS 클러스터링에대한 자세한내용은 JEUS Domain 안내서 의 제 5 장 JEUS 클러스터링 을참고한다. 제 1 장 EJB 소개 1

1.2. 구성요소 다음은 EJB 구현체의주요구성요소에대한그림이다. [ 그림 1.1] EJB 구현체의주요구성요소 EJB Engine Main Settings Active Mngmnt. Startup/Sh utdown classes Logging HTTP Invoke EJB Module* ( " * " = zero or more) Module info EJB Relation Map Stateless Session Bean* Stateful Session Bean* BMP Entity Bean* CMP Entity Bean* Messagedriven Bean* EJB 엔진 EJB 3.1에서설명하는 EJB 컨테이너에해당하는것으로 deploy된 EJB 모듈의실행환경을제공한다. EJB 엔진은 제2장 EJB 엔진 에서자세히설명한다. EJB 모듈각각의 EJB 컴포넌트를그룹화하고관리할수있는단위이다. JEUS에서는 EJB 컴포넌트를 deploy하고제어할때 EJB 모듈을기본단위로하므로, EJB 모듈은반드시하나이상의 EJB 컴포넌트를포함하고있다. EJB 모듈에대해자세한내용은 제3장 EJB 모듈 에서설명한다. EJB 컴포넌트 EJB 모듈내에속해있으며실제비즈니스컴포넌트를일컫는다. 각 EJB 컴포넌트의공통특성은 제4 장 EJB의공통특성 을참고한다. EJB 컴포넌트는다음과같이 5가지종류로구분된다. 각컴포넌트에대한자세한내용은각장을참고한다. Stateless Session Bean : 제7장 Session Bean Stateful Session Bean : 제7장 Session Bean BMP Entity Bean : 제8장 Entity Bean CMP 1.1 & CMP 2.x Entity Bean : 제8장 Entity Bean MDB : 제9장 Message Driven Bean(MDB) 참고 Entity Bean 은 EJB 3.0 부터 JPA 로대체되었으므로이에대해서는 "JEUS JPA 안내서 " 를참고한다. 2 JEUS EJB 안내서

1.3. EJB 환경및설정 JEUS EJB 에관련된환경설정요소들은 EJB 에관련된디렉터리구조와 EJB 설정파일들, 각종툴등으로 구성된다. 또한 EJB 와관련된시스템프로퍼티들과그특성들도설명한다. 1.3.1. 디렉터리구조 다음은 JEUS EJB 에관련된디렉터리들과파일에대한설명이다. 제 1 장 EJB 소개 3

bin 관리자가 EJB를관리할때사용할수있는실행스크립트들이저장된다. 여기에는 jeusadmin, appcom piler 등이있다. domains\<domain name>\config 현재의 JEUS 시스템의주요설정디렉터리이다. 이디렉터리에는 domain.xml 파일이위치한다. domains\<domain name>\servers\<server name>\logs EJB 엔진의로그파일이위치한다. EJB 로그의파일핸들러를별도로지정한경우별도의파일로생성된다. 핸들러가없는경우에는서버의로그설정을따른다. domains\<domain name>\.application\ 도메인에서사용하는애플리케이션들의 Archive 파일이복사되고이 Archive 파일을풀어놓은디렉터리가위치한다. 애플리케이션의 Archive 파일과풀린디렉터리에는 EJB 구현클래스들과 helper 클래스들이포함되어있다. 파일 <EAR archive file> <EJB archive file> 설명 EAR application-id 이름의디렉터리밑에 EAR 애플리케이션의구성파일이그대로복사된다. EJB module-id 이름의디렉터리밑에 EJB 모듈을구성하는파일이그대로복사된다. lib\schemas EJB 와관련된스키마파일이다음과같이디렉터리별로위치한다. 하위디렉터리 javaee jeus 설명 EJB 와관련된모든 Java EE XML 스키마파일들이위치한다. EJB 와관련된모든 JEUS XML 스키마파일들이위치한다. samples\ejb 여러종류의 EJB 들을구현해놓은예제코드들과하위디렉터리들이포함되어있다. 참고디렉터리목록에서사용된 "<", ">" 표현 ( 예 "<server name>/ ) 은그사이에사용된문자들은실제시스템설정값으로대체되어야한다. 예를들어, 실제시스템이 "server1" 이라면 JEUS MS는 "server1" 이라고값이설정되어야한다. 그러므로 "<server name>/" 표현은실제시스템에서 "server1/" 이라는이름의디렉터리로대체되어야한다. 4 JEUS EJB 안내서

1.3.2. XML 설정파일 다음은 JEUS EJB의관리와설정에관련된 XML 설정파일이다. XML 설정파일들의내용은반드시표준, 즉 JEUS에서정의된 XML 헤더로시작되어야한다. 각설정파일의 XML 스키마파일은 JEUS_HOME/lib/schemas/jeus/ 디렉터리에위치한다. 또한 Root Element는 JEUS XML 스키마의 namespace를기존 name-space로지정해야한다. domain.xml (jeus-domain.xsd) EJB 엔진에대한설정을한다. 자세한설명은 "JEUS Server 안내서 " 와 제2장 EJB 엔진 을참고한다. 위치 JEUS_HOME/domains/<domain name>/config domain.xml의 XML 헤더 [ 예 1.1] XML 헤더 : <<domain.xml>> <?xml version="1.0"?> <jeus-system xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="7.0"> ejb-jar.xml (ejb-jar_3_1.xsd) 주 EJB 엔진설정파일이다. 자세한설명은 EJB 3.1 스펙을참고한다. 위치 META-INF\ 표준 JAR 파일내의구조 ejb-jar.xml의 XML 헤더 ejb-jar.xml의 XML 헤더는 EJB 표준에포함되어있다. [ 예 1.2] XML 헤더 : <<ejb-jar.xml >> <?xml version="1.0"?> <ejb-jar version="3.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"> jeus-ejb-dd.xml (jeus-ejb-dd.xsd) JEUS EJB 모듈을위한 JEUS Deployment Descriptors( 이하 DD) 정보를설정한다. 자세한설명은 제3 장 EJB 모듈 을참고한다. 위치 META-INF\ 표준 JAR 파일내의구조 jeus-ejb-dd.xml 의 XML 헤더 제 1 장 EJB 소개 5

[ 예 1.3] XML 헤더 : <<jeus-ejb-dd.xml>> <?xml version="1.0"?> <jeus-ejb-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="7.0"> 참고본안내서에서사용되는모든태그순서는 XML 스키마의설정순서대로작성되어있다. 태그순서는 "JEUS XML Reference" 를참고한다. 그러나실제사용할때는순서를제대로지키기가쉽지않으므로 JEUS에서는태그순서를자동으로정렬해주는기능을제공한다. 그러므로 XML 설정파일을작성할때순서를정확하게지키지않아도무방하다. 위파일들의예제가본안내서에서사용될때에는표준헤더가편의상생략되어사용되고있다. 실제 XML 설정파일에는이헤더들이포함되어있다는것에주의한다. 1.3.3. 관련툴 다음은 EJB 엔진, EJB 모듈그리고 EJB 컴포넌트를관리하기위해사용되는툴이다. 콘솔툴 (jeusadmin) JEUS 콘솔툴은 EJB 엔진을제어하고모니터링하기위해사용된다. 자세한내용은 JEUS Reference Book 의 4.2.7. EJB 엔진관련명령어 를참고한다. WebAdmin WebAdmin은 JEUS의 GUI 기반의관리툴로콘솔툴에서가능한모든작업을지원한다. WebAdmin에대한자세한내용은 "JEUS WebAdmin 안내서 " 를참고한다. 참고 EJB 2.x 를위한 appcompiler 에대한설명은 JEUS Reference Book 의 4.3. appcompiler 를참고한 다. 1.4. EJB 기본설정 본절에서는 JEUS에서 EJB를사용하기위한설치단계를설명한다. 다음은 'server1' 이라는이름의서버에 EJB 엔진을설정하는과정에대한설명이다. 1. JEUS가제대로설치되었는지확인하고, 환경변수를확인한다. 2. COMMAND 화면을실행하고 $JEUS_HOME/bin에서다음과같이입력하면 DAS가기동된다. $ startdomainadminserver -domain domain1 -u administrator -p passsword1 -verbose [2012.05.06 21:33:15][2] [adminserver-1] [SERVER-0248] JeusServer is STARTING 6 JEUS EJB 안내서

[2012.05.06 21:33:16][3] [adminserver-1] [Security-0082] JEUS security manager started [2012.05.06 21:33:16][3] [adminserver-1] [SERVER-0173] JNDI Naming Server started [2012.05.06 21:33:18][3] [adminserver-1] [GMS-1904] ----------------- [check components (domain1_1525167185)] DomainAdminServer = ready ----------------- [2012.05.06 21:33:28][2] [launcher-10] [Launcher-0034] The server[adminserver] initialization successfully done [pid : 2380] [2012.05.06 21:33:28][0] [launcher-1] [Launcher-0040] Successfully started server. The server is RUNNING now. 참고위에보이는 [3] 은로그레벨중 CONFIG를의미한다. 따라서 CONFIG 이상의로그레벨이설정되어있을경우에만확인가능하다. 3. WebAdmin에서 [Servers] 메뉴를선택하면서버목록조회화면으로이동한다. 서버목록에서서버 (MS) 를선택하면서버설정화면으로이동하고, [Engine] > [Ejb Engine] > [Basic] 메뉴에서 EJB 엔진에대해설정할수있다. 설정이없어도기본값으로동작된다. [ 그림 1.2] EJB 엔진설정 제 1 장 EJB 소개 7

참고 JEUS에서제공되는툴을통한 MS 의설정변경은 DAS가기동되어있는상태에서가능하다. 4. 다른 COMMAND 화면에서다음과같이명령을실행한다 ( 호스트정보는 DAS의정보이다 ). $ jeusadmin -host localhost:9736 User name: 5. 설치할때설정한관리자의사용자이름과패스워드를입력한다. User name: administrator Password: 6. COMMAND 화면에서다음과같이입력하고실행하면서버가기동 (Booting) 된다. $ startmanagedserver -domain domain1 -server server1 -u administrator -p passsword1 -verbose... [2012.05.07 14:10:10][2] [server1-1] [SERVER-0248] JEUS Server is STARTING... [2012.05.07 14:10:17][2] [server1-1] [SERVER-0248] JEUS Server is RUNNING 7. help 명령을입력하면 EJB 엔진에대한모니터링과관리에대한명령어들을조회할수있다. [DAS]domain1.adminServer>help -g EJB [ EJB] cancel-ejb-timer Cancel active EJB timers. ejb-timer-info List active EJB timers; If no option is specified, a list of EJB modules containing timers will be displayed. modify-active-management Modify active management configuration. modify-check-resolution Set the check resolution of EJB engine in the server. show-active-management Show the active management of EJB engine in the server. show-check-resolution Show the check resolution of EJB engine in the server. For the detailed information of a specified command, use 'help [COMMAND_NAME]'. ex) help connect 8. 종료하려면 COMMAND 화면에 stop-server( 서버종료 ) local-shutdown(das 종료 ) exit( 툴종료 ) 를순서대로입력한다. [DAS]domain1.adminServer>stop-server server1 Server [server1] is stopped successfully. [DAS]domain1.adminServer>local-shutdown 8 JEUS EJB 안내서

The server [adminserver] has downed successfully. offline>exit 9. 전체 JEUS 시스템이종료된다. 참고 설치와설정에대한자세한내용은 "JEUS 설치및시작하기 " 와 "JEUS Server 안내서 " 를참고한다. 제 1 장 EJB 소개 9

제 2 장 EJB 엔진 본장에서는 EJB 엔진에대한기초적인사항과 JEUS EJB 의최상위레벨의개념인구조, 설정, 운영, 모니 터링과튜닝에대해설명한다. 2.1. 개요 EJB 엔진은 EJB의운영환경을제공한다. EJB 표준에서는 EJB 컨테이너라는용어가사용되고있으며, 본안내서에서사용한 EJB 엔진과동일한개념이다. EJB 모듈, EJB deploy에대한상세한정보는각각 제3장 EJB 모듈 과 제4장 EJB의공통특성 을참고한다. 2.2. 주요기능 다음은 EJB 엔진의주요기능에대한설명이다. EJB 엔진과 Managed Server(MS) 하나의 MS에는하나의 EJB 엔진이존재한다. 그러나하나의도메인에는여러개의 MS가존재할수있기때문에하나의도메인에여러개의 EJB 엔진이존재할수있다. 일반적으로여러개의머신이나 CPU 위에여러개의 MS에 EJB 엔진이설정되고, DAS에의해 MS는클러스터로묶이는데이러한설정을 EJB 클러스터링이라고한다. 이구조는시스템의성능향상과높은안정성및보안성을유지해주는효율적인시스템구조이다. EJB 클러스터링에대한자세한내용은 제6장 EJB 클러스터링 을참고한다. EJB 엔진기본설정 EJB 엔진은 domain.xml의 <ejb-engine> 에서설정한다. 자세한내용은 2.4. EJB 엔진설정 을참고한다. EJB 엔진 Logging domain.xml의설정에따라 MS에로그를남길수있지만특별히 EJB 엔진의로그 (jeus.ejb) 만별도로남길수있다. 이때 EJB 엔진로그를별도로남기더라도 MS 로그에는 EJB 엔진로그가남는다. Logger의핸들러에파일핸들러가지정되면지정한파일명으로로그파일이생성된다. 또한, 콘솔핸들러를사용하면모든로그메시지를화면에남길수도있다. 일반적으로이런상황에서는로그메시지가파이프를통하여 MS가시작된 COMMAND 화면에출력된다. 참고 그외에사용자가생성한사용자핸들러를등록할수있다. 자세한설명은 JEUS Server 안내서 의 제 8 장 Logging 을참고한다. 제 2 장 EJB 엔진 11

Active Management Active management는 EJB 모듈에문제가발생한경우에 EJB 엔진이자체적으로이메일 (e-mail) 로통지를보내주는기능이다. 예를들어 Bean 클래스의잘못된구현으로인해서무한루프에빠지거나 Deadlock과같은심각한오류가발생했을때 EJB 엔진이이를감지하여통지를보내주도록되어있다. 부가적으로오류처리정책을설정할수있어서비정상적인현상이발생한경우에이메일통지뿐만아니라해당 EJB 엔진이동작하는 MS를자동으로재시작시킬수도있다. Active Management에대한자세한설정은 2.4. EJB 엔진설정 을참고한다. HTTP Invoke 원격클라이언트가 JNDI 서비스를통해서 EJB 인스턴스를찾을때클라이언트는 EJB 메소드를호출할수있는 RMI Stub을받는다. 기본적으로 Stub은 RMI 런타임을통해서 EJB와원격통신이이루어지며, RMI 통신은 TCP 소켓을기반으로하고있다. 이방식은 RMI 통신포트를별도로필요로하기때문에방화벽이있는환경에서는문제가될수있다. 이경우특별한통신모드가필요한데이것이 HTTP Invoke 모드이다. 이모드를사용할경우원격클라이언트의 RMI 요청을 HTTP로감싸서웹엔진으로보내고웹엔진은 RMI 요청을다루는서블릿 (jeus.rmi.http.servlethandler) 으로요청을전달한다. 이서블릿은 RMI 런타임으로요청을전달해서실제 EJB 메소드를호출한뒤그결과를 HTTP 응답으로감싸서원격클라이언트로전달한다. HTTP Invoke 모드는 EJB 엔진또는 EJB 컴포넌트별로설정할수있다. domain.xml의 <invoke-http> 에 HTTP Invoke 모드가설정되면 EJB 엔진내의모든모듈에적용된다. EJB 모듈의 jeus-ejb-dd.xml에서는특정 EJB 컴포넌트에만적용할수있다. 이때 jeus-ejb-dd.xml의설정이 EJBMain.xml의설정보다우선한다. EJBMain.xml과 jeus-ejb-dd.xml의설정에대한자세한내용은 2.4.3. Timer Service 설정 을참고한다. 12 JEUS EJB 안내서

2.3. EJB 엔진디렉터리구조 다음은 EJB 엔진을관리할때사용하게되는디렉터리와파일의목록이다. [ 그림 2.1] EJB 엔진디렉터리구조 JEUS_HOME\ bin\ 0I 0I appcompiler jeusadmin domains\ Legend: 0I: binary or executable file X: XML document J: JAR file T: Text file C: Class file V: Java source file <domain name>\ config\ X domain.xml servers\ <server name>\ logs\ T error.log lib\ schemas\ javaee\ jeus\ 기본디렉터리에대한내용은 1.3.1. 디렉터리구조 와동일하고, 다음은 EJB 엔진에서주로사용하는디렉터리에대한설명이다. bin EJB 엔진을관리하는툴이위치한디렉터리이다. EJB 엔진관리툴 appcompiler jeusadmin 설명 EJB를 deploy하기위해필요한클래스를생성하고컴파일해서 Fast Deploy를수행한다. EJB 엔진을제어하고모니터링하기위해사용된다. EJB 를 deploy 하기위해필요한클래스를생성하고컴파일해서 Fast Deploy 를하게한다. 제 2 장 EJB 엔진 13

domains/<doamin name>/servers/<server name>/logs EJB 엔진의로그파일이위치한디렉터리이다. EJB 로그의파일핸들러를별도로지정한경우별도 의파일로생성된다. 핸들러가없는경우에는서버의로그설정을따르게된다. 2.4. EJB 엔진설정 본절에서는 WebAdmin을사용하여 EJB 엔진을설정하는방법을설명한다. WebAdmin을통한 EJB 엔진설정은크게다음의 3가지설정으로나눌수있다. WebAdmin을사용하여설정된내용은 JEUS_HOME/domains/<domain name>/config에위치한 domain.xml 파일에저장된다. Basic Active Management Timer Service 참고 하나의 MS 에는하나의 EJB 엔진이존재한다. MS 를추가하는방법에대한자세한내용은 JEUS Server 안내서 의 제 2 장 JEUS 설정 을참고한다. 2.4.1. Basic 설정 WebAdmin을사용한 EJB 엔진의 Basic 설정과정은다음과같다. 1. WebAdmin의 [Servers] 메뉴를선택하면서버목록조회화면으로이동한다. 서버목록에서실행할서버를선택하여서버설정화면으로이동한후 [Engine] > [Ejb Engine] > [Basic] 메뉴를선택한다. 2. [LOCK & EDIT] 버튼을클릭해서설정변경모드로전환한다. 14 JEUS EJB 안내서

3. EJB Engine 화면에서 EJB 엔진에대한기본적인항목을설정하고 [ 확인 ] 버튼을클릭한다. [ 그림 2.2] EJB 엔진설정 - Basic 설정 다음은기본정보및고급선택사항의영역별설정항목에대한설명이다. 기본정보 제 2 장 EJB 엔진 15

항목 Resolution Use Dynamic Proxy For Ejb2 설명 Active Management의체크주기와 Passivation 체크주기를설정한다. 즉, Block 된스레드를감지하는주기와 Passivation 타임아웃동안클라이언트로부터요청을받지않은 Bean을감지하는주기이다. 기존 RMI Stub 방식대신 Dynamic Proxy 방식을사용한다. Ejb Engine 항목 Enable User Notify 설명 옵션을설정하면 EJB Exception 이서버에설정한 user log 에남게된다. user log 에대한설명은 JEUS Server 안내서 의 제 8 장 Logging 을참고한다. Async Service Asynchronous invocation service 를위한설정이다. 항목 Thread Min Thread Max Access Timeout 설명유지할스레드개수의최솟값을설정한다. 유지할스레드개수최댓값을설정한다. Async 메소드가수행이완료된후일정시간이지나도클라이언트에서 get을하지않으면 Future 객체를없애버리는시간이다. 이는클라이언트의실수로 get 을하지않는경우 Memory Leak 의발생을방지하 기위한설정이다. Invoke Http EJB RMI Stub 이 RMI 런타임포트를접근할수없는상황일경우에설정한다. 항목 Url 설명 RMI Stub 으로부터호출되는 RMI 핸들러서블릿의 URI 를입력한다. URI에는프로토콜, IP 주소, 포트를제외한서블릿요청경로만을넣는다. 즉, rmihandlerservlet.war의 jeus-web-dd.xml에설정한 <contex-path> 와 web.xml 에설정한 <url-pattern> 을이어서입력한다. jeus-web-dd.xml을별도로생성하지않으면 <contex-path> 의기본값인 war 이름으로예에서는 rmihan dlerservlet이된다. 프로토콜은 "HTTP" 로 IP는 RMI 런타임과동일한주소로간주된다. HTTP-RMI 요청을받은웹서버와웹엔진이 RMI 런타임과같은머신에있어야한다. 그러면 RMI 런타임의주소는 RMI Stub에게알려지게된다. 웹서버의포트는반드시다음 <http-port> 에설정해야한다. 16 JEUS EJB 안내서

항목 설명 JEUS에서제공하는 rmihandlerservlet.war에는 jeus-web-dd.xml이포함되어있지않다. 따라서기본적으로컨텍스트는모듈이름과같은 rmihadlerservlet 을사용하게된다. 또한 web.xml에는 <url-pattern> 이서블릿핸들러가설정되어있다. 기본값외의설정을사용하고싶은경우에는 jeus-web-dd.xml을생성하고 web.xml를수정한후 rmihandlerservlet.war를 deploy한다. Http Port HTTP-RMI 요청을받고처리할웹서버또는웹엔진을설정한다. 웹서버및웹 엔진에는반드시 RMI 핸들러서블릿이 deploy 되어실행되고있어야한다. 4. 설정내용의동적반영을위해 [Activate Changes] 버튼을클릭한다. 2.4.2. Active Management 설정 Active Management 설정은엔진재시작조건들과이메일통보기능으로나누어진다. 엔진재시작조건은 EJB 엔진이재시작하기전까지의허용가능한최대 Block된 EJB 스레드수로결정된다. WebAdmin을사용한 EJB 엔진의 Active Management 설정과정은다음과같다. 1. WebAdmin의 [Servers] 메뉴를선택하면서버목록조회화면으로이동한다. 서버목록에서실행할서버를선택해서서버설정화면으로이동한후 [Engine] > [Ejb Engine] > [Active Management] 메뉴를선택한다. 2. [LOCK & EDIT] 버튼을클릭해서설정변경모드로전환한다. 3. Active Management 화면에서항목을설정하고 [ 확인 ] 버튼을클릭한다. [ 그림 2.3] EJB 엔진설정 - Active Management 설정 제 2 장 EJB 엔진 17

다음은기본정보및고급선택사항의영역별설정항목에대한설명이다 기본정보 항목 Max Blocked Thread 설명 EJB 엔진이재시작하기전까지허용할수있는 Block된 EJB 스레드의최대개수이다. 이값이작게설정되어있다면 EJB 엔진이너무자주재시작될수도있기때문에주의해야한다. 기본값으로설정하면 Block 된스레드개수에대한제한이없음을의미한다. 즉, 기본적으로 EJB 엔진은 Block 된스레드때문에재시작되지않는다. Max Idle Time 지정된시간동안스레드가 Block 된상태로요청을받지않고 idle 상태에있 으면 "Block 된스레드리스트 " 로추가된다. 이설정은엔진에서 Block 된스레드로판단하는기준이된다. Email Notify 재시작조건에따라 EJB 엔진이시작될경우에이메일통보를보내기위한정보를설정한다. 다음은하위설정항목에대한설명이다. 항목 Smtp Host Address From Address Sender Id 설명메시지를전송할때사용할 SMTP 의주소로이주소는호스트이름이나 IP 주소로설정해야한다. 메일송신자의주소를설정한다. SMTP 주소를통해인증받을 ID를설정한다. 18 JEUS EJB 안내서

항목 Sender Password To Address Property Cc Address Bcc Address 설명 SMTP 주소를통해인증받을 ID의암호를설정한다. 메일수신자의주소를설정한다. 기본적인 SMTP property 외에추가로필요한 property 가있다면 key, value의형태로설정한다. 메일을참조로받을수신자의주소를설정한다. 메일을숨은참조로받을수신자의주소를설정한다. 4. 설정내용의동적반영을위해 [Activate Changes] 버튼을클릭한다. 2.4.3. Timer Service 설정 EJB Timer Service는 EJB가특정한시간또는주기적으로 callback을받을수있도록하는서비스이다. 기본적인사용방법은 EJB 스펙에설명되어있으므로 JEUS EJB에서제공하는 Timer Service와이를사용하기위한설정에대해서만설명한다. 자세한내용은 제10장 EJB Timer Service 를참고한다. 2.5. 시스템로그설정 EJB 엔진의 System Logging과 User Logging은 WebAdmin의다음메뉴에서설정할수있다. System Logging 설정 WebAdmin의 [Servers] > 서버선택 > [Basic] > [System Logging] 메뉴에서설정한다. User Logging 설정 WebAdmin의 [Servers] > 서버선택 > [Basic] > [User Logging] 메뉴에서설정한다. System Logging 설정은 EJB 엔진뿐만아니라다른모든엔진에도적용되는공통적인설정이므로자세한내용은 JEUS Server 안내서 의 제8장 Logging 을참고한다. 2.6. EJB 엔진제어및모니터링 EJB 엔진을제어하는것은다른 JEUS 엔진 ( 서블릿또는 JMS) 을제어하는것과많은유사점을가진다. WebAdmin 및콘솔툴을사용하여 EJB 엔진의실행환경정보와상태정보를모니터링할수있다. WebAd min을사용한 EJB 엔진의제어및모니터링방법은다음과같다. EJB 엔진제어 WebAdmin의 [Servers] 메뉴를선택하여나타나는서버목록에서원하는서버명을선택한후, [Engine] > [Ejb Engine] 을선택하면된다. EJB 엔진모니터링 제 2 장 EJB 엔진 19

WebAdmin 의 [RUNTIME INFO] 버튼을클릭한뒤 EJB 엔진제어를위한메뉴선택과같은방법으로모 니터링하려는 EJB 엔진을선택하면된다. 참고 1. EJB 엔진에대한모니터링은 WebAdmin을사용할것을권장한다. WebAdmin이콘솔툴에비해자세하고완벽한엔진상태정보를제공한다. WebAdmin에대한자세한내용은 "JEUS WebAdmin 안내서 " 를참고한다. 2. 콘솔툴을통해기본적인실행환경정보를얻을수있다. 더자세한내용은 JEUS Reference Book 의 4.2.7. EJB 엔진관련명령어 를참고한다. 2.7. EJB 엔진튜닝 EJB 엔진의전체적인성능향상을위해설정을변경할수있다. 본절에서는 EJB 엔진의성능관련설정을간략하게설명한다. 튜닝을위해필요한사항은다음과같다. Resolution 설정튜닝 Fast Deploy 기능사용 최대성능을위한시스템로그설정 Active Management 사용하지않기 HTTP Invoke 모드사용 참고 EJB 엔진의정보나팁에대해서는 "JEUS XML Reference" 의 "11. domain.xml EJB 엔진설정 " 을참 고한다. XML/Schema 중 "P" 라고표시된것은성능과관련된것이다. 2.7.1. Resolution 설정튜닝 Resolution은 EJB 엔진의상태를체크하는주기로 2가지주기로사용된다. Block된스레드개수가몇개인지검사한후, EJB 엔진을재시작하는 Active management의체크주기를나타낸다. 모든하위컴포넌트들 ( 예, Bean pool) 을점검하고, 각 Bean이비활성화대상인지검사하는 passivation 의체크주기를나타낸다. Resolution 값이클수록시스템메모리나기타리소스의회수주기가길어져자원활용률은떨어지지만이에대한작업수행이덜발생하므로엔진의성능은향상된다. 이값을작게하면엔진은최신상태를유지하겠지만전체적인성능은저하된다. 따라서메모리크기나용도에따라서 Resolution 값을적절하게설정하는것이매우중요하다. 20 JEUS EJB 안내서

참고 Resolution 값의설정에따라 <passivation-timeout> 이나 <disconnect-timeout> 이원하는때에발생 하지않을수있으므로주의해야한다. 2.7.2. Fast Deploy Fast deploy 옵션은 EJB에설정하지않고애플리케이션별로설정하는것이지만성능에큰영향을미친다. 엔진이기동될때 deploy되어야할 EJB 모듈들이이미컴파일되어 RMI Stub과 Skeleton이있다면 deploy 명령을사용할때 fast 옵션을추가한다. 이는엔진이 EJB 모듈을 deploy할때 RMI 클래스를생성하지않도록하는것이다. EJB 모듈과 deploy에대한자세한내용은 제3장 EJB 모듈 을참고한다. 2.7.3. 최대성능을위한시스템로그설정 시스템로그는성능개선을위해 3가지방법으로조정가능하다. 가능하면파일핸들러를사용해서 Logging이빠르게이루어지도록하는게좋다. 파일핸들러의버퍼크기를크게설정한다. 로그레벨을 'SEVERE' 로설정한다. 주의위의제안은안정적인운영환경에서만적용되어야한다. 개발환경에서는 " 반대 " 의값들이설정되어야한다. 즉, 콘솔핸들러를사용하고, 작은버퍼크기를사용하고, 'FINE' 로그레벨을사용하는것이개발을용이하게한다. 2.7.4. Active Management 사용하지않기 EJB 엔진레벨에 Active Management의사용이반드시필요한것은아니다. 설정에따라성능저하를가져올수있기때문에기본적으로는사용하지않는다. 대신서블릿엔진에정의된 Active Management를사용하는것이편리하다. 그러므로일반적으로 Active Management 설정은생략하는경우가많다. 2.7.5. HTTP Invoke 모드사용 클라이언트가많은경우 HTTP Invoke 모드를사용하면성능향상효과가나타난다. 웹서버가 JEUS로의요청을일정하게조절해주기때문에클라이언트의요청대로스레드를생성시키는 RMI에비해 connection 의개수가적게생성된다. 그러나보통의경우에 HTTP 프로토콜로변화하는것은오히려성능저하를가져올수있다는것을고려해야한다. 제 2 장 EJB 엔진 21

제 3 장 EJB 모듈 본장에서는 EJB 모듈의구조와관리방법에대해서설명한다. 3.1. 개요 EJB 모듈은 EJB 엔진에 deploy할수있는기본단위이다. 또한 EJB 컴포넌트들을그룹화하고이들의설정정보를 Deployment Descriptors( 이하 DD) 로표현할수있도록한것이다. EJB를 deploy할경우에는단하나의 EJB 컴포넌트를 deploy하더라도반드시 EJB 모듈로패키징해야한다. 참고 EJB 2.1 이하의컴포넌트인경우에는 EJB 모듈에반드시 DD(ejb-jar.xml) 가있어야하지만 3.0 이상 의컴포넌트부터는 Annotation 을지원하게되면서 DD 는선택사항으로변경되었다. 3.2. EJB 모듈관리 다음은 JEUS 내부적으로 EJB 모듈을관리하기위한 4가지주요작업으로각작업에대한상세한설명은세부절을참고한다. assembly : 3.3. EJB 모듈조립 (Assembling) deployment : 3.4. EJB 모듈 Deploy control (undeploy, redeploy, stop-application, start-application) : 3.5.1. EJB 모듈제어 monitoring : 3.5.2. EJB 모듈의모니터링 제 3 장 EJB 모듈 23

EJB 모듈의관리순서는다음과같다. [ 그림 3.1] EJB 모듈관리순서도 EJB Module Assembly Compiling EJB classes?? JARpackaging the EJB Module Creating the Java EE EJB module DD Creating JEUS EJB module DD EJB Module Deployment Pre-compile EJBs through appcompiler tool?? EJB Module Boot-time deployment EJB Module Runtime deployment Execution, control, monitoring EJB Client Component Service request JEUS EJB Engine EJB Module in service Admin Tool (jeusadmin, webmanager) Reload, suspend, resume, undeploy, monitor 24 JEUS EJB 안내서

EJB 모듈 JAR 파일구조 다음은표준 EJB 모듈 JAR 파일의구조에대한설명이다. [ 그림 3.2] Java EE EJB 모듈 JAR 파일의구조 EJB Module JAR X META-INF\ Java EE EJB DD Legend: 0I: binary or executable file X: XML document J: JAR file T: Text file C: Class file V: Java source file DD: deployment descriptor X JEUS EJB DD <package name>\ C C C Business Interface EJB Implementation Helper class J Helper library META-INF 구분 ejb-jar.xml jeus-ejb-dd.xml 설명실제적인표준 EJB DD(Deployment Descriptors) 파일이다. Annotation으로설정정보를표현한경우에는존재하지않을수있다. 단, EJB 2.x 스타일의경우에는반드시필요하다. JEUS에서 EJB를 deploy할때필요한 DD 파일이다 ( 선택사항 ). <package name>\ EJB 클래스들을포함하고있다. EJB 소스코드에정의되어있는것과같이 Java 패키지구조를반영하는구조로되어있어야한다. 예를들어하나의 EJB가 "mypackage" 라는패키지에속해있다고선언되어있으면 EJB의클래스는반드시 EJB JAR의 "mypackage" 라는디렉터리아래에위치해야한다. 다음과같은 EJB 컴포넌트를포함한다. 구분 인터페이스 엔터프라이즈 Bean 클래스 설명클라이언트가접근하기위한 EJB 2.x 스타일의인터페이스, 3.0 이상의인터페이스들이다. 인터페이스에맞춰서실제업무로직을구현한 Bean 클래스들을의미한다. 제 3 장 EJB 모듈 25

Helper library MANIFEST.MF Class-Path Entry 에명시한라이브러리에해당한다. 3.3. EJB 모듈조립 (Assembling) [ 그림 3.1] 과같이 EJB 모듈을조립할때는다음의과정을수행한다. 1. EJB 클래스컴파일개발자가구현한 EJB 소스파일들을컴파일한다. 2. 경우에따른 DD 작성 ejb-jar.xml DD 작성 jeus-ejb-dd.xml DD 작성 3. EJB JAR 파일패키징 JAR 파일로 EJB 클래스와 DD를패키징한다. 다음절부터는 "counter" 예제를통해 EJB 모듈조립과정을설명한다. "counter" 는 JEUS_HOME/sam ples/ejb/basic/statefulsession/ 디렉터리에위치한 Stateful Session Bean으로, 다음과같은 2개의 Java 소스파일이갖는다. Counter.java(business interface) CounterEJB.java(bean implementation) 참고 Stateful Session Bean 이나다른종류의 Bean 에대한자세한정보는 제 7 장 Session Bean, 제 9 장 Message Driven Bean(MDB) 을참고한다. 3.3.1. EJB 클래스컴파일 개발자가구현한 EJB 소스파일들을컴파일한다. EJB 소스파일들로부터 EJB 모듈을조립하는첫번째과정은소스파일들을컴파일하는것이다. 이는 JDK의 javac 컴파일러를이용한다. 클래스패스는기본적으로 JEUS_HOME/lib/system/javaee.jar를사용하며, jeus-ejb-dd.xml에대응되는 Annotation을사용했다면 JEUS_HOME/lib/system/jeusapi.jar를추가하고, 또다른 helper 클래스가있다면모두추가한다. 다음은 "counter" Bean에서사용될 EJB Java 파일들을 UNIX 환경에서컴파일하는명령실행에대한예이다. $ javac classpath JEUS_HOME/lib/system/javaee.jar *.java 위명령을실행하면클래스파일들이생성된다. 26 JEUS EJB 안내서

3.3.2. Deployment Descriptors(DD) 작성 EJB 모듈을 deploy할때사용되는 DD는다음과같이 2가지로나누어진다. 표준 EJB DD "ejb-jar.xml" 로명명되고, EJB 모듈의 "META-INF/" 디렉터리에위치한다. 개발자가 EJB 컴포넌트를작성할때는설정정보의일부또는전부를 Annotation으로작성할수도있다. 만약 Annotation 정보를무시하고 DD의설정만을적용하고싶은경우에는 ejb-jar.xml에 <metadata-complete> 를 true로설정한다. Annotation과 DD를혼용해서사용한경우는 DD가 Annotation에우선한다. JEUS EJB DD "jeus-ejb-dd.xml" 로명명되고, EJB 모듈의 "META-INF/" 디렉터리에위치한다. 이파일의내용에대한정보는아래의 "jeus-ejb-dd.xml DD 작성 " 을참고한다. ejb-jar.xml DD 작성 DD의포맷은 EJB 표준에따른다. 대부분 Annotation으로가능하지만필요한경우 DD를사용한다. package ejb.basic.statefulsession; @Remote public interface Counter { public void increase();... } package ejb.basic.statefulsession; @Stateful @EJB(name="counter") @TransactionManagement( TransactionManagementType.BEAN) public class CounterEJB implements Counter { private int count = 0; public void increase() { count++; }... } 위의 Annotation을표준 DD인 ejb-jar.xml로나타내면다음과같다. 다음예제는 "counter" Bean의간단한 EJB 표준 DD를나타낸것이다. [ 예 3.1] EJB 표준 DD : <<ejb-jar.xml>> <?xml version="1.0"?> <ejb-jar version="3.1" xmlns="http://java.sun.com/xml/ns/javaee" 제 3 장 EJB 모듈 27

xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"> <enterprise-beans> <session> <ejb-name>counter</ejb-name> <business-remote>ejb.basic.statefulsession.counter</business-remote> <ejb-class>ejb.basic.statefulsession.counterejb</ejb-class> <session-type>stateful</session-type> <transaction-type>bean</transaction-type> </session> </enterprise-beans> <assembly-descriptor/> </ejb-jar> 참고 EJB 3.0 이상부터는 ejb-jar.xml 의모든내용은 Annotation 으로표현가능하므로 ejb-jar.xml 은선택 적으로사용한다. jeus-ejb-dd.xml DD 작성 JEUS EJB DD가필요한이유는 EJB 엔진에 deploy하기위한기본설정및 External Reference들을 JEUS 서비스에매핑시키기위함이다. 그외에도인스턴스 Pooling과 Entity Bean, DB 테이블과의매핑설정도 jeus-ejb-dd.xml에서한다. 참고이러한설정들은 EJB 모듈을 JEUS에맞추어 deploy하기위해서필요한작업들이지만일부는 Anno tation으로설정가능하고 jeus-ejb-dd.xml이존재하지않아도기본값으로설정되기때문에별도로환경설정을해야하는경우에만이작업을수행한다. JEUS EJB DD는표준 EJB DD에부가적인설정으로볼수있다. 표준 EJB DD와마찬가지로 JEUS EJB DD도 EJB 모듈에적용된다. 다음은 JEUS EJB DD의전반적인구성이다. [ 예 3.2] JEUS EJB DD : <<jeus-ejb-dd.xml>> <?xml version="1.0"?> <jeus-ejb-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus"> <module-info> <role-permission> <!-- See chapter 4.2.6. EJB 보안설정 --> </role-permission> </module-info> <beanlist> 28 JEUS EJB 안내서

<jeusbean> <!-- See chapters 제4장 EJB의공통특성 and 제7장 Session Bean --> </jeusbean> <jeusbean> <!-- See chapters 제4장 EJB의공통특성 and 제7장 Session Bean --> </jeusbean> </beanlist> <ejb-relation-map> <!-- See chapter 제8장 Entity Bean --> </ejb-relation-map> <message-destination> <jndi-info> <ref-name>ejb/accountejb</ref-name> <export-name>accejb</export-name> </jndi-info> </message-destination> <library-ref> <library-name>jsf</library-name> <specification-version>1.2</specification-version> <implementation-version>1.2</implementation-version> </library-ref> </jeus-ejb-dd> JEUS EJB DD 의주요요소들은다음과같다. 항목 <module-info> <beanlist> <ejb-relation-map> <message-destination> 설명 EJB 모듈전체에적용되는포괄적인정보를설정한다. Role assignment에관련된정보는 4.2.6. EJB 보안설정 을참고한다. 모듈에포함되는 EJB들을선언한다. 이하위태그의이름과내용은 Bean의종류 (Session Bean. Entity Bean, MDB) 에따라세부설정이달라진다. beanlist와그것의하위태그는 제4장 EJB의공통특성, 제7장 Session Bean 부터 제9장 Message Driven Bean(MDB) 을통해자세히설명한다. CMP 2.0 Bean들을위한 CMR 매핑을정의한 EJB Relation Mapping 설정이다. CMP는더이상사용을권장하지않으므로 JPA를사용한다. ejb-jar.xml의 <message-destination> 에선언된 message destination과 JNDI 에등록된실제 Destination 객체를매핑한다. 제 3 장 EJB 모듈 29

항목 <library-ref> 설명 애플리케이션에서사용할공유라이브러리 (shared library) 의정보를명기한 다. 3.3.3. EJB JAR 파일패키징 EJB JAR 파일을패키징할때에는 jar 유틸리티를사용하고, 다음의사항을가정한다. ejb/basic/statefulsession 디렉터리에 counter EJB 클래스파일들이존재한다. 클래스에 Annotation으로설정하여 ejb-jar.xml과 jeus-ejb-dd.xml은존재하지않는다. EJB JAR 파일의패키징과정은다음과같다. 1. 다음과같이 EJB 클래스들을하나의 JAR 파일로묶는다. $ jar cf countermod.jar ejb/basic/statefulsession counterbeanclient.jar 이것으로 countermod.jar라는 Java EE EJB 모듈을완성한다. 2. 클라이언트에서이 EJB를사용하기위해서는인터페이스파일이필요하다. 클라이언트에서사용하기위해배포할 counterbeanclient.jar는다음과같이생성한다. $ jar cf counterbeanclient.jar ejb/basic/statefulsession/counter.class 참고 counterbeanclient.jar 는원격클라이언트에서사용하기위한배포용라이브러리이다. 3.4. EJB 모듈 Deploy 본절에서는 EJB 모듈의 deploy 에대한내용을설명한다. 3.4.1. Deploy 일반적으로는 deploy할때 EJB 클래스를컴파일하지만 appcompiler를사용해서 EJB 클래스를미리컴파일하면 deploy할때의속도를향상시킬수있다. 또한 Auto Deploy 기능을사용해서손쉽게 EJB 모듈을 deploy할수도있다. Deploy에대한자세한내용은 "JEUS Applications & Deployment 안내서 " 를참고한다. [ 그림 3.1] 에서 JEUS는다음과같은방법으로 EJB 모듈을 deploy한다. appcompiler 툴이용 appcompiler 툴을사용하면 Stub과 Skeleton 파일들을미리생성하여 Deploy 속도를빠르게할수있다. EJB 모듈의 Boot-time Deploy 30 JEUS EJB 안내서

EJB 엔진이시작할때마다 EJB 모듈이자동으로 deploy되도록한다. EJB 모듈의 Runtime Deploy EJB 엔진이시작되고난후에즉, EJB 엔진이운영되고있을때 EJB 모듈을 deploy한다. 콘솔툴과 WebAdmin을사용해서 EJB 모듈을 EJB 엔진에 deploy한다. appcompiler 툴이용 EJB 2.x 모듈의경우 appcompiler 툴을사용함으로써 Stub과 Skeleton 파일들을미리생성하여 Deploy 속도를빠르게할수있다. appcompiler를사용할경우에는콘솔툴의 deploy 명령을할때 fast 옵션을사용한다. 이옵션이사용되지않을경우에는 appcompiler는효과가없다. appcompiler 툴에대한자세한정보는 JEUS Reference Book 의 4.3. appcompiler 를참조한다. EJB 모듈의 Boot-time Deploy MS가기동 (Booting) 될때 deploy되는것을 Boot-time deploy라고하는데, DAS를통해한번 deploy된애플리케이션은 MS를기동할때마다 Boot-time deploy된다. 애플리케이션의 deploy 설정에대한자세한내용은 "JEUS Applications & Deployment 안내서 " 의 deploy 항목을참고한다. 하나의도메인에여러개의애플리케이션을등록할수있다. EJB 모듈의 Runtime Deploy Runtime deploy는실행되고있는 EJB 엔진에 EJB 모듈을 deploy하는것을의미한다. 콘솔툴의 deploy 명령어를이용하여실행되고있는 EJB 엔진에모듈을설치할수있다. "countermod" EJB 모듈의 deploy 과정을설명한다. 모듈을 deploy하기위해다음의사항을가정한다. JEUS의 domain1이라는 DAS와 server1이라는 MS가이미기동 (Booting) 되어있다. countermod 모듈이 JEUS_HOME/apphome 하위의 countermod.jar나 countermod 디렉터리형태로존재한다. EJB 모듈의 Runtime Deploy는콘솔툴을사용하거나 WebAdmin을사용할수있다. 콘솔툴사용 deploy 과정은다음과같다. 1. 콘솔툴을실행한다. 콘솔툴에대한자세한설명은 JEUS Reference Book 의 4.2.2. Local 명령어 를참고한다. $ jeusadmin -host localhost:9736 2. 사용자이름과패스워드를입력한다. 제 3 장 EJB 모듈 31

User name: administrator Password: Try to connect to localhost:9736. Connection has been established to domain administration server: adminserver in domain: domain1. JEUS7 Administration Tool To print help, use the 'help' command. [DAS]domain1.adminServer> 3. deploy 명령을실행해서 "countermod" EJB 모듈을 deploy 한다. [DAS]domain1.adminServer> deploy countermod -servers server1 4. deploy 를확인하기위해다음과같이 application-info 명령을실행하면 "countermod" 모듈이포함 된모든 deploy 된애플리케이션들이출력된다. [DAS]domain1.adminServer> application-info WebAdmin 사용 WebAdmin을사용하여 deploy하는과정은다음과같다. 1. WebAdmin의 [Applications] 메뉴를선택하면애플리케이션목록조회화면으로이동한다. 애플리케이션목록조회화면에서 deploy하려는애플리케이션의 [deploy] 버튼을클릭한다. [ 그림 3.3] 애플리케이션 deploy - 애플리케이션목록조회 2. [LOCK & EDIT] 버튼을클릭해서설정변경모드로전환한다. 3. Deploy 화면에서애플리케이션의 deploy 속성을설정하고 [ 확인 ] 버튼을클릭한다. WebAdmin에서의애플리케이션 deploy 설정에대한자세한내용은 "JEUS Applications & Deployment 안내서 " 의 deploy 항목을참고한다. 32 JEUS EJB 안내서

[ 그림 3.4] 애플리케이션 deploy - 속성설정 4. deploy 된애플리케이션은 'Command' 컬럼에다음과같이 [stop], [undeploy], [redeploy], [addtarget], [remove-target] 의버튼이생기면서제어가가능해진다. 각버튼의기능과제어에대한자세 한내용은 3.5.1. EJB 모듈제어 를참고한다. 제 3 장 EJB 모듈 33

[ 그림 3.5] 애플리케이션 deploy - 결과 3.4.2. Deploy 된 EJB 모듈의디렉터리구조 EJB 모듈이 deploy된후에클래스파일들과설정파일들은다음과같은구조로 JEUS 설치디렉터리에배포된다. [ 그림 3.6] deploy된 EJB 모듈의디렉터리구조 34 JEUS EJB 안내서

JEUS_HOME/domains/<domain name>/servers/<server name>/.workspace/deployed/ 디렉터리는 <server name> 에해당하는 MS에 deploy된애플리케이션들이존재하는디렉터리이다. 여기에는 deploy 된 EJB 모듈의 EJB 구현클래스들뿐만아니라 helper 클래스들이위치한다. Deploy 방식은다음과같이나누어지며, 방식에따라 deploy되는파일이위치하는디렉터리가달라진다. Deploy 방식 EAR Deploy 방식 Standalone Deploy 방식 Exploded EAR Deploy 방식 Exploded Standalone Deploy 방식 설명 EAR 파일이 deploy되는경우에는해당 EAR 파일이름으로생성된디렉터리아래에 EAR에포함된모듈이각각놓인다. JAR 파일이 deploy된경우에는해당 JAR 파일이름으로생성된디렉터리에 "<jar 파일이름 >_jar " 디렉터리아래에놓인다. EAR 파일을 archive 형태가아닌풀어놓은상태에서 deploy하는방식이다. JAR 파일을 archive 형태가아닌풀어놓은상태에서 deploy하는방식이다. Exploded EAR Deploy 방식과 Exploded Standalone Deploy 방식은 webhome 디렉터리로복사되지않고 원래의위치를참조한다. JEUS 에서는 Archive 파일이존재하는 standalone Deployment 를 COMPONENT Type, 풀어놓은것을 EXPLODED COMPONENT Type 이라고부른다. 참고 이후의설명에서는 Standalone 모듈에대해서만설명한다. EAR Deploy 방식이나 deploy 전반에대 한상세한설명은 "JEUS Applications & Deployment 안내서 " 의 Deploy 관련부분을참고한다. 3.5. EJB 모듈제어및모니터링 deploy 된 EJB 모듈에대해실행상태를제어하거나모니터링할수있다. ([ 그림 3.1] 참고 ) 3.5.1. EJB 모듈제어 deploy된 EJB 모듈을 stop-application, start-application, redeploy-application, undeploy 명령을통해 EJB 모듈내의실행상태를제어할수있다. EJB 모듈의제어는다음과같이 2가지방법을사용할수있다. WebAdmin을사용한 EJB 모듈제어 콘솔툴을사용한 EJB 모듈제어본절에서는 undeploy 명령의사용예제를통해 EJB 모듈을제어하는방법에대해설명한다. 제 3 장 EJB 모듈 35

WebAdmin 사용 WebAdmin을사용하여 EJB 모듈을제어할수있다. WebAdmin의 [Applications] 메뉴를클릭하면다음과같이 Deployed Applications 화면에애플리케이션목록이조회된다. 목록에서 deploy된애플리케이션의 'Command' 컬럼에는다음과같은컨트롤버튼이존재한다. 각버튼은콘솔툴의옵션과각각대응된다. [ 그림 3.7] deploy된애플리케이션목록 WebAdmin을사용하여 undeploy하는과정은다음과같다. 1. 애플리케이션을 undeploy하려면 [Applications] 메뉴를선택한다. 조회된애플리케이션목록에서원하는애플리케이션의 'Command' 컬럼에위치한 [undeploy] 버튼을클릭한다. ([ 그림 3.7] 참고 ) 2. 다음과같이 Undeploy 화면이나타나고, 요청중인서비스가완료될때까지기다리는시간인 'Timeout' 항목을설정하고 [ 확인 ] 버튼을클릭하면 undeploy가수행된다. [ 그림 3.8] 애플리케이션 undeploy - 속성설정 36 JEUS EJB 안내서

참고 'Graceful' 항목은 Graceful Redeploy가진행된경우 old 애플리케이션과 new 애플리케이션중어느것을 undeploy할지결정하는설정이다. 3. 정상적으로 undeploy가되면다음과같이결과메시지가나타나고해당애플리케이션의 'State' 와 'Command' 컬럼이변경된것을확인할수있다. [ 그림 3.9] undeploy 애플리케이션 - 결과 콘솔툴사용 콘솔툴에는다음과같은제어명령을사용해서 EJB 모듈을제어한다. 모든명령어는 EJB 모듈이름을파라미터로받는다. redeploy-application redeploy-application은지정한 EJB 모듈을다시로딩하는명령어로현재활성화되어있는 EJB 모듈을 EJB 실행환경에서 undeploy했다가다시디스크로부터읽어 deploy하는것을의미한다. undeploy가실행되고다시로딩이수행될때 undeploy된 EJB 모듈의모든트랜잭션상태는잃어버린다. 이는 undeploy되거나 redeploy되는모듈과연관있는모든 EJB 트랜잭션이 rollback된다는것을의미한다. redeploy-application <module name> stop-application stop-application 명령은선택된 EJB 모듈을일시적으로중지시켜클라이언트의요청으로부터한시적으로 EJB 모듈이접근이불가능한상태가된다. start-application 명령으로다시 EJB 모듈을접근가능한상태로되돌린다. stop-application <module name> start-application 제 3 장 EJB 모듈 37

stop-application 명령으로중지되었던 EJB 모듈을다시활성화한다. start-application <module name> undeploy undeploy 명령은선택된모듈을 EJB 엔진의실행메모리에서제거해서 EJB 엔진의운영메모리에서 EJB 모듈을내려 EJB 클라이언트가 EJB에접근불가능한상태가된다. 그러나파일을물리적으로삭제하지는않는다. undeploy <module name> 다음은콘솔툴을사용하여 EJB 모듈을 undeploy 하는방법을설명하는예이다. 1. 콘솔툴을실행한다. $ jeusadmin -host localhost:9736 2. 사용자이름과패스워드를입력한다. User name: administrator Password: Try to connect to localhost:9736. Connection has been established to domain administration server: adminserver in domain: domain1. JEUS7 Administration Tool To print help, use the 'help' command. [DAS]domain1.adminServer> 3. 다음과같이 undeploy 명령을실행하고성공하면 "countermod" EJB 모듈이 undeploy 된다. [DAS]domain1.adminServer> undeploy countermod 4. undeploy 된것을확인하기위해다음과같이 application-info 명령을실행한다. "countermod" 모듈을 제외한 deploy 된모든모듈들이조회된다. [DAS]domain1.adminServer> application-info 참고 콘솔툴에대한상세한정보는 JEUS Reference Book 의 4.2. jeusadmin 을참조한다. 3.5.2. EJB 모듈의모니터링 콘솔툴을사용하여 EJB 모듈을모니터링할수있다. 콘솔툴에서 application-info 명령을실행하면다음과같이 deploy되고활성화된 EJB모듈로부터상태와운영정보를조회할수있다. application-info 명령에대한자세한내용은 JEUS Reference Book 의 4.2.7. EJB 엔진관련명령어 를참고한다. 38 JEUS EJB 안내서

모듈정보조회해당모듈에대한정보를조회한다. [DAS]domain1.adminServer>application-info -server server1 -id countermod -detail General information of EJB module [countermod] ============================================================== +-------------+----------------------------------------------+ Module Name Unique Module Name +-------------+----------------------------------------------+ countermod countermod +-------------+----------------------------------------------+ ============================================================== Beans ================================================================================ +-----------+-------------------------+-------------------+--------------------+ Bean Name Type Local Export Name Remote Export Name +-----------+-------------------------+-------------------+--------------------+ Count StatelessSessionBean Count +-----------+-------------------------+-------------------+--------------------+ ================================================================================ Bean 조회해당모듈 ("module name") 에포함된 EJB의목록을조회한다. [DAS]domain1.adminServer>application-info -server server1 -id countermod -bean Count Module name : countermod Bean name : Count ================================================================================ +---------------+-----------+-------------------+--------------+---------------+ Name (Count) WaterMark(High:Low Bound(Upper:L Time(Max:Min:T :Cur) ower) otal) +---------------+-----------+-------------------+--------------+---------------+ create times(0) +---------------+-----------+-------------------+--------------+---------------+ 제 3 장 EJB 모듈 39

remove times(0) +---------------+-----------+-------------------+--------------+---------------+ timed-rb transactio n(0) +---------------+-----------+-------------------+--------------+---------------+ request request(0) +---------------+-----------+-------------------+--------------+---------------+ active-bean bean(0:0:0) +---------------+-----------+-------------------+--------------+---------------+ rolledback transactio n(0) +---------------+-----------+-------------------+--------------+---------------+ total-bean bean(0:0:0) +---------------+-----------+-------------------+--------------+---------------+ comitted transactio n(0) +---------------+-----------+-------------------+--------------+---------------+ MethodReadyCou bean(0:0:0) nt +---------------+-----------+-------------------+--------------+---------------+ active-thread thread(0:0:0) +---------------+-----------+-------------------+--------------+---------------+ total-remote-t thread(100:100:100) 40 JEUS EJB 안내서

hread +---------------+-----------+-------------------+--------------+---------------+ ================================================================================ 참고 EJB 모듈의모니터링은 WebAdmin을사용할수도있지만콘솔툴을사용할경우에더자세한정보를조회할수있다. WebAdmin을사용할경우 [Monitoring] 메뉴의 [JNDI] 메뉴또는 [EJBTimer] 메뉴를통해 EJB 모듈의일부정보를모니터링할수있다. 모니터링하는자세한방법은각각 JEUS Server 안내서 의 4.2.2. 바인딩된객체확인 과 10.2. 타이머모니터링 을참고한다. 제 3 장 EJB 모듈 41

제 4 장 EJB 의공통특성 본장에서는 JEUS 에서의 EJB 공통특성에대해설명한다. EJB 표준에언급된내용은설명하지않고, JEUS 에서 EJB 를사용하기위해필요한추가적인정보들만제 공한다. 또한 EJB deploy 에대해언급하지않으므로 제 3 장 EJB 모듈 의내용을먼저참조한다. 4.1. 개요 본절에서는 EJB 의종류와각종류별 DD 설정에대해서설명한다. EJB 종류 JEUS는 EJB 스펙에따라다음의 EJB들을지원한다. Stateless Session Bean : 제7장 Session Bean Stateful Session Bean : 제7장 Session Bean BMP Entity Bean : 제8장 Entity Bean CMP 1.1 & CMP 2.x Entity Bean : 제8장 Entity Bean Message-Driven Bean : 제9장 Message Driven Bean(MDB) 본장에서는모든 Bean들에적용되는공통적인특징과설정에대해서설명한다. 각 EJB에대한추가적인상세정보는위에나열된해당장을참고한다. 참고 Entity Bean 은 EJB 3.0 부터는 JPA 로대체되었으므로이에대해서는 "JEUS JPA 안내서 " 를참조한 다. 따라서 Entity Bean 의사용을권장하지않지만하위호환성을위해계속지원하고있다. EJB 종류별 Deployment Descriptors 설정 JEUS EJB DD는 "jeus-ejb-dd.xml" 로명명된 XML 파일이며, EJB JAR 파일의 META-INF 하위에존재한다. JEUS EJB DD에대한간단한내용은 제3장 EJB 모듈 을참고한다. 다음은 JEUS EJB DD로설정가능한기능들과컴포넌트들의간략한정보를나타낸다 ("@" 표시는 Anno tation으로도설정가능한개체이다 ). 표의왼쪽에나열된항목들은실제설정가능한 JEUS EJB DD의 XML 태그들이다. 표의나머지 6개의열은 EJB 종류에따른설정사항들을나타낸다. 제 4 장 EJB 의공통특성 43

[ 표 4.1] JEUS EJB 의설정가능한특징들과컴포넌트들 설정가능한개체 Stateless Stateful BMP CMP1.1 CMP2.0 MDB 1. EJB name @ 2. Export name @ 3. Local export name @ 4. Export port 5. Export IIOP switch 6. Single VM switch 7. Local invocation optimization 8. Fast deploy 9. use-access-control 10. Run-as identity 11. Security CSI Interop. 12. Env. Refs @ 13. EJB refs @ 14. Resource Refs @ 15. Resource env. Refs @ 16. Thread ticket pool settings ` 17. Clustering settings @ 18. HTTP Invoke 19. JEUS RMI 20. Pooling Bean Switch 21. Object management 22. Persistence Optimize 23. CM persistence opt. 24. Schema info 25. Relationship map 26. Connect. fact. name 27. MDB resource adaptor 28. Destination @ 29. JNDI SPI settings 30. Max messages 31. Activation Config @ 44 JEUS EJB 안내서

설정가능한개체 Stateless Stateful BMP CMP1.1 CMP2.0 MDB 32. Durable Timer Service 위의표는다음과같이나누어진다. 항목 1부터 19까지는 6개의 EJB 종류모두에공통으로적용되는사항이다 (MDB의 2~8과 17~19은제외 ). 이모든항목들에대해서본장에서설명한다. 항목 10(run-as identity) 과 11(security interoperability), 17(clustering) 은모든 EJB 종류에공통이지만, 각각 4.2.6. EJB 보안설정, 제5장 EJB 상호운용성및 RMI/IIOP, 제6장 EJB 클러스터링 에서별도로설명한다. 항목 20은 Stateful Session Bean에대해서만적용되며, 제7장 Session Bean 에서자세히설명한다. 항목 21(object management) 은 6개의 EJB 종류모두에공통으로적용되는사항이나 Bean의종류에따라조금씩다르므로기본적인것은 제7장 Session Bean 에서설명하고각장에서차이점을설명한다. 항목 22부터 25까지는 Entity Bean에만적용된다. 이들은 제8장 Entity Bean 에서설명한다. 항목 26부터 31까지는 MDB에만적용된다. 이들은 제9장 Message Driven Bean(MDB) 에서설명한다. 항목 32는 EJB 스펙에서제공하는타이머서비스를사용할수있는 Bean(Stateful Session Bean을제외한모든 Bean) 에사용할수있다. 이는 제10장 EJB Timer Service 에서설명한다. 4.2. EJB 설정 모든 EJB 설정들은 JEUS EJB DD 파일인 jeus-ejb-dd.xml 파일내에설정된다. 상위 XML 태그는 Bean의종류에관계없이 <jeus-bean> 을사용한다. 다음절에서는위의 5종류의 EJB XML 부모태그들에적용될수있는설정들을설명한다. <beanlist> 밖에있는다른태그들은 제3장 EJB 모듈 에서이미설명하였다. 특정 XML 부모태그 (Bean 종류 ) 에대한설명은이문서의후반부에나오는해당장들을참고한다. 참고 클러스터링환경설정은 제 6 장 EJB 클러스터링 을참고한다. 4.2.1. 기본환경설정 다음은주로사용되는 JEUS 전용설정들이며 jeus-ejb-dd.xml에선언되어있다. 이파일에대해서는 제3 장 EJB 모듈 을참고한다. <ejb-name> 표준 ejb-jar.xml에서 <ejb-name> 또는구현클래스의 @Stateless, @Stateful, @MessageDriven의 "name" 값과동일한이름이다. 제 4 장 EJB 의공통특성 45