JEUS

Similar documents
JEUS 소개

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

JEUS 소개

Intro to Servlet, EJB, JSP, WS

No Slide Title

Interstage5 SOAP서비스 설정 가이드

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

PCServerMgmt7

J2EE & Web Services iSeminar

Microsoft Word - JEUS설치안내서.doc

APOGEE Insight_KR_Base_3P11

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

Solaris Express Developer Edition

Windows 8에서 BioStar 1 설치하기

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,,,,,,,,,,,,,.,..., U.S. GOVERNMENT END USERS. Oracle programs, including any operat

PowerPoint 프레젠테이션

Chapter 1

Copyright 2004 Tmax Soft Co., Ltd. All Rights Reserved. JEUS

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

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

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

[Brochure] KOR_TunA

chapter1,2.doc

untitled

Remote UI Guide


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

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Microsoft Word - AnyLink Introduction v3.2.3.doc

Tibero

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

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

Corporate PPT Template

Microsoft Word - src.doc

슬라이드 1

DR-M140 사용 설명서

Backup Exec

Chap7.PDF

Copyright 0, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT RIGHTS Programs, software, databases, and related

JavaGeneralProgramming.PDF

목차 1. 웹서비스의예 테스트환경설치 설치전고려사항 설치할공간확보 테스트환경구축 설치파일준비 설치 Windows에서의설치 Linux 에서

DE1-SoC Board

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx

Microsoft PowerPoint - AME_InstallRoutine_ver8.ppt

Microsoft Word - Jeus_System_Architecture.doc

교육2 ? 그림

CD-RW_Advanced.PDF

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

[Brochure] KOR_LENA WAS_

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

.

untitled

Portal_9iAS.ppt [읽기 전용]

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

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

Splentec V-WORM Quick Installation Guide Version: 1.0 Contact Information 올리브텍 주소 : 경기도성남시분당구구미로 11 ( 포인트타운 701호 ) URL: E-M

JDK이클립스

vm-웨어-앞부속

Microsoft PowerPoint - [Practice #1] APM InstalI.ppt

P2WW HNZ0

Tmax

PowerPoint 프레젠테이션

Oracle® DIVAnet - 보안 설명서

<%DOC NAME%> (User Manual)

Sun Java System Messaging Server 63 64

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

A SQL Server 2012 설치 A.1 소개 Relational DataBase Management System SQL Server 2012는마이크로소프트사에서제공하는 RDBMS 다. 마이크로소프트사는스탠다드 standard 버전이상의상업용에디션과익스프레스 exp

Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer

.

10X56_NWG_KOR.indd

J2EE Concepts

Microsoft Word - s.doc

Admin Guide for dummy

ODS-FM1

PowerPoint Presentation

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

<%DOC NAME%> (User Manual)

Interstage4 설치가이드

Service-Oriented Architecture Copyright Tmax Soft 2005

Analyst Briefing

Spotlight on Oracle V10.x 트라이얼프로그램설치가이드 DELL SOFTWARE KOREA

Intra_DW_Ch4.PDF

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

05Àå

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

슬라이드 1

JDBC 소개및설치 Database Laboratory

슬라이드 1

슬라이드 1

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

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

DBMS & SQL Server Installation Database Laboratory

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

SAS9.2_SAS_Enterprise_Miner_install_guide_single_user_v2

: Symantec Backup Exec System Recovery 8:

01장

서현수

.

Transcription:

JEUS 설치및시작하기 JEUS v6.0 Fix#8 Copyright 2011 TmaxSoft Co., Ltd. All Rights Reserved.

Copyright Notice Copyright 2011 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 the Protection Act of Com puter Programs, 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 This product includes open source software developed and/or licensed by "OpenSSL", "RSA Data Security, Inc.", "Apache Foundation", and "Jean-loup Gailly and Mark Adler". Information about the aforementioned and the related open source software can be found in the "${INSTALL_PATH}/license/oss_licenses" directory. 본제품은 OpenSSL, RSA Data Security, Inc., Apache Foundation 및 Jean-loup Gailly와 Mark Adler 에의해개발또는라이선스된오픈소스소프트웨어를포함합니다. 관련상세정보는제품의디렉터리 ${IN STALL_PATH}/license/oss_licenses 에기재된사항을참고해주십시오. 안내서정보안내서제목 : JEUS 설치및시작하기발행일 : 2011-11-04 소프트웨어버전 : JEUS v6.0 Fix #8 안내서버전 : v2.1.3

내용목차 I. JEUS 소개하기... 1 제1장 소개... 3 1.1. 개요... 3 1.2. 시스템개념과역할... 5 1.3. 구성요소와아키텍처... 6 1.3.1. Client Layer... 7 1.3.2. JEUS WAS Layer... 7 1.3.3. Source Layer... 9 1.4. 상호운용모듈... 9 1.5. Edition... 10 제2장 JEUS 환경... 13 2.1. 관리툴... 13 2.2. 디렉터리구조... 62 2.3. 환경변수... 16 2.4. 환경설정파일... 17 2.4.1. XML 환경설정파일... 17 제3장 JEUS 안내서구성... 21 3.1. 개요... 21 3.2. 안내서의구성... 21 II. JEUS 설치하기... 27 제4장 설치개요및준비사항... 29 4.1. 개요... 29 4.2. 시스템요구사항... 30 4.3. 설치순서... 31 4.4. Java 2 JDK 설치... 32 4.5. JEUS 라이선스정책... 32 제5장 UNIX에서설치및제거... 33 5.1. 개요... 33 5.2. GUI 모드에서설치... 33 5.3. 콘솔모드에서설치... 39 5.4. 설치확인... 44 5.4.1. 디렉터리구조... 62 5.4.2. 환경설정... 47 5.4.3. 기동확인... 49 5.5. GUI 모드에서제거... 53 5.6. 콘솔모드에서제거... 52 5.7. 제거확인... 53 제6장 Windows에서설치및제거... 55 JEUS iii

6.1. 개요... 55 6.2. 설치... 56 6.3. 설치확인... 62 6.3.1. 디렉터리구조... 62 6.3.2. 환경설정... 64 6.3.3. 기동확인... 66 6.4. 서비스등록과제거... 69 6.4.1. 서비스등록... 70 6.4.2. 서비스등록확인... 70 6.4.3. 서비스제거... 71 6.5. 제거... 71 6.6. 제거확인... 74 III. JEUS 시작하기... 75 제7장 개요... 77 제8장 시스템설정... 79 8.1. WebAdmin 사용... 79 8.1.1. 기본환경구성... 79 8.1.2. 컴포넌트추가와설정... 83 8.1.3. 데이터소스추가... 86 8.1.4. WebAdmin에서 JEUS 기동... 89 8.2. Text Editor 사용... 90 8.2.1. 환경설정... 91 8.2.2. 콘솔창에서 JEUS 기동... 94 제9장 WebTier 사용하기... 97 9.1. 예제... 97 9.2. 컴파일... 100 9.3. WAR 모듈패키징... 101 9.4. Deploy... 102 9.5. 실행및결과... 106 제10장 EJB 사용하기... 109 10.1. Session Bean 예제... 109 10.1.1. 예제... 109 10.1.2. 컴파일... 111 10.1.3. Deploy... 111 10.1.4. 실행및결과... 115 10.2. Java Persistence API 예제... 116 10.2.1. 예제... 116 10.2.2. 컴파일... 122 10.2.3. Deploy... 122 10.2.4. 실행및결과... 126 제11장 웹서비스사용하기... 129 iv JEUS 설치및시작하기

11.1. 웹서비스생성... 129 11.1.1. From Java 방식... 129 11.1.2. From WSDL 방식... 134 11.2. 웹서비스클라이언트작성... 136 11.2.1. Java SE 클라이언트의작성... 136 Appendix A. 플랫폼별 JDK 설치... 139 A.1. Sun Solaris... 139 A.2. IBM AIX... 139 A.3. HP-UX... 140 A.4. Linux... 140 Appendix B. IPv6 설정... 141 B.1. 소개... 141 B.2. IPv6 환경설정... 142 JEUS v

그림목차 [ 그림 1.1] JEUS의기능과역할... 5 [ 그림 1.2] JEUS 웹애플리케이션아키텍처다이어그램... 6 [ 그림 2.1] JEUS 설치후디렉터리구조... 62 [ 그림 3.1] JEUS 안내서구성... 22 [ 그림 4.1] JEUS 설치순서... 31 [ 그림 5.1] 설치툴의초기화면... 34 [ 그림 5.2] 소개화면... 34 [ 그림 5.3] 라이선스준수화면... 35 [ 그림 5.4] 플랫폼선택화면... 35 [ 그림 5.5] 설치디렉터리선택화면... 36 [ 그림 5.6] Install Set 선택화면... 36 [ 그림 5.7] JDK 설치디렉터리선택화면... 37 [ 그림 5.8] 패스워드입력화면... 37 [ 그림 5.9] 설치정보확인... 38 [ 그림 5.10] 설치진행화면... 38 [ 그림 5.11] 설치종료... 39 [ 그림 5.12] JEUS 설치후디렉터리구조... 62 [ 그림 5.13] 설치제거초기화면... 50 [ 그림 5.14] JEUS 제거진행화면... 51 [ 그림 5.15] JEUS 제거종료... 51 [ 그림 6.1] 설치툴초기화면... 56 [ 그림 6.2] 소개화면... 57 [ 그림 6.3] 라이선스준수화면... 57 [ 그림 6.4] 설치디렉터리선택화면... 58 [ 그림 6.5] Install Set 선택화면... 58 [ 그림 6.6] JDK 설치디렉터리선택화면... 59 [ 그림 6.7] Windows 서비스등록여부선택화면... 59 [ 그림 6.8] 패스워드입력화면... 60 [ 그림 6.9] 설치정보확인... 60 [ 그림 6.10] 설치진행확인... 61 [ 그림 6.11] 설치종료확인... 61 [ 그림 6.12] JEUS 설치후디렉터리구조... 62 [ 그림 6.13] WebAdmin 로그인화면... 68 [ 그림 6.14] WebAdmin 노드관리페이지... 68 [ 그림 6.15] 노드다운페이지... 69 [ 그림 6.16] 노드종료페이지... 69 [ 그림 6.17] 설치제거초기화면... 72 [ 그림 6.18] Windows 서비스제거... 72 [ 그림 6.19] 설치제거진행화면... 73 [ 그림 6.20] 설치제거완료화면... 73 JEUS vii

[ 그림 8.1] 로그인화면... 80 [ 그림 8.2] 초기화면... 81 [ 그림 8.3] JEUS 노드트리... 82 [ 그림 8.4] 엔진컨테이너개요... 83 [ 그림 8.5] 엔진컨테이너생성... 84 [ 그림 8.6] 엔진컨테이너생성후... 84 [ 그림 8.7] 엔진개요... 85 [ 그림 8.8] 엔진생성... 85 [ 그림 8.9] 엔진생성후... 85 [ 그림 8.10] Web Listener 설정... 86 [ 그림 8.11] JDBC 데이터소스... 87 [ 그림 8.12] 데이터소스선택... 87 [ 그림 8.13] 데이터소스속성... 88 [ 그림 8.14] 데이터소스연결풀... 88 [ 그림 8.15] 데이터소스생성후... 89 [ 그림 8.16] JEUS 매니저의제어중부트화면... 89 [ 그림 8.17] JEUS 매니저의제어중종료화면... 90 [ 그림 8.18] 엔진컨테이너제어... 90 [ 그림 9.1] WAR 모듈 deploy 초기화면... 102 [ 그림 9.2] WAR 모듈 deploy 대상선택... 103 [ 그림 9.3] WAR 모듈 deploy 선택사항... 103 [ 그림 9.4] WAR 모듈 deploy... 104 [ 그림 9.5] WAR 모듈 deploy... 104 [ 그림 9.6] WAR 모듈서블릿호출... 106 [ 그림 9.7] WAR 모듈 JSP 호출... 107 [ 그림 10.1] HelloEJB Deploy 초기화면... 112 [ 그림 10.2] HelloEJB Deploy 대상선택... 113 [ 그림 10.3] HelloEJB Deploy시선택사항... 113 [ 그림 10.4] HelloEJB Deploy... 114 [ 그림 10.5] HelloEJB Deploy... 114 [ 그림 10.6] HelloEJB 클라이언트화면... 115 [ 그림 10.7] HelloEJB 서블릿클라이언트수행결과... 116 [ 그림 10.8] HelloJPA Deploy 초기화면... 123 [ 그림 10.9] HelloJPA Deploy 대상선택... 123 [ 그림 10.10] HelloJPA Deploy 선택사항... 124 [ 그림 10.11] HelloJPA Deploy 배치옵션... 124 [ 그림 10.12] Deploy된 HelloJPA... 125 [ 그림 10.13] HelloJPA 클라이언트화면... 126 [ 그림 10.14] HelloJPA 서블릿클라이언트수행결과... 127 [ 그림 11.1] 성공적으로배치된 AddNumbers... 131 [ 그림 11.2] 성공적으로배치된 From WSDL 방식의웹서비스... 135 viii JEUS 설치및시작하기

표목차 [ 표 1.1] JEUS 6가지원하는 JavaEE 스펙... 4 [ 표 1.2] JEUS Client Layer... 7 [ 표 1.3] JEUS Manager... 7 [ 표 1.4] JEUS Engine... 8 [ 표 1.5] JEUS 관리툴... 8 [ 표 1.6] Source Layer... 9 [ 표 1.7] 상호운용모듈... 9 [ 표 1.8] JEUS Edition... 10 [ 표 2.1] JEUS 관리툴... 13 [ 표 2.2] JEUS 환경변수... 16 [ 표 4.1] 시스템요구사항... 30 [ 표 4.2] 플랫폼지원환경... 30 [ 표 5.1] 환경변수설정... 47 [ 표 6.1] JEUS 설치시환경변수설정... 65 [ 표 9.1] 서블릿 Request Path의항목과의미... 106 JEUS ix

예목차 [ 예 8.1] <<JEUSMain.xml>>... 91 [ 예 8.2] <<EJBMain.xml>>... 93 [ 예 8.3] <<WEBMain.xml>>... 93 [ 예 9.1] <<HelloWorldServlet.java>>... 97 [ 예 9.2] <<snoop.jsp>>... 98 [ 예 9.3] <<snoop-jstl.jsp>>... 99 [ 예 9.4] <<jeus-web-dd.xml>>... 101 [ 예 9.5] <<web.xml>>... 101 [ 예 10.1] <<Hello.java>>... 109 [ 예 10.2] <<HelloBean.java>>... 109 [ 예 10.3] <<HelloClient.java>>... 110 [ 예 10.4] <<Product.java>>... 116 [ 예 10.5] <<ProductManager.java>>... 118 [ 예 10.6] <<ProductManagerBean.java>>... 118 [ 예 10.7] <<ProductManagerClient.java>>... 120 [ 예 11.1] <<AddNumbersImpl.java>>... 130 [ 예 11.2] 샘플예제실행... 131 [ 예 11.3] <<AddNumbersImpl.java>>... 134 [ 예 11.4] <<AddNumbersClient.java>>... 136 [ 예 B.1] <<hosts>>... 141 JEUS xi

Part I. JEUS 소개하기 Part I. JEUS 소개하기 1

제 1 장소개 본장에서는 JEUS 에대한기본적인이해와 Java EE 스펙에대해서설명하고, JEUS 시스템의개념및구 성요소와에디션별기능에대해기술한다. 1.1. 개요 JEUS는 Java Enterprise User Solution 의약자이다. JEUS는웹환경에서애플리케이션을개발, 운용, 실행할수있는플랫폼역할을하면서, 포괄적인 Java 기반의웹애플리케이션서비스와관리를제공한다. JEUS는 Java EE 애플리케이션을구동할때필요한플랫폼과다음의같은구성요소를제공한다. EJB 컨테이너 웹컨테이너 (JSP/ 서블릿엔진 ) 보안모듈 (Security Module) Naming 서버 트랜잭션매니저 JDBC Connection Pool 세션매니저 Java EE JEUS는 Sun Microsystems사의 Java Enterprise Edition 스펙을준수하며, Java EE 5인증을획득했다. 다음은 Sun Microsystems사의웹사이트에있는문구로 JEUS는나열된모든기술들을제공한다. "The Java Platform, Enterprise Edition (Java EE) defines the standard for developing multitier enterprise applications. The Java EE platform simplifies enterprise applications by basing them on standardized, modular components, by providing a complete set of services to those components, and by handling many details of application behavior automatically, without complex programming." "The primary technologies in Java EE are: Enterprise JavaBeansTM (EJBsTM), JavaServer PagesTM (JSPsTM), Java Servlets, the Java Naming and Directory InterfaceTM (JNDITM), the Java Transaction API (JTA), CORBA, and the JDBCTM data access API." 참고 Java EE 에대해서보다자세한정보를알아보기위해서는 Oracle 사의홈페이지 (http://www.ora cle.com/technetwork/java/javaee/overview/index.html) 를참고한다. 제 1 장소개 3

다음은 JavaEE 의스펙중에서 JEUS 6 에서구현한기능목록이다. 스펙에대한내용은 http://www.ora cle.com/technetwork/java/javaee/tech/index.html 에서확인할수있다. [ 표 1.1] JEUS 6 가지원하는 JavaEE 스펙 Specification/Technology Java Platform, Enterprise Edition 5 Specification Enterprise JavaBeans Specification Java Server Pages Specification Java Servlet Specification Java Naming and Directory Interface Specification Java Message Service Specification JDBC Specification JavaMail API Specification Java Transaction API Specification Java Persistence API JNLP Specification JCA JavaBeans Activation Framework Java EE Management Java EE Deployment JSTL JSF JAAS SOAP WSDL JAX-RPC (Full) JAX-WS JAXB JAXR SAAJ (Full) StAX Enterprise Web Services JACC Version supported in JEUS 6 5.0 3.0 2.1 2.5 1.2.1 1.1 3.0 1.4 1.1 1.0 1.0.1 1.5 1.1 1.1 1.2 1.2 1.2 1.0.1 1.2 1.2 1.1 2.1 2.1 1.0 1.3 1.0 1.2 1.1 4 JEUS 설치및시작하기

사용하는 JEUS 에디션에따라서위표에나열된모든기능이구현되지않을수있다. 자세한내용은각 JEUS 에디션소개자료를참조한다. 1.2. 시스템개념과역할 다음은엔터프라이즈애플리케이션솔루션을제공하기위해서 JEUS가다른웹서버나 DBMS등과어떻게통합되는지보여준다. [ 그림 1.1] JEUS의기능과역할 Client Layer Web/Internet Layer JEUS/WAS Layer EIS Layer HTML HTTP Node JEUS Manager Databa se Applet HTTP/ RMI JNDI Service Security Service TP Monitor Client JNLP Client JNLP Web Server Other Services Engine Container Directory Server Java Corba Application RMI/II OP Servlet/JSP Engine EJB Engine JMS Engine Other ORB Legacy EIS Java Application RMI WS Engine Other Services Other JEUS Nodes 위그림에서나타난 4가지 Layer는다음과같다. Client Layer 웹서버나 Java 애플리케이션또는 Native 애플리케이션으로구성된다. 최종사용자는 WAS의서비스를사용하기위해서다양한클라이언트를사용하며, 이클라이언트는다양한프로토콜중에하나를사용해서 WAS의서비스에접근한다. Web/Internet Layer 클라이언트와 WAS 사이의중간에서작동하는웹서버나프로토콜로정의된다. 이 Layer에서는정적인콘텐츠와부하분산을처리한다. JEUS Java EE WAS Layer Java 기반의미들웨어로구성되며, Web Layer나 Client Layer로부터오는요청을받아서처리한다. EIS Layer 비즈니스데이터나기존의 Legacy 서비스를나타낸다. WAS는 JDBC나디렉터리서비스, Java EE Connector 등의다양한메커니즘을통해서 Legacy 서비스와상호작용한다. 제 1 장소개 5

1.3. 구성요소와아키텍처 JEUS는많은서로다른모듈들로구성되어있다. 이러한모듈들은다음의 [ 그림 1.2] 에서클라이언트애플리케이션과데이터저장장치, JEUS 사이의통신기술에따라서사용된다. [ 그림 1.2] JEUS 웹애플리케이션아키텍처다이어그램 Client Layer는다양한형태의클라이언트애플리케이션과통신프로토콜을보여주고있다. Source Layer 는다양한형태의 back-end 데이터저장장치들이나열되어있다. TmaxSoft의 JEUS 제품은 WebtoB와더불어그림의중간부분인 Middleware layer를구성한다. 웹서버는클라이언트애플리케이션과연결되어있으며, 웹서버는웹애플리케이션서버와밀접하게통합되어있다. 또한웹게이트웨이 (WebT) 는 WAS 와 TP-Monitor를연계시키며, 마지막으로 MainFrame 게이트웨이 (Host-Link) 는 MainFrame과 TP-Monitor 사이의연결을제공한다. 다음절에서는그림에서보이는 3가지 Layer의구성요소 (Client Layer, JEUS WAS Layer, Source Layer) 에대해알아본다. 6 JEUS 설치및시작하기

1.3.1. Client Layer Client Layer( 클라이언트계층 ) 는 JEUS를사용할수있는원격혹은지역애플리케이션을나타낸다. 다음은 Client Layer를구성하는유형에대한설명이다. [ 표 1.2] JEUS Client Layer Client Layer HTML/Web browser Web Service Client Applet Java Application CORBA Application NMS JNLP Client 설명가장일반적인클라이언트애플리케이션은 HTML 콘텐츠를얻기위해 JEUS 서블릿엔진과 WebtoB Light 웹서버에요청을하는표준웹브라우저이다. 통신프로토콜은 HTTP이다. 웹서비스의구현을제공한다. JEUS 자신의구성요소를참조할수있는애플릿컨테이너를제공한다. 일반적인독립된 Java 애플리케이션들은 JEUS에의해제공되는클라이언트컨테이너내에서 RMI를사용하여실행된다. 이러한클라이언트들을 Java EE 스펙에서는애플리케이션클라이언트라고한다. CORBA 기술을사용한애플리케이션도 RMI/IIOP를통해 JEUS를사용할수있다. 네트워크관리시스템은 JMX를통해 JEUS를관리하고사용할수있다. JNLP(Java Network Lanuching Protocol) 클라이언트들은 JEUS 6에서지원된다. 1.3.2. JEUS WAS Layer [ 그림 1.2] 에서 JEUS WAS Layer는 Java EE 5 스펙을인증받은 JEUS 6 제품을나타내며구성요소는다음과같다. JEUS Manager JEUS의핵심적인서버로전체 JEUS 시스템의기반과관리를제공한다. 몇개의 JEUS Manager들이클러스터링을구성할수도있다. [ 표 1.3] JEUS Manager 서비스 JNDI Security JTA Scheduler 설명 Naming 시스템이다. 인증과권한서비스이다. 웹애플리케이션서버에서구동되는다양한애플리케이션들에대한완전한트랜잭션을제공한다. 미리정해진시간에이벤트를발생시키는타이머기능을제공한다. 제 1 장소개 7

서비스 Session Manager JDBC JMX JCA 설명클러스터링이필요한경우신뢰성있는방식으로클라이언트의세션정보를저장한다. 데이터베이스 Connection Pool이설정될수있다. NMS/JMX 클라이언트가 JEUS 시스템을관리할수있도록한다. JCA는 Java EE Connector Architecture로, JCA를지원하는어떠한 Lagacy EAI(Enterprise Application Integration) 에대해서도 JEUS의연결을지원한다. JEUS Engine Container JEUS 시스템에서구성될수있는다양한형태의엔진에대한기반을제공하며, 다음과같은 4가지의유형이있다. [ 표 1.4] JEUS Engine Engine EJB Engine Servlet Engine JMS Engine WS Engine 설명 EJB 3.0 비즈니스애플리케이션을구동한다. 웹컨테이너로, 정적인콘텐츠 (HTML) 뿐만아니라 JSP/ 서블릿애플리케이션을구동한다. JMS 기반구조를제공한다. JEUS 웹서버의인스턴스로서서블릿엔진의 front-end로구동된다. WebtoB(or Apache) Web Server 웹서버는 HTML과같은정적인콘텐츠와 CGI와같은동적인콘텐츠를전송한다. 또한서블릿엔진의 front-end로서상호작용한다. WebtoB는 2개의버전이있는데, 하나는 TmaxSoft의 WebtoB 웹서버로서모든기능을지원하며, 또다른하나는 WebtoB 버전의일부축소된기능만을가진 JEUS 웹서버가있다. JEUS 웹서버는 JEUS에포함되어있으며, WebtoB에는포함되어있지않다. 그리고오픈소스웹서버인 Apache 또한 JEUS에서사용할수있다. JEUS Administration Tools JEUS는다음과같은 2가지의주요한관리툴이있다. [ 표 1.5] JEUS 관리툴 툴 WebAdmin Console Tool 설명 JEUS의모듈패키징, 설정이외의모든구성요소들을관리하고웹브라우저에서사용될수있는웹툴이다. 그래픽툴을통해사용될수있는모든기능은명령행기반의콘솔툴을사용해서수행될수있다. 이툴은그래픽환경을사용하지않을때사용한다. 8 JEUS 설치및시작하기

1.3.3. Source Layer [ 그림 1.2] 의오른쪽의 Source Layer는 back-end의리소스와 JEUS 시스템에의해사용될수있는데이터저장소를나타내며, 종류는다음과같다. [ 표 1.6] Source Layer Source 계층 Database Directory Server Other Java EE Server Tmax Server ORB Mainframe Legacy EIS 설명 JEUS에서 JDBC를통해서접속할수있다. LDAP와같은것들이있으며, JNDI를통해서사용된다. JEUS는타벤더의 Java EE 서버와상호작용이가능하다. TmaxSoft에서개발한 TP-Monitor로, WebT API 라이브러리는 JEUS와 Tmax 를통합하는데사용된다. IIOP(Internet Inter-ORB Protocol) 를통해참조될수있다. IBM MainFrame들은특별히 Host-Link( 혹은 Java EE Connector) 제품을통해사용된다. Java EE Connector Architecture를지원하는 Legacy EIS로 JEUS와상호작용이가능하다. 1.4. 상호운용모듈 상호운용성이란예상되는결과를얻기위해 2개혹은그이상의시스템 ( 컴퓨터, 통신장치, 네트워크, 소프트웨어혹은다른정보기술요소 ) 에서정의된방법을통한데이터교환이나상호작용을의미한다 (ISO ITC-215). JEUS는서로다른프로토콜과웹서비스, JBuilder Bridge, JNLP, RMI-IIOP와같은기술들을완벽히지원한다. 다음은 JEUS의상호운용을위해제공되는모듈이다. [ 표 1.7] 상호운용모듈 모듈 RMI-IIOP JEUS WebT Host-Link Java EE Connector Archi tecture 설명 IIOP(Internet Inter-ORB Protocol) 프로토콜에서수행되는 RMI 기술로서, JAVA 플랫폼에서 CORBA의분산컴퓨팅작업을가능하게한다. 다른웹애플리케이션의사용을가능하게하며, 웹서비스또한지원한다. TP-Monitor와 JEUS를연계하는게이트웨이이다. Legacy EIS에있는서비스를클라이언트가사용할수있도록하는어댑터모듈이다. JEUS와 JEUS 클라이언트가가상적으로어떠한 Legacy의 EIS에대한상호작용도가능하게한다. 제 1 장소개 9

1.5. Edition 다음은 JEUS 6 에대한 Edition 에대한설명이다. [ 표 1.8] JEUS Edition Edition JEUS Base Edition 주요특징 - JEUS Server - JEUS Web Server - Servlet 2.5 - JSP 2.1 - JSF 1.2 - JSTL 1.2 - Security - JDBC connection pooling - XML 유틸리티 - JNDI - JMX - WebAdmin - JEUS node clustering JEUS Base Plus Edition - Base Edition - Session clustering JEUS Standard Edition - Base Edition - EJB 3.0 - JMS 1.1-2 Phase-Commit 지원 JTA - JCA 1.5 - SNMP - Web service JEUS Enterprise Edition - JEUS Standard Edition - Session clustering - JMS clustering JEUS Developer Edition - JEUS Enterprise Edition - 최초기동 (Booting) 할때부터접속한클라이언트 5 개 (HTTP) 10 JEUS 설치및시작하기

참고제공되는 JEUS 안내서는위의표에서언급된모든주제들을포함하고있다. 안내서에기술된기능들이실제로사용가능한지여부를이표에서확인하기바란다. JEUS를설치하면 Developer Edition 라이선스는기본적으로내장되어있다. 제 1 장소개 11

제 2 장 JEUS 환경 본장에서는 JEUS 에서사용하는관리툴과디렉터리구조와환경변수에대해서설명한다. 그리고 JEUS 와관련 XML 설정파일의전반적인내용에대해서소개한다. 2.1. 관리툴 다음은 JEUS 에접속해서사용하는툴에대한설명이다. [ 표 2.1] JEUS 관리툴 툴 WebAdmin jeus jeusadmin 설명 HTML 기반의관리툴로, JEUS의제어, 모니터링, 관리등의기능을제공한다. 자세한내용은 "JEUS WebAdmin 안내서 " 를참고한다. JEUS Manager를실행하는가장기본적인툴이다. 자세한내용은 JEUS Reference Book 의 제3장 jeus 를참고한다. 콘솔툴은 command prompt에서 JEUS를컨트롤하는데사용된다. 자세한내용은 JEUS Reference Book 의 4.2. jeusadmin 을참고한다. 참고 위에서언급한것이외에도 EJB 와서블릿엔진을위한툴이존재한다. 자세한내용은해당안내서를 참고한다. 제 2 장 JEUS 환경 13

2.2. 디렉터리구조 다음은 JEUS 를설치했을때의전체디렉터리구조이다. [ 그림 2.1] JEUS 설치후디렉터리구조 JEUS_HOME\ lib\ 0I bin\ Applications launch scripts 0I system\.dll,.so native library config\ J System JARs logs\ <nodename>\ X X webserver\ TM\ license\ samples\ workspace\ JEUSMain.xml <node name>_<engine type> _<engine name>\ X security JeusSystem Engine configuration file (XML) security DOMAIN_NAME Security configuration file (XML) J jeus.jar datasource\ webhome\ J J JDBC Drivers schemas\ X JEUS XML Schema application\ endorsed\ shared\ client\ admin_home\ app_home\ autodeploy\ system_app\ uddi\ <node_name>_ <container_name>\ Application archive files Legend: 0I: binary or executable file X: XML document J: JAR file 다음은디렉터리와파일의설명이다. JEUS_HOME JEUS의최상위디렉터리로, 실제디렉터리이름과위치는설치할때결정된다. 예 ) c:\jeus 14 JEUS 설치및시작하기

bin jeus, jeusadmin과같은실행파일이나스크립트가모여있다. config 서버설정이저장되는서브디렉터리를가지고있다. config\<nodename> 이름이 <nodename> 인설정파일이위치한다. <nodename> 은 JEUS 가설치된서버의이름 ( 일반적으로 hostname) 이다. 만약현재 JEUS가백업노드로작동되도록설정되었다면백업하는노드의 <nodename> 디렉터리가존재해야한다. JEUS Manager의설정파일은 JEUSMain.xml이며, 이디렉터리에존재한다. <nodename> 이 jeus 일때 "c:\jeus\config\jeus 가된다. config\<nodename>\<nodename>_<enginetype>_<enginename> 엔진별로설정파일을가지고있다. <enginetype> 은 ejb, jms, servlet 셋중하나이며, <enginename> 은 JEUSMain.xml에서설정한이름이다. c:\jeus\config\jeus\jeus_servlet_engine1 일때, <nodename> 은 'jeus', <enginetype> 은 'servlet' 이며, 사용자가지정하는 <enginename> 은 'Engine1' 이된다. config\<nodename>\security 해당노드에서사용하는 security configuration이들어가있다. 자세한내용은 "JEUS Security 안내서 " 를참조한다. webserver JEUS가설치될때 JEUS 웹서버가설치되는디렉터리이다. 자세한내용은 "JEUS Web Service 안내서 " 를참조한다. license JEUS 라이선스파일을가지고있다. 라이선스파일은 JEUS가실행되기위해서반드시필요한파일이다. logs 시스템로그가기록된다. 하위디렉터리 logs\tm logs\jeussystem 설명 트랜잭션매니저의로그정보를기록한다. node, engine container, engine 들이생성하는로그를기록한다. samples JEUS의예제들이있다. lib JEUS가기동될때, 이디렉터리의모든서브디렉터리를스캐닝해서 ".jar" 파일이나 ".zip" 파일을클래스패스로추가한다. 서브디렉터리스캐닝순서는 system application datasource 순이다. 제 2 장 JEUS 환경 15

하위디렉터리 lib\application lib\system lib\datasource lib\schemas lib\endorsed lib\shared lib\client 설명사용자애플리케이션에서사용하는클래스파일이위치한다. 이디렉터리의모든 '.zip' 파일이나 '.jar' 파일, 디렉터리형태의일반클래스들은클래스패스로추가된다. 클래스파일은 '.jar' 나 '.zip' 파일보다먼저읽힌다. JEUS가사용하는라이브러리가있는디렉터리이므로사용자는이디렉터리를수정해서는안된다. '.so' 나 '.dll' 같은 Native Driver( 예를들면, Connector Resource Adapter에서필요한드라이버등 ) 는이디렉터리에위치해야한다. 또여기에는 JEUS의클래스인 jeus.jar가있다. JDBC 드라이버의 '.jar' 파일과설정파일이위치한다. XML 설정파일을위한 XML Schema 파일이위치한다. Java 런타임이기본 JDK 클래스들에우선하여읽어들일클래스들이 JAR 파일형태로위치한다. 애플리케이션간에공유되는라이브러리들이위치한다. Standalone과애플릿등의클라이언트가사용하는라이브러리가위치한다. webhome JavaEE 애플리케이션 ( 웹애플리케이션, EJB) 이 Deploy 되는홈디렉터리이다. 하위디렉터리 webhome\admin_home webhome\app_home webhome\autodeploy webhome\<node_name>_<con tainer_name> 설명 WebAdmin에서사용되는서블릿 /JSP 파일이있다. 애플리케이션의기본경로이다. AutoDeploy할애플리케이션의기본경로이다. <node_name>_<container_name> 에해당하는엔진컨테이너에서사용되는애플리케이션이존재한다. workspace JEUS 가동작하면서필요한작업을하는임시디렉터리로이디렉터리를수정해서는안된다. 2.3. 환경변수 환경변수는모두 "JEUS_HOM\bin\jeus.properties" 에서설정되어있으며, JEUS_HOME\bin 디렉터리의모든스크립트에서사용된다. 다음은 JEUS에서사용하는환경변수이다. [ 표 2.2] JEUS 환경변수 환경변수 JEUS_HOME 내용 JEUS 가설치된홈디렉터리로, 필수사항이다. 예 ) JEUS_HOME=C:\Jeus 16 JEUS 설치및시작하기

환경변수 JEUS_BASEPORT 내용 JEUS Manager 로접속하기위한 TCP/IP 포트이며, 다른기능을위한포 트를계산하는데기본이된다.( 기본값 : 9736) 예 ) JEUS_BASEPORT=9736 JEUS_WSDIR JEUS 웹서버의홈디렉터리이다.( 기본값 : C:\Jeus\webserver) 예 ) JEUS_WSDIR = C:\Jeus\webserver WEBTOB_PREFER_IPV6 JEUS 웹서버인내장 WebtoB 가 IPv6 를사용할지여부를설정한다. (Y/y/1 : IPv6 사용. 환경변수가없으면 IPv4 사용 ) 예 ) WEBTOB_PREFER_IPV6=Y JAVA_HOME JDK 의홈디렉터리이다. 예 ) JAVA_HOME = c:\jdk1.5 해당변수는필요한경우수정해서사용한다. 단, XML 설정파일에서는이들환경변수를사용할수없다. 모든환경변수는설치할때기본값으로정해진다. 대부분의경우설정된값을그대로사용하면된다. 참고 환경변수를변경하는방법은 OS 에따라다르므로, 이에대해서는각 OS 안내서를참고한다. 2.4. 환경설정파일 2.4.1. XML 환경설정파일 JEUS는환경설정을위해서각각고유의 XML 포맷을사용하며, 직접수정하거나툴을사용해서수정할수있다. 다음은 JEUS의 XML 설정파일과내용, 위치를정리한내용이다. JEUSMain.xml (jeus-main.xsd) 위치 목적 참고안내서 JEUS_HOME\config\<nodename>\ JEUS Manager 와노드를관리하는기본설정파일이다. JEUS Server 안내서 WEBMain.xml (web-main.xsd) 위치 설명 참고안내서 JEUS_HOME\config\<nodename>\<Servlet Enginedir>\ 서블릿 /JSP 엔진설정파일이다. JEUS Web Container 안내서 제 2 장 JEUS 환경 17

jeus-web-dd.xml (jeus-web-dd.xsd) 위치 설명 참고안내서 웹애플리케이션 Archive 의 WEB-INF JEUS 웹애플리케이션 (Servlet app) Deployment Descriptors 파일이다. JEUS Web Container 안내서 EJBMain.xml (ejb-main.xsd) 위치 설명 참고안내서 JEUS_HOME\config\<nodename>\<EJB Enginedir>\ EJB 엔진설정파일이다. JEUS EJB 안내서 jeus-ejb-dd.xml (jeus-ejb-dd.xsd) 위치 설명 참고안내서 EJB 애플리케이션 Archive 의 META-INF JEUS EJB Module Deployment Descriptors 파일이다. JEUS EJB 안내서 jeus-client-dd.xml (jeus-client-dd.xsd) 위치 설명 참고안내서 클라이언트애플리케이션 Archive 의 WEB-INF 애플리케이션클라이언트 Deployment Descriptor 파일이다. JEUS 애플리케이션안내서 jeus-connector-dd.xml (jeus-connector-dd.xsd) 위치 설명 참고안내서 리소스어댑터 Archive 의 META-INF 리소스어댑터 Deployment Descriptor 파일이다. JEUS JCA 안내서 JMSMain.xml (jms-main.xsd) 위치 설명 참고안내서 JEUS_HOME\config\<nodename>\<JMS Enginedir>\ JMS 엔진설정파일이다. JEUS MQ 안내서 policies.xml (policies.xsd) 위치 설명 JEUS_HOME\config\<nodename>\security\<domainname>\ JEUS Security 정책을설정한파일이다. 18 JEUS 설치및시작하기

참고안내서 JEUS Security 안내서 accounts.xml (accounts.xsd) 위치 설명 참고안내서 JEUS_HOME\config\<nodename>\security\<domainname>\ JEUS Security 계정을설정한파일이다. JEUS Security 안내서 jeus-web-dd.xml (jeus-web-dd.xsd), jeus-ejb-dd.xml (jeus-ejb-dd.xsd), jeus-client-dd.xml (jeus-clientdd.xsd) 위치 설명 참고안내서 Webservice client archive 의 META-INF 웹서비스클라이언트정보를설정한파일이다. JEUS Web Service 안내서 jeus-webservices-config.xml (jeus-webservices-config.xsd) 위치 설명 참고안내서 Webservice client archive 의 META-INF 웹서비스클라이언트 Ant Task 에서사용하는설정파일이다. JEUS Web Service 안내서 참고 1. Java EE의표준 Descriptor 파일인 web.xml 이나 ejb-jar.xml 파일도사용된다. 각파일은해당 Java EE 스펙을참조한다. 2. 모든 XML Schema 파일은 JEUS_HOME\lib\schemas\jeus\ 에위치한다. 제 2 장 JEUS 환경 19

제 3 장 JEUS 안내서구성 본장에서는안내서를어떻게활용하면좋은지와안내서에서사용된약자들을소개한다. JEUS 안내서에 서필요한정보를얻기위해서는본장을주의깊게살펴보길바란다. 3.1. 개요 JEUS 안내서는다음과같은 3가지방법으로구할수있다. 소프트웨어와함께제공되는 html 문서 JEUS Installer CD에서제공되는 PDF 파일 PDF 파일을보려면 Adobe Acrobat Reader나혹은다른 PDF를지원하는소프트웨어가필요하다. http://www.adobe.com/products/acrobat/readstep.html을방문하면 Adobe Acrobat Reader를다운로드받을수있다. TmaxSoft의 TechNet 사이트에서업데이트된소프트웨어나안내서 TechNet 주소는 http://technet.tmax.co.kr/kr/index.do이다. 다음은 JEUS 안내서에대해기본적으로알아야하는 4가지사항이다. JEUS 안내서는 Java와 Java EE 기술에대한경험을가진 Java EE 전문가를위해작성되었다. 안내서는개별적이고연관성을배제한문서들로구성되어있다. JEUS 안내서문서는몇가지의예외를제외하고는기본적으로표준적인문서양식에따라구성되어있다. 안내서는매우다양한방식으로구성되어있다. 참고안내서의내용을이해하기위해서는 Java와 Java EE 기술에대한지식이필요하다. 그러한지식은서점에있는다양한서적들로부터얻길바란다. 또한, Java 관련웹사이트인 http://www.ora cle.com/technetwork/java/index.html에서유용한온라인문서와스펙, 자습서등을얻을수있다. JEUS 안내서에서 Java EE 스펙에서술되어있는모든내용에대해다루는것은어렵다. 현재는단지 JEUS에특화된정보들에대해서만다룬다. 3.2. 안내서의구성 다음의 [ 그림 3.1] 은 JEUS 안내서의구성을나타낸다. 화살표는 JEUS 에익숙하지못한사용자를위해읽 어야할우선순위를나타낸것이다. JEUS 안내서는총 18 권으로구성되어있다. 제 3 장 JEUS 안내서구성 21

[ 그림 3.1] JEUS 안내서구성 각각의안내서에대한내용들은다음의목록에명시되어있다. 특정한주제에대해서위치를빨리찾고싶다면다음의목록을참조한다. JEUS 6 릴리즈노트 JEUS의새로운기능 이전버전의업그레이드방법 JEUS 소개 JEUS 6 서버에대한전반적인소개와, JEUS의아키텍처및각구성요소들에대해설명한다. JEUS6 서버에대한소개 JEUS 환경 JEUS 안내서의구성 JEUS 설치및시작하기 Windows와 UNIX에서 Java 설치 Windows와 UNIX에서 JEUS 설치 예제애플리케이션에대한설명포함 (QuickStart) JEUS 시스템입문서 22 JEUS 설치및시작하기

EJB 입문서 서블릿 /JSP 입문서 JEUS WebAdmin 안내서 JEUS의웹관리툴로서, 일반사용자부터관리자까지반드시읽어야한다. JEUS의설정및제어, 모니터링 JEUS 클러스터링 Java EE Application Deployment 리소스설정및관리 JEUS Server 안내서 JEUS 관리차원의주요안내서이며, JEUS 시스템관리자들이가장많이읽어야하는부분이다. JEUS 시스템과서버에대한개요 JEUS Manager JEUS JNDI Naming Server와 JNDI 구성 External Resource: JDBC/Data Source 커넥션풀, URL Source, Mailing Source, Tmax와 IBM MQ Source와 Java EE Connector JDBC Connection Pool과 Connector JEUS 노드 세션서버 JEUS 엔진컨테이너 JEUS 트랜잭션매니저 JEUS 엔진 : EJB, 웹컨테이너, JMS, 웹서버엔진 JEUS 클러스터링 Java EE 애플리케이션의 Deploy JEUS EJB 안내서 JEUS EJB 엔진과 EJB 모듈을 Deploy하는것에대해주로설명한다. JEUS EJB에대한개요 JEUS EJB 엔진 EJB 모듈들 일반적인 EJB( 각각의 Bean들에대한구성 ) JEUS EJB에대한보안 제 3 장 JEUS 안내서구성 23

JEUS EJB에대한보안의상호작용 JEUS EJB 클러스터링 세션 EJB Entity EJB MDB EJB EJB 클라이언트 JEUS Web Container 안내서 JEUS 웹컨테이너의관리를위한안내서이며, Java EE WAR Archive와서블릿 /JSP의관리와 Deploy 하는방법에대해설명한다. JEUS 웹에대한개요 JEUS 웹컨테이너 JEUS 웹컨텍스트그룹 웹서버와의연결과클러스터링 (WebtoB, Apache and built-in HTTP server connections and clusters) 클러스터된환경에서의세션추적 웹컨텍스트 ( 웹애플리케이션 /WAR 파일들 ) 가상호스팅 JEUS MQ 안내서 JEUS 메시지기반시스템 (JMS) 을설명한다. JEUS JMS의개요 JMS 엔진에대한환경설정그리고, 모니터링과제어 JEUS에서의 JMS 프로그래밍 JEUS Web Service 안내서 JEUS 내의웹서비스에대해설명한다. JEUS 웹서비스에대한개요 웹서비스 back-end 생성 웹서비스 back-end를사용하는클라이언트구현하기 데이터타입과 JEUS 웹서비스 웹서비스에관련된 Ant UDDI 이용 웹서비스보안 24 JEUS 설치및시작하기

JEUS JMX 안내서 JMX를사용해서 JEUS를관리하기위한안내서이다. JEUS JMX Manager 설정 JMX 애플리케이션개발 JMX API 레퍼런스 JEUS SNMP 안내서산업표준인 SNMP 프로토콜을이용한 JEUS 모니터링에대해설명한다. JEUS SNMP Agent의개요 SNMP Agent의구성 JEUS SNMP 프로그래밍 JEUS SNMP MIB JEUS JCA 안내서 JEUS와 legacy 시스템과연결하기위한 Connector에대한설명한다. Connector에대한내용 Connector 패키징 Connector 사용과튜닝 JEUS JPA 안내서 JEUS에통합된 TopLink Essential을사용해서어떻게사용되는지에대해서설명한다. Java Persistence API 소개 프로바이더설정 JEUS 설정 JEUS Scheduler 안내서 JEUS의 Scheduler 기능에대한안내서이다. Scheduler Service 설정 Scheduler Service 프로그래밍 JEUS Application & Deployment 안내서 Java EE 애플리케이션을 JEUS에 Deploy하기위한여러가지방법과툴에대해설명한다. Deployment 개요 Deployment 관련디렉터리 Deployment Tool과 API 제 3 장 JEUS 안내서구성 25

2-phase deployment Java EE Application Deployment Descriptor 설명 JEUS Client Application 안내서 Java EE 클라이언트와 JEUS 사이의상호운용에대해설명한다. Java EE Java 애플리케이션클라이언트 애플릿클라이언트 JNLP 클라이언트 JEUS CAS: COM 애플리케이션과 JEUS의상호운용을위한것 JEUS Security 안내서 JEUS에서 Security System을어떻게설정운영할것이며, Security 관련프로그래밍에대한설명한다. Security 시스템의개요와설정 애플리케이션과모듈의 Security 설정 Security 시스템의운영과튜닝 Security API를이용한프로그래밍 Custom Security 서비스개발하기 JACC 제공자사용하기 JEUS Reference Book JEUS를사용하는데도움이되는 Reference를모아둔안내서이다. 시스템프로퍼티내용 콘솔명령어사용법 Ant Tasks 사용법 JEUS에서사용되는 API 모음 참고위의목록에서보았듯이, JEUS Server 안내서는그범위가매우방대하다. JEUS Security, Naming 그리고트랜잭션매니저와같은서로다른많은주제들을포함하고있다. 이러한구성의이유는비록주제들이전혀다른것이라할지라도이러한구성요소들이모두동일한환경설정파일에서구성되고동일한 JVM에서수행되기때문이다. 또한각각의안내서들의수를최소한으로유지하기위해서이다. 26 JEUS 설치및시작하기

Part II. JEUS 설치하기 Part II. JEUS 설치하기 27

제 4 장설치개요및준비사항 본장에서는설치과정에대한기본적인설명과설치전에준비할시스템환경및필요한 JDK 환경구성 에대해서설명한다. 4.1. 개요 Microsoft Windows와 UNIX 환경에서 JEUS를쉽게설치하기위해 JEUS 설치툴은그래픽사용자인터페이스 (GUI) 를지원한다. 커맨드모드가익숙한 UNIX/LINUX 환경에서는콘솔모드에서설치가가능하다. 기본적으로콘솔모드로설치가진행되며, GUI형태로진행하려면 i GUI 옵션을넣어서실행한다. 설치파일은다음의작업을진행한다. JEUS 라이선스계약을한다. 설치를진행하려면반드시동의하여야하므로주의깊게읽어보길바란다. JEUS 설치파일은 Full Install, Typical, Advanced Mode 등다양한 Install set을제공한다. 설치파일에 Java 2 JDK 버전 1.5.x 포함한다. Full Install JEUS 예제인 Samples와 JEUS 관련문서파일이포함된 JEUS Full 버전을설치한다. Java 2 Platform Enterprise Edition Compatibility Test(CTS) 를통과한버전에 JEUS의고유기능이추가된버전을설치한다. Typical JEUS 예제인 Samples가제외된, JEUS 관련문서파일과 JEUS Core 파일을설치한다. Java 2 Platform Enterprise Edition Compatibility Test (CTS) 를통과한버전에 JEUS의고유기능이추가된버전을설치한다. Advanced Mode 수동설치가능한 Manual Configuration Option을지원한다. Manual Configuration Option에는관리자가 AutoDeploy 경로와 JEUS_BASEPORT를직접지정할수있다 (UNIX/LINUX 콘솔모드에선지원하지않음 ). JEUS 구성파일및디렉터리를배치한다. JEUS 서블릿엔진의 Listener인 JEUS 웹서버를설치한다. JEUS의단축아이콘을생성한다 (Windows 에서 ). JEUS의환경변수를설정한다. NT서비스로 JEUS를등록한다 (Windows 에서 ). 제 4 장설치개요및준비사항 29

JEUS 의제거 (Uninstall) 툴을생성한다. 4.2. 시스템요구사항 다음은 JEUS를설치하기위한시스템 (H/W, S/W) 요구사항이다. 시스템요구사항 JEUS 설치를위해서필요한 H/W, S/W는다음과같다. [ 표 4.1] 시스템요구사항 플랫폼 Windows 2003/XP Windows 2000 설치시필요환경 JDK 5.0 Update 4(1.5.0_04) 이상 300M 이상의하드디스크여유공간 Windows NT Windows Vista Solaris, HP-UX, AIX, Linux JDK 5.0 Update 4(1.5.0_04) 이상 300M 이상의하드디스크여유공간 플랫폼지원환경 플랫폼별 JEUS 동작에필요한표준하드웨어지원환경은다음과같다. [ 표 4.2] 플랫폼지원환경 OS Version CPU RAM Memory Hard Disc Space JDK Version Solaris 8, 9, 10 UltraSPARC 1 Gigabytes 20 Gigabytes JDK 1.5.0_04 이상 HP-UX 11.0 HP-PA series 512 Megabytes 20 Gigabytes JDK 1.5.0_04 이상 AIX 5L, 6L, 7L RS6000 512 Megabytes 20 Gigabytes JDK 1.5.0_04 이상 Linux 7.x 이상 INTEL Pentium 3 512 Megabytes 20 Gigabytes JDK 1.5.0_04 이상 Kernel 2.4 이상 1GHZ 이상 MS Windows NT 이상 INTEL Pentium 3 512 Megabytes 20 Gigabytes JDK 1.5.0_04 이상 1GHZ 이상 30 JEUS 설치및시작하기

4.3. 설치순서 다음은 UNIX와 Windows에서 JEUS 설치순서이다. 전체적인설치순서는동일하고일부과정이차이가있으므로자세한내용은각절에서확인한다. 1. JDK 5 설치한다. 2. GUI 모드에서 JEUS를설치 ( 파일복사 ) 한다. 3. 환경변수를설정하고검증한다. 4. 설치된내용을검증 ( 동작확인 ) 한다. 5. Windows의경우선택적으로 JEUS의 Windows 서비스등록과해제한다. 다음은 JEUS 설치할때작업과선택사항을보여준다. [ 그림 4.1] JEUS 설치순서 위그림의작업상자는작업을나타낸다. 자세한설명은각절의설명을참고한다. UNIX에서 GUI 모드를이용한 JEUS 설치 / 제거는 5.2. GUI 모드에서설치, 5.5. GUI 모드에서제거 를참조한다. UNIX에서콘솔모드를이용한 JEUS 설치 / 제거는 5.3. 콘솔모드에서설치, 5.6. 콘솔모드에서제거 를참조한다. Windows에서 GUI 설치툴을이용한 JEUS 설치 / 제거는 제6장 Windows에서설치및제거 를참조한다. Appendix A. 플랫폼별 JDK 설치 는 LINUX, Solaris, AIX, HP-UX 등의특정플랫폼에서추가적인설치정보를제공한다. 제 4 장설치개요및준비사항 31

4.4. Java 2 JDK 설치 JEUS 를사용하기위해서는 Java 2 JDK(JavaSE Developement Kit) 가설치되어있어야한다. 다음은 UNIX 와 Windows 에서 JDK5 의설치에대한설명이다. UNIX 에서 JDK 5 설치 UNIX 용 JavaTM 2 JDK 5 Standard Edition 은다음에서다운받을수있다. http://www.oracle.com/technetwork/java/javase/downloads/index-jdk5-jsp-142662.html 자세한내용은 http://java.sun.com/j2se/1.5.0/install-linux.html 을참고한다. 플랫폼별 JDK 설치에대한자 세한내용은 Appendix A. 플랫폼별 JDK 설치 를참고한다. Windows 에서 JDK 5 설치 Windows 용 JavaTM 2 JDK 5 Standard Edition 은다음에서다운받을수있다. http://www.oracle.com/technetwork/java/javase/downloads/index-jdk5-jsp-142662.html 자세한내용은 http://java.sun.com/j2se/1.5.0/install-windows.html 를참고한다. JEUS 설치전에 JDK 가설치되었는지확인한다. 설치후에는 Windows 환경변수 PATH 에설치된 JDK 의 bin 디렉터리를추가한다. 4.5. JEUS 라이선스정책 JEUS를사용하기위해서는 TmaxSoft에서발급하는라이선스-키 (License-Key) 파일이있어야한다. Installer 로설치한 JEUS 에는기본적으로개발자라이선스 (Developer License) 가포함되어있다. 라이선스파일은 JEUS_HOME\license에 license 라는파일로존재한다. 라이선스의에디션에는 Base, Base Plus, Standard, Enterprise,S Developer 라이선스가있으며기능및사용기한에차이가있다. 라이선스를업그레이드하거나정식라이선스를취득하기위해서는 TmaxSoft 영업대표 (Sales Represen tative) 를통하거나직접 TmaxSoft에문의하여야한다. 라이선스파일을사용하기위해서는 JEUS_HOME\license 디렉터리아래에라이선스-키 (License-Key) 파일을 license 라는이름으로복사한다. 참고 라이선스파일명이 license 가아닌경우 "license" 로변경하여야한다. 32 JEUS 설치및시작하기

제 5 장 UNIX 에서설치및제거 본장에서는 UNIX 에서 JEUS 를설치하고제거하는과정에대해서설명한다. 5.1. 개요 UNIX 환경에서 JEUS 설치는 GUI 모드나콘솔모드를선택이가능하다. JEUS 설치는다음의과정으로진행된다. 1. JDK 5 설치 2. JEUS 설치 ( 파일복사 ) 3. 설치확인 - 기동확인 - 환경변수설정과검증 JEUS 제거도 GUI 모드나콘솔모드를통해 JEUS 제거가가능하다. 5.2. GUI 모드에서설치 UNIX 환경에서 GUI 모드에서 JEUS 설치하는과정에대해서설명한다. GUI 설치가가능하지않다면 5.3. 콘솔모드에서설치 를참고한다. LINUX, Solaris, HP, AIX에서의 JEUS 설치과정은동일하며, 설치할때화면구성은 Windows 설치할때와유사하다. 그러나 UNIX에서 GUI 설치툴을이용하기위해서는 Java 기반의 GUI 환경을지원하는콘솔혹은터미널이설치되어있어야한다. GUI 모드에서 JEUS 설치과정은다음과같다. 1. CD를 CD-ROM 장치에넣고마운트 (mount) 한다. 2. 명령라인에서다음을입력한후에 <ENTER> 키를누른다. jeus60-unix-generic.bin i GUI 만약다른위치에서실행한다면 jeus60-unix-generic.bin 파일실행이가능하도록확인하고콘솔프롬프트를실행한후다음을실행한다. chmod u+x jeus60-unix-generic.bin 제 5 장 UNIX 에서설치및제거 33

3. JEUS 설치툴의초기화면이나타난다. 진행상태가 100% 가될때까지기다린다. [ 그림 5.1] 설치툴의초기화면 4. 다음과같은소개화면이표시된다. [ 그림 5.2] 소개화면 5. JEUS 소개내용을읽고 [Next] 버튼을클릭한다. 설치를종료하려면 [Cancel] 버튼을클릭한다. 34 JEUS 설치및시작하기

6. 라이선스준수화면에서라이선스준수내용을읽고 I accept the terms of 를선택한후 [Next] 버 튼을클릭한다. [ 그림 5.3] 라이선스준수화면 7. 플랫폼목록에서설치할플랫폼을선택한다. [ 그림 5.4] 플랫폼선택화면 8. 설치디렉터리선택화면이나타난다. JEUS 바이너리와기타다른파일들은설정한경로의디렉터리의하위에설치된다. [Choose ] 를클릭하면다른설치폴더를선택할수있고 [Restore Default Folder] 를클릭하면초기기본폴더로복귀한다. 가능하면기본폴더를그대로사용하길권장한다 ( 예 : /home/jeus ). 설치할디렉터리를선택하고 [Next] 버튼을클릭한다. 제 5 장 UNIX 에서설치및제거 35

[ 그림 5.5] 설치디렉터리선택화면 9. Install Set 선택화면이나타난다. 설치옵션에서 Full Install, Typical, Advanced Mode 중하나를선택한다. Full Install : JEUS 예제인 Samples와 JEUS 관련문서파일이포함된 JEUS Full 버전을설치한다. Typical : JEUS 예제인 Samples가제외된 JEUS 관련문서파일과 JEUS Core 파일을설치한다. Advanced Mode : Manual Configuration Option를지원한다. 관리자가 autodeploy 경로와 JEUS_BASEPORT를직접지정할수있다. [ 그림 5.6] Install Set 선택화면 36 JEUS 설치및시작하기

10. JDK 설치디렉터리선택화면이나타난다. 초기에설치된 Java 2 JDK 전체경로를설정한다 ( 예 : /usr/jdk1.5 ). 설치프로그램은설치된 JDK 경로를제안하지만경우에따라변경할수있다. [Choose ] 를클릭하면다른설치폴더를선택할수있고 [Restore Default Folder] 를클릭하면초기기본폴더로복귀한다. [ 그림 5.7] JDK 설치디렉터리선택화면 참고 JEUS 설치후에 Java 2 JDK를설치하려면 JDK 설치경로를포함하는 JAVA_HOME 환경변수를수정해야한다. 그러므로 JDK를설치후 JEUS 설치를권장한다. 11. 패스워드입력화면이나타난다. 화면에서 JEUS 관리자의패스워드를입력한다. 패스워드는 adminis trator 관리자계정으로할당된다. [ 그림 5.8] 패스워드입력화면 제 5 장 UNIX 에서설치및제거 37

12. 지금단계까지설정한설치정보를확인한후 [Install] 버튼을클릭해서설치를시작한다. [ 그림 5.9] 설치정보확인 13. 설치가진행되는것을확인한다. [ 그림 5.10] 설치진행화면 38 JEUS 설치및시작하기

14. 설치종료를확인한다. [ 그림 5.11] 설치종료 5.3. 콘솔모드에서설치 본절에서는콘솔모드 ( 명령라인 ) UNIX/LINUX 환경에서 JEUS 를설치하는방법에대해서설명한다. 콘 솔모드에서설치를하기위해서 Console Installer 를실행해야한다. 참고 Console Installer는설치과정에서값을입력받을때기본값을제시한다. 셸은이전단계로돌아가는것이기본적으로불가능하므로설치가완료된후에값을변경하면된다. 하지만어느단계까지는 <back>, <ENTER> 입력을통해전단계로이동이가능하다 다음의하위절은텍스트기반셸을실행하는과정에대한설명이다. 1. JEUS 설치 CD를넣고마운트 (mount) 한다. CD의 jeus60-unix-generic.bin 파일이있는곳으로이동한다. 2. 다른곳에있는설치 Console Installer가실행이가능하도록하려면 jeus60-unix-generic.bin 파일의실행권한을부여한다. chmod u+x jeus60-unix-generic.bin 3. 콘솔에서 jeus60-unix-generic.bin을실행한다 (./jeus60-unix-generic.bin 입력후 <ENTER> 키를누른다 ). [jeususer@matrix jeus]$./jeus60-unix-generic.bin Preparing to install... Extracting the JRE from the installer archive... 제 5 장 UNIX 에서설치및제거 39

Unpacking the JRE... Extracting the installation resources from the installer archive... Configuring the installer for this system's environment... Launching installer... Preparing CONSOLE Mode Installation... 4. JEUS 라이선스준수화면이나타난다. =========================================================== License Agreement ----------------- Installation and use of JEUS6 requires acceptance of the following License Agreement: TmaxSoft Co., Ltd. (hereafter, TmaxSoft) End-User License Agreement Jeus This is a legal agreement between you (either an individual or an company) and T max Soft, Incorporated. By opening the sealed software package and/or by using the software, you agree to be bound by the terms of this agreement. TmaxSoft License 1. Grant of License: This TmaxSoft License Agreement ("License") permits you to use one copy of the TmaxSoft product Jeus, on any single computer, provided the software is in use on only one computer at any one time. If this package is a license pack, you may make and use additional copies of the software up to th e number of licensed copies authorized. If you have multiple licenses for the s oftware, then at any time you may have as many copies of the software in use as you have licenses. The software is "in use" on a computer when it is loaded into the temporary me mory (i.e., RAM) or installed into the permanent memory (e.g., hard disk, CD-ROM, or other storage devices) of that computer, except that a copy installed on a network server for the sole purpose of distribution to other computers is not " in use". If the anticipated number of users of the software will exceed the num ber of applicable licenses, then you must have a reasonable mechanism or process in place to ensure that the number of persons using the 5. JEUS 라이선스준수에대한다음정보를보기위하여 <ENTER> 키를누른다. PRESS <ENTER> TO CONTINUE: software concurrently does not exceed the number of licenses. 40 JEUS 설치및시작하기

2. Copyright: The software (including any images, "applets," photographs, anim ations, video, audio, music and text incorporated into the software) is owned by TmaxSoft or its suppliers and international treaty provisions. Therefore, you must treat the software like any other copyrighted materials (e.g., a book or musical recording) except that you may either (a) make one copy of the software solely for backup or archival purposes, or (b) transfer the softwar e to a single hard disk provided you keep the original solely for backup or arch ival purposes. You may not copy the printed materials accompanying the software, nor print copies of any user documentation provided in "online" or electronic form. 3. Other restrictions: This license is your proof of license to exercise the ri ghts granted herein and must be retained by you. You may not rent, lease, or tra nsfer your rights under this license on a permanent basis provided you transfer this license, the software, and all accompanying printed materials, retain no co pies, and the recipient agrees to the terms of this license. You ay not reverse engine, decompile, or disassemble the software, except to the extent that the fo regoing restriction is expressly prohibited by applicable law. 6. 라이선스동의여부를답한다. 동의를하면 y 를입력후 <ENTER> 키를누르고, 아니면 n 을입력후 <ENTER> 키를누른다. PRESS <ENTER> TO CONTINUE: DO YOU ACCEPT THE TERMS OF THIS LICENSE AGREEMENT? (Y/N): y 7. 플랫폼목록에서설치할플랫폼을선택한다. ================================================================= Choose Platform --------------- Choose current system ( platform-architecture ) 1)HP-UX PA-RISC 2)HP-UX ITANIUM 3)Solaris Ultra-Sparc 4)Solaris x86 5)AIX 5.x, 6.x PowerPC 6)Linux i386 7)Linux ITANIUM 8)Linux x86_64 Quit) Quit Installer Choose Current System (DEFAULT: 8): 제 5 장 UNIX 에서설치및제거 41

8. 설치디렉터리를선택한다. 기본적으로제공되는값을사용하려면 <ENTER> 를누르고, 디렉터리변경을원하면설치경로를입력한다. =========================================================== Choose Install Folder --------------------- Where would you like to install? Default Install Folder: /home/jeus ENTER AN ABSOLUTE PATH, OR PRESS <ENTER> TO ACCEPT THE DEFAULT : 9. Full Install, Typical 설치중하나를선택한다. Full Install : JEUS 예제인 Samples와 JEUS 관련문서파일이포함된 JEUS Full 버전을설치한다. Typical : Samples을제외한 JEUS 관련문서파일과 JEUS Core 파일을적용하여 JEUS 필수파일들을설치한다. 참고콘솔모드는 Advanced Mode를지원하지않는다. Advanced Mode를선택하기위해서는 GUI 모드를이용한다. Choose Install Set ------------------ Please choose the Install Set to be installed by this installer. ->1- Full Install 2- Typical ENTER THE NUMBER FOR THE INSTALL SET, OR PRESS <ENTER> TO ACCEPT THE DEFAULT : 1 10. JDK의위치를입력한다. <ENTER> 키를누르면자동으로인식한 JDK의위치를사용한다. 디렉터리변경을원하면설치경로를입력한다. ========================================================== Choose JDK Folder ----------------- Please Choose a Folder: Input User JDK Folder (DEFAULT: /usr/jdk1.5): 42 JEUS 설치및시작하기

11. JEUS 관리자의패스워드를입력한다. 이패스워드는 administrator ID로할당된다. ================================================================= Password Input -------------- Enter the Password for the administrator account. This password will be registered in JEUS as the first user. Input Password:: Corfirm Password:: 참고 패스워드는 JEUS 를기동하는필수적인요소이다. 입력한패스워드는기억장치에기록되며, 주의깊 게입력해야한다. 12. 다음화면은설치에관련한요약정보를보여준다. <ENTER> 키를누르면설치가진행된다. Pre-Installation Summary ------------------------ Please Review the Following Before Continuing: Product Name: JEUS6 Install Folder: /home/jeus Install Set Full Install Disk Space Information (for Installation Target): Required: 130,312,561 bytes Available: 1,612,476,416 bytes PRESS <ENTER> TO CONTINUE: 13. 진행바와함께설치가진행된다. =========================================================== Installing... ------------- [=============== =============== =============== ===============] [--------------- --------------- --------------- ---------------] 제 5 장 UNIX 에서설치및제거 43

14. 설치가완료된다. =========================================================== Installation Complete --------------------- Congratulations! JEUS6 has been successfully installed to: /home/jeus Press Done to quit the installer. PRESS <ENTER> TO EXIT THE INSTALLER: 5.4. 설치확인 GUI 모드나콘솔모드를사용해서 JEUS를설치한후사용에필요한환경변수를설정해야한다. 환경변수를설정하고 JEUS를기동해서설치가정상적으로이루어졌는지확인한다. 환경변수를설정하기전에 JEUS가설치된경로에디텍터리구조를확인한다. 5.4.1. 디렉터리구조 다음은 JEUS 를설치했을때의전체디렉터리구조이다. 44 JEUS 설치및시작하기

[ 그림 5.12] JEUS 설치후디렉터리구조 JEUS_HOME\ lib\ 0I bin\ Applications launch scripts 0I system\.dll,.so native library config\ J System JARs logs\ <nodename>\ X X webserver\ TM\ license\ samples\ workspace\ JEUSMain.xml <node name>_<engine type> _<engine name>\ X security JeusSystem Engine configuration file (XML) security DOMAIN_NAME Security configuration file (XML) J jeus.jar datasource\ webhome\ J J JDBC Drivers schemas\ X JEUS XML Schema application\ endorsed\ shared\ client\ admin_home\ app_home\ autodeploy\ system_app\ uddi\ <node_name>_ <container_name>\ Application archive files Legend: 0I: binary or executable file X: XML document J: JAR file 다음은디렉터리와파일의설명이다. JEUS_HOME JEUS의최상위디렉터리로, 실제디렉터리이름과위치는설치할때결정된다. 예 ) c:\jeus bin jeus, jeusadmin과같은실행파일이나스크립트가모여있다. config 서버설정이저장되는서브디렉터리를가지고있다. 제 5 장 UNIX 에서설치및제거 45

config\<nodename> 이름이 <nodename> 인설정파일이위치한다. <nodename> 은 JEUS 가설치된서버의이름 ( 일반적으로 hostname) 이다. 만약현재 JEUS가백업노드로작동되도록설정되었다면백업하는노드의 <nodename> 디렉터리가존재해야한다. JEUS Manager의설정파일은 JEUSMain.xml이며, 이디렉터리에존재한다. <nodename> 이 jeus 일때 "c:\jeus\config\jeus 가된다. config\<nodename>\<nodename>_<enginetype>_<enginename> 엔진별로설정파일을가지고있다. <enginetype> 은 ejb, jms, servlet 셋중하나이며, <enginename> 은 JEUSMain.xml에서설정한이름이다. c:\jeus\config\jeus\jeus_servlet_engine1 일때, <nodename> 은 'jeus', <enginetype> 은 'servlet' 이며, 사용자가지정하는 <enginename> 은 'Engine1' 이된다. config\<nodename>\security 해당노드에서사용하는 security configuration이들어가있다. 자세한내용은 "JEUS Security 안내서 " 를참조한다. webserver JEUS가설치될때 JEUS 웹서버가설치되는디렉터리이다. 자세한내용은 "JEUS Web Service 안내서 " 를참조한다. license JEUS 라이선스파일을가지고있다. 라이선스파일은 JEUS가실행되기위해서반드시필요한파일이다. logs 시스템로그가기록된다. 하위디렉터리 logs\tm logs\jeussystem 설명 트랜잭션매니저의로그정보를기록한다. node, engine container, engine 들이생성하는로그를기록한다. samples JEUS의예제들이있다. lib JEUS가기동될때, 이디렉터리의모든서브디렉터리를스캐닝해서 ".jar" 파일이나 ".zip" 파일을클래스패스로추가한다. 서브디렉터리스캐닝순서는 system application datasource 순이다. 하위디렉터리 lib\application 설명사용자애플리케이션에서사용하는클래스파일이위치한다. 이디렉터리의모든 '.zip' 파일이나 '.jar' 파일, 디렉터리형태의일반클래스들은클래스패스로추가된다. 클래스파일은 '.jar' 나 '.zip' 파일보다먼저읽힌다. 46 JEUS 설치및시작하기

하위디렉터리 lib\system lib\datasource lib\schemas lib\endorsed lib\shared lib\client 설명 JEUS가사용하는라이브러리가있는디렉터리이므로사용자는이디렉터리를수정해서는안된다. '.so' 나 '.dll' 같은 Native Driver( 예를들면, Connector Resource Adapter에서필요한드라이버등 ) 는이디렉터리에위치해야한다. 또여기에는 JEUS의클래스인 jeus.jar가있다. JDBC 드라이버의 '.jar' 파일과설정파일이위치한다. XML 설정파일을위한 XML Schema 파일이위치한다. Java 런타임이기본 JDK 클래스들에우선하여읽어들일클래스들이 JAR 파일형태로위치한다. 애플리케이션간에공유되는라이브러리들이위치한다. Standalone과애플릿등의클라이언트가사용하는라이브러리가위치한다. webhome JavaEE 애플리케이션 ( 웹애플리케이션, EJB) 이 Deploy 되는홈디렉터리이다. 하위디렉터리 webhome\admin_home webhome\app_home webhome\autodeploy webhome\<node_name>_<con tainer_name> 설명 WebAdmin에서사용되는서블릿 /JSP 파일이있다. 애플리케이션의기본경로이다. AutoDeploy할애플리케이션의기본경로이다. <node_name>_<container_name> 에해당하는엔진컨테이너에서사용되는애플리케이션이존재한다. workspace JEUS 가동작하면서필요한작업을하는임시디렉터리로이디렉터리를수정해서는안된다. 5.4.2. 환경설정 JEUS를사용하기위해서는환경변수가필요하다. 설치과정에서일부환경변수를설정하지만경우에따라서는수정해서사용한다. 해당변수들은설치할때환경변수 PATH는 '.profile/.cshrc' 에적용되고, 그외환경변수는 '$JEUS_HOME/bin/jeus.properties' 파일에설정된다. 다음은주요환경변수에대한설명이다. [ 표 5.1] 환경변수설정 환경변수 PATH 의미 시스템경로를설정한다. 다음을포함하고있어야한다. /home/jeus/bin 제 5 장 UNIX 에서설치및제거 47

환경변수 의미 /home/jeus/webserver/bin /home/jeus/lib/system JEUS_HOME JEUS 설치디렉터리를설정한다. 예 ) /home/jeus JEUS_BASEPORT JEUS_LIBPATH JEUS 가사용할네트워크포트가운데가장기본이되는포트를설정한다.( 기 본값 : 9736) JEUS 라이브러리파일경로를설정한다. 예 ) /home/jeus/lib/system VM_TYPE Java HotSpot JVM 사용유무를설정한다. 예 ) hotspot or old USERNAME Administrator 계정의 ID 를설정한다. 매니저와컨테이너를한번에부트하는 "One Step 부트 " 의경우에설정된다. PASSWORD Administrator 패스워드를설정한다. 매니저와컨테이너를한번에부트하는 "One Step 부트 " 의경우에설정된다. JAVA_HOME Java 2 설치디렉터리경로를설정한다. 예 ) /usr/jdk1.5 JAVA_ARGS JAVA_VENDOR JDK 파라미터를설정한다. JDK 벤더를설정한다. 예 ) Sun or IBM or HP SESSION_MEM SESSION_VERSION JEUS 세션서버를위한 JDK 표준메모리인자를설정한다. JEUS 세션서버를위한네트워크프로토콜을설정한다. 예 ) Socket or RMI 환경변수를설정할때, C셸이라면 JEUS_HOME 변수를설정하기위해서는 setenv 을사용한다. setenv JEUS_HOME /home/jeus 다음은시스템 PATH 설정하는예이다. setenv PATH ${PATH}:/home/jeus/bin: /home/jeus/lib/system:/home/jeus/webserver/bin 참고 Java 의실행디렉터리 (/usr/jdk1.5/bin) 는 JEUS 에서사용하게되므로환경변수에추가할때는앞쪽 에추가하도록한다. 48 JEUS 설치및시작하기

위의사항을검증한후에, 로그오프하고그다음에환경을적용하기위하여다시로그인한다. 5.4.3. 기동확인 JEUS 설치가정상적으로완료되는지확인하기위하여다음단계를진행해서 JEUS를기동한다. 1. 콘솔프롬프트에 jeus를입력하면다음메시지를출력한다. 다음예제는 Base Port가 9736로설정되어있다. *********************************************************** - JEUS Home : /home/jeus - JEUS Base Port : 9736 - Java Vendor : Sun - Added Java Option : *********************************************************** /usr/jdk1.5/bin/java -server - Xbootclasspath/p:/home/jeus/lib/system/extension.jar:/home/jeus/jeus/lib/system /classloader.jar -classpath /home/jeus/lib/system/bootstrap.jar -Djeus.jvm.vers ion=hotspot -Djeus.home=/home/jeus -Djava.naming.factory.initial=jeus.jndi.JNSC ontextfactory -Djava.naming.factory.url.pkgs=jeus.jndi.jns.url -Djeus.session.v ersion=socket -Djeus.baseport=9736 -Djeus.tm.checkReg=true -Djava.util.logging. config.file=/home/jeus/bin/logging.properties jeus.server.jeusbootstrapper [2005.02.02 17:11:34][0] [tmax-10] [MGR-0411] virtual host name of this manager : tmax [2005.02.02 17:11:38][1] [tmax-10] [EJB-6452] class ftp is exported [2005.02.02 17:11:42][0] [tmax-10] [MGR-0241] JeusServer is Ready 위출력은 JEUS Manager가정상적인로딩과 JEUS가대기상태임을나타낸다. 참고 1. Invalid License 메시지가나타나면라이선스가잘못된것이다. TmaxSoft로부터라이선스를취득하여 $JEUS_HOME/license 디렉터리에복사한다. 2. 모든단계들의진행과환경변수가정확히설정되어있는지확인한다. 특히, '/jeus/bin' 디렉터리가시스템경로 ( jeus 스크립트가실행될수있도록 ) 에있는것을확인한다. 2. 다른콘솔창에서다음의명령어를실행한다. <node name> 은호스트머신이름이다. jeusadmin <node name> 3. jeusadmin 툴에로그인을한후에, boot와 down 명령으로 JEUS 서버를제어할수있다. JEUS 서버를다운시키려면 down을입력한후 <ENTER> 키를누르고, 다음행에서 jeusexit를입력한후 <ENTER> 키를누른다. down jeusexit 제 5 장 UNIX 에서설치및제거 49

4. jeusadmin 을종료하기위해서 exit 명령어를사용한다. exit 5.5. GUI 모드에서제거 다음은 GUI 모드에서 JEUS를삭제하는과정에대한설명이다. GUI 모드로삭제가가능하지않다면 5.6. 콘솔모드에서제거 를참고한다. UNIX에서 GUI 설치툴을이용하기위해서는 Java 기반의 GUI 환경을지원하는콘솔또는터미널이설치되어있어야한다. 1. jeus 스크립트와 WebAdmin 등의모든 JEUS 프로그램을종료한다. 2. JEUS가설치된경로에서 $JEUS_HOME/UninstallerData/Uninstall -i GUI 를실행한다. [jeususer@matrix UninstallerData]$./Uninstall -i GUI 3. 다음과같은설치제거초기화면이나타난다. [ 그림 5.13] 설치제거초기화면 4. 제거화면의메시지를읽고 JEUS 제거준비가되었다면 [Uninstall] 버튼을클릭한다. JEUS 를제거하 지않고프로그램을종료하려면 [Cancel] 버튼을클릭한다. 참고 제거프로그램으로제거하여도 JEUS 설치후에생성된파일들은제거되지않는다. 이파일들은수 동으로제거해야한다. 50 JEUS 설치및시작하기

5. JEUS 제거가진행되는것을확인한다. [ 그림 5.14] JEUS 제거진행화면 6. JEUS 제거종료를확인하고 [Done] 버튼을클릭하여 JEUS 제거를완료한다. [ 그림 5.15] JEUS 제거종료 제 5 장 UNIX 에서설치및제거 51

5.6. 콘솔모드에서제거 다음은콘솔모드에서 JEUS를삭제하는과정에대한설명이다. 1. JEUS가설치된경로에서 $JEUS_HOME/UninstallerData/Uninstall을실행하여 JEUS Core와 JEUS 설치디렉터리를삭제한다. [jeususer@matrix UninstallerData]$./Uninstall 2. 삭제과정이진행된다. 제거가완료되면제거가완료되었다는메시지가표시된다. Preparing CONSOLE Mode Installation... =========================================================== (created with InstallAnywhere by Zero G) ----------------------------------------------------------- =========================================================== Uninstall JEUS6 ------------------ About to uninstall... JEUS6 This will remove features installed by InstallAnywhere. It will not remove files and folders created after the installation. PRESS <ENTER> TO CONTINUE: =========================================================== Uninstalling... ---------------...* * ************************************************** *************************************************...* * ************************************************** 52 JEUS 설치및시작하기

*************************************************...* * ************************************************** ************************************************* =========================================================== Uninstall Complete ------------------ All items were successfully uninstalled. 5.7. 제거확인 JEUS 가설치된경로에디렉터리와설치된파일이삭제된것을확인한다. JEUS 가설치된후생성된파일 은삭제되지않으므로해당파일은수동으로삭제해야한다. 제 5 장 UNIX 에서설치및제거 53

제 6 장 Windows 에서설치및제거 본장에서는 Windows 에서 JEUS 를설치하고제거하는과정에대해서설명한다. 6.1. 개요 Windows 환경에서 JEUS 설치는 GUI 설치툴을통하여이루어진다. Windows에서 JEUS 설치는다음의과정으로진행된다. 1. JDK 5 설치 2. GUI 모드에서 JEUS 설치 ( 파일복사 ) 3. 설치확인 - 기동확인 - 환경변수설정과검증 4. 선택적으로 JEUS의 Windows 서비스등록과해제 JEUS 제거도 GUI를통해이루어진다. 내장 WebtoB의 Windows 플랫폼의컴파일환경이 VC90으로변경되었다. 이에따라서 JEUS 6 Fix#7이전의버전에서 JEUS 6 Fix#8이후의버전으로 Upgrade 하거나 JEUS 6 Fix#8 이후의버전을새로설치할때에내장 WebtoB의정상적인동작을위해서는 C 런타임및표준 C++ 라이브러리 (msvcm90.dll, msvcp90.dll, msvcr90.dll)" 가필요하게되었다. 다음의사이트를통해 Microsoft Visual C++ 2008 Redistributable Package 파일을다운로드받을수있다. Microsoft Visual C++ 2008 Redistributable Package (x86) http://www.microsoft.com/downloads/ko-kr/details.aspx?familyid=9b2da534-3e03-4391-8a4d- 074B9F2BC1BF Microsoft Visual C++ 2008 Redistributable Package (x64) http://www.microsoft.com/downloads/ko-kr/details.aspx?displaylang=ko&familyid=bd2a6171-e2d6-4230-b809-9a8d7548c1b6 참고 내장 WebtoB 를사용하지않거나 Microsoft.NET Framework 3.5 SP1 이설치되어있으면 Redis tributable Package 를설치하지않아도된다. 제 6 장 Windows 에서설치및제거 55

6.2. 설치 본절은설치툴을사용하여 Microsoft Windows 환경 (Windows 2000/2003/XP,Vista) 에서 JEUS 를설치하 는방법을설명한다. 참고 UNIX 콘솔모드환경과는달리, Windows 환경에서 JEUS 설치할때커맨드라인툴은제공하지않 는다. JDK 5 설치한후, Windows에 JEUS를설치하려면다음과같은단계로진행한다. 1. JEUS 설치프로그램인 jeus60-win.exe가있는위치로이동한다. jeus60-win.exe 파일을더블클릭해서실행한다. 2. 설치툴의초기화면이나타난다. 진행이 100% 가될때까지기다린다. [ 그림 6.1] 설치툴초기화면 56 JEUS 설치및시작하기

3. 설치소개화면이표시된다. [ 그림 6.2] 소개화면 4. 소개내용을읽고 [Next] 버튼을클릭한다. 설치를종료하려면 [Cancel] 버튼을클릭한다. 5. JEUS 라이선스준수화면이나타난다. 라이선스준수내용을읽고 I accept the terms of 를선택한후 [Next] 버튼을클릭한다. [ 그림 6.3] 라이선스준수화면 6. 설치디렉터리선택화면이나타난다. JEUS 바이너리와기타다른파일들은설정한경로의디렉터리의하위에설치된다. [Choose ] 를클릭하면다른설치폴더를선택할수있고 [Restore Default Folder] 를클릭하면초기기본폴더로복귀한다. 가능하면기본폴더를그대로사용하길권장한다. ( 예 : C:\TmaxSoft\JEUS6.0 ) 제 6 장 Windows 에서설치및제거 57

설치할디렉터리를선택하고 [Next] 버튼을클릭한다. [ 그림 6.4] 설치디렉터리선택화면 7. Install Set 선택화면이나타난다. 설치옵션에서 Full Install, Typical, Advanced Mode 중하나를선택하고 [Next] 을클릭한다 ( 기본 Full Install 권장 ). Full Install : JEUS 예제인 Samples와 JEUS 관련문서파일이포함된 JEUS Full 버전을설치한다. Typical : JEUS 예제인 Samples가제외된 JEUS 관련문서파일과 JEUS Core 파일을설치한다. Advanced Mode : 수동설치인 Manual Configuration Option을지원한다. 사용자가 autodeploy 경로와 JEUS_BASEPORT를지정할수있다. [ 그림 6.5] Install Set 선택화면 58 JEUS 설치및시작하기

8. JDK 설치디렉터리선택화면이나타난다. 설치된 Java 2 JDK 전체경로를입력한다. ( 예 : C:\ja va\1.5.0.7") 설치프로그램은설치된 JDK 경로를제안하지만경우에따라변경할수있다. [Choose ] 를클릭하면다른설치폴더를선택할수있고 [Restore Default Folder] 를클릭하면초기기본폴더로복귀한다. [ 그림 6.6] JDK 설치디렉터리선택화면 참고 JEUS 설치후에 Java 2 JDK를설치하려면 JDK 설치경로를포함하는 JAVA_HOME 환경변수를수동으로설정해야한다. 그러므로 JDK를설치후 JEUS 설치를권장한다. 예를들면 Windows 명령프롬프트에 set JAVA_HOME=C:\java\1.5.0.7 명령을실행하여설정한다. 9. Windows NT 서비스등록선택팝업화면이나타난다. 서비스등록은 Windows용설치파일에만나타난다. [ 그림 6.7] Windows 서비스등록여부선택화면 제 6 장 Windows 에서설치및제거 59

10. 패스워드입력화면이나타난다. 화면에서 JEUS 관리자의패스워드를입력한다. 패스워드는 adminis trator 관리자계정으로할당된다. [ 그림 6.8] 패스워드입력화면 11. 지금단계까지설정한설치정보를확인한후 [Install] 버튼을클릭하여설치를시작한다. [ 그림 6.9] 설치정보확인 60 JEUS 설치및시작하기

12. 설치가진행되는것을확인한다 [ 그림 6.10] 설치진행확인 13. 설치종료를확인한다. [ 그림 6.11] 설치종료확인 제 6 장 Windows 에서설치및제거 61

6.3. 설치확인 JEUS를설치한후사용에필요한환경변수를설정해야한다. 환경변수를설정하고 JEUS를기동해서설치가정상적으로이루어졌는지확인한다. 환경변수를설정하기전에 JEUS가설치된경로에디텍터리구조를확인한다. 6.3.1. 디렉터리구조 다음은 JEUS 를설치했을때의전체디렉터리구조이다. [ 그림 6.12] JEUS 설치후디렉터리구조 JEUS_HOME\ lib\ 0I bin\ Applications launch scripts 0I system\.dll,.so native library config\ J System JARs logs\ <nodename>\ X X webserver\ TM\ license\ samples\ workspace\ JEUSMain.xml <node name>_<engine type> _<engine name>\ X security JeusSystem Engine configuration file (XML) security DOMAIN_NAME Security configuration file (XML) J jeus.jar datasource\ webhome\ J J JDBC Drivers schemas\ X JEUS XML Schema application\ endorsed\ shared\ client\ admin_home\ app_home\ autodeploy\ system_app\ uddi\ <node_name>_ <container_name>\ Application archive files Legend: 0I: binary or executable file X: XML document J: JAR file 62 JEUS 설치및시작하기

다음은디렉터리와파일의설명이다. JEUS_HOME JEUS의최상위디렉터리로, 실제디렉터리이름과위치는설치할때결정된다. 예 ) c:\jeus bin jeus, jeusadmin과같은실행파일이나스크립트가모여있다. config 서버설정이저장되는서브디렉터리를가지고있다. config\<nodename> 이름이 <nodename> 인설정파일이위치한다. <nodename> 은 JEUS 가설치된서버의이름 ( 일반적으로 hostname) 이다. 만약현재 JEUS가백업노드로작동되도록설정되었다면백업하는노드의 <nodename> 디렉터리가존재해야한다. JEUS Manager의설정파일은 JEUSMain.xml이며, 이디렉터리에존재한다. <nodename> 이 jeus 일때 "c:\jeus\config\jeus 가된다. config\<nodename>\<nodename>_<enginetype>_<enginename> 엔진별로설정파일을가지고있다. <enginetype> 은 ejb, jms, servlet 셋중하나이며, <enginename> 은 JEUSMain.xml에서설정한이름이다. c:\jeus\config\jeus\jeus_servlet_engine1 일때, <nodename> 은 'jeus', <enginetype> 은 'servlet' 이며, 사용자가지정하는 <enginename> 은 'Engine1' 이된다. config\<nodename>\security 해당노드에서사용하는 security configuration이들어가있다. 자세한내용은 "JEUS Security 안내서 " 를참조한다. webserver JEUS가설치될때 JEUS 웹서버가설치되는디렉터리이다. 자세한내용은 "JEUS Web Service 안내서 " 를참조한다. license JEUS 라이선스파일을가지고있다. 라이선스파일은 JEUS가실행되기위해서반드시필요한파일이다. logs 시스템로그가기록된다. 하위디렉터리 logs\tm logs\jeussystem 설명 트랜잭션매니저의로그정보를기록한다. node, engine container, engine 들이생성하는로그를기록한다. 제 6 장 Windows 에서설치및제거 63

samples JEUS의예제들이있다. lib JEUS가기동될때, 이디렉터리의모든서브디렉터리를스캐닝해서 ".jar" 파일이나 ".zip" 파일을클래스패스로추가한다. 서브디렉터리스캐닝순서는 system application datasource 순이다. 하위디렉터리 lib\application lib\system lib\datasource lib\schemas lib\endorsed lib\shared lib\client 설명사용자애플리케이션에서사용하는클래스파일이위치한다. 이디렉터리의모든 '.zip' 파일이나 '.jar' 파일, 디렉터리형태의일반클래스들은클래스패스로추가된다. 클래스파일은 '.jar' 나 '.zip' 파일보다먼저읽힌다. JEUS가사용하는라이브러리가있는디렉터리이므로사용자는이디렉터리를수정해서는안된다. '.so' 나 '.dll' 같은 Native Driver( 예를들면, Connector Resource Adapter에서필요한드라이버등 ) 는이디렉터리에위치해야한다. 또여기에는 JEUS의클래스인 jeus.jar가있다. JDBC 드라이버의 '.jar' 파일과설정파일이위치한다. XML 설정파일을위한 XML Schema 파일이위치한다. Java 런타임이기본 JDK 클래스들에우선하여읽어들일클래스들이 JAR 파일형태로위치한다. 애플리케이션간에공유되는라이브러리들이위치한다. Standalone과애플릿등의클라이언트가사용하는라이브러리가위치한다. webhome JavaEE 애플리케이션 ( 웹애플리케이션, EJB) 이 Deploy 되는홈디렉터리이다. 하위디렉터리 webhome\admin_home webhome\app_home webhome\autodeploy webhome\<node_name>_<con tainer_name> 설명 WebAdmin에서사용되는서블릿 /JSP 파일이있다. 애플리케이션의기본경로이다. AutoDeploy할애플리케이션의기본경로이다. <node_name>_<container_name> 에해당하는엔진컨테이너에서사용되는애플리케이션이존재한다. workspace JEUS 가동작하면서필요한작업을하는임시디렉터리로이디렉터리를수정해서는안된다. 6.3.2. 환경설정 JEUS 를사용하기위해서는환경변수가필요하다. 설치과정에서일부환경변수를설정하지만경우에따 라서는수정해서사용한다. 64 JEUS 설치및시작하기

환경변수 PATH는 Windows 명령프롬프트에 set 명령을사용함으로써정확하게설정되었는지확인할수있다. 또한, [ 시작 ] > [ 설정 ] > [ 제어판 ] > [ 시스템 ] > [ 고급 ] > [ 환경변수 ] 에서확인가능하다. (Windows 2000/Windows XP/Windows 2003/Windows Vista 경우 ) 나머지환경변수는 %JEUS_HOME%\bin\jeus.properties.cmd 파일에설정된다. 다음은주요환경변수에대한설명이다. [ 표 6.1] JEUS 설치시환경변수설정 환경변수 PATH JEUS_HOME 의미시스템경로를설정한다. 다음을포함하고있어야한다. C:\TmaxSoft\JEUS6.0\bin C:\TmaxSoft\JEUS6.0\webserver\bin C:\TmaxSoft\JEUS6.0\lib\system JEUS 설치디렉터리를설정한다. 예 ) C:\TmaxSoft\JEUS6.0 설정용례 JEUS_BASEPORT DEPLOY_HOME JEUS 가사용할네트워크포트가운데가장기본이되는포 9736 트를설정한다.( 기본값 : 9736) Deploy 가자동으로수행되는디렉터리를설정한다. 예 ) C:\TmaxSoft\JEUS6.0\webhome\autodeploy JEUS_LIBPATH JEUS 라이브러리파일경로를설정한다. 예 ) C:\TmaxSoft\JEUS6.0\lib\system VM_TYPE Java HotSpot JVM 사용유무를설정한다. hotspot or old로설정이가능하며 hotspot으로설정하면 - server 옵션으로동작하고 old로설정하면 vm 옵션이들어가지않는다. vm option이동작하지않는장비는 old로설정해야한다. USERNAME Administrator 계정의 ID 를설정한다. 매니저와컨테이너를한번에부트하는 "One Step 부트 " 의 경우에설정된다. PASSWORD Administrator 패스워드를설정한다. JAVA_HOME JAVA_ARGS 매니저와컨테이너를한번에부트하는 "One Step 부트 " 의경우에설정된다. Java 2 설치디렉터리경로를설정한다. 예 ) C:\java\1.5.0.7 JDK 파라미터를설정한다. C:\java\1.5.0.7 제 6 장 Windows 에서설치및제거 65

환경변수 JAVA_VENDOR SESSION_MEM SESSION_VERSION 의미 JDK 벤더를설정한다. 예 ) Sun or IBM or HP JEUS 세션서버를위한 JDK 표준메모리인자를설정한다. JEUS 세션서버를위한네트워크프로토콜을설정한다. 예 ) Socket or RMI 설정용례 Sun, IBM, HP Socket, RMI 6.3.3. 기동확인 JEUS 설치가정상적으로완료되는지확인하기위하여다음단계를진행하여 JEUS를기동한다. 1. 명령프롬프트를실행하고 jeus 를입력하거나 [ 시작 ] >[ 프로그램 ] > [TmaxSoft] > [JEUS] > [jeus 스크립트 ] 를실행한다. 다음메시지가명령프롬프트창에나타난다. C:\Documents and Settings\Administrator>jeus ************************************************************** - JEUS Home : C:\TmaxSoft\JEUS6.0 - JEUS Base Port : 9736 - Added Java Option : - Java Vendor : Sun ************************************************************** "C:\java\1.5.0.7\bin\java" -server -Xmx512m -Xbootclasspath/p:"C:\TmaxSoft\JEUS6.0\lib\system\extension.jar";"C:\TmaxSoft\JEUS6.0\lib\system\classloader.jar" -c lasspath "C:\TmaxSoft\JEUS6.0\lib\system\bootstrap.jar" -Djava.endorsed.dirs="C: \TmaxSoft\JEUS6.0\lib\endorsed" -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rm i.dgc.server.gcinterval=3600000 -Djeus.jvm.version=hotspot -Djeus.home="C:\TmaxS oft\jeus6.0" -Djava.naming.factory.initial=jeus.jndi.JNSContextFactory -Djava.na ming.factory.url.pkgs=jeus.jndi.jns.url -Djava.library.path="C:\TmaxSoft\JEUS6.0 \lib\system" -Djeus.baseport=9736 -Djava.util.logging.config.file="C:\TmaxSoft\J EUS6.0\bin\logging.properties" -Djeus.properties.replicate=jeus,java.util.loggin g,sun.rmi.dgc -Djeus.tool.webadmin.locale.language=ko -Djava.net.preferIPv4Stack =true -Djeus.management.simple.log=true jeus.server.jeusbootstrapper [2007.05.19 13:33:39][1][] [client-10] initialize virtual DNS table, enable : tr ue, table : {shimbh:9736=johan} [2007.05.19 13:33:40][0][b037] [johan-10] [MGR-0411] virtual host name of this m anager : johan [Network Configuration] default local hostname : null, default local ip : null, local inetaddress : shimbh/192.168.1.210, local host address : 192.168.1.210, full host name : shimbh, local hostname : shimbh [RMI Configuration] Default RMI export port for this container : 9743 [SystemProperty] The system property is set but has no corresponding jeus proper ty, maybe typographical error : jeus.management.simple.log 66 JEUS 설치및시작하기

[2007.05.19 13:33:48][2][b037] [johan-10] jeus.server.uselistenportpercontainer= true [2007.05.19 13:33:48][2][b037] [johan-10] The id of this container johan_contain er1 is 63 [2007.05.19 13:33:48][2][b037] [johan-10] The base port of this container johan_ container1 is 10381 [2007.05.19 13:33:48][3][b037] [johan-10] [MGR-0239] JEUSMain.xml is loaded [2007.05.19 13:33:50:390] webt.properties file is not found [2007.05.19 13:33:57][0][b037] [johan-10] [MGR-0241] JeusServer is Ready 출력메시지에 "JeusServer is Ready" 는 JEUS가대기상태에있는것을나타낸다. 참고 1. Invalid License 메시지가출력되면라이선스가잘못된것이다. TmaxSoft로부터라이선스를취득하여 %JEUS_HOME%\license 디렉터리에복사한다. 2. 모든설치과정과필요한환경변수들이제대로설정되어있는지확인한다. 특히, C:\Tmax Soft\JEUS6.0\bin 디렉터리가시스템경로 (jeus.cmd 스크립트가실행 ) 에포함유무를확인한다. 2. 다른터미널창에다음명령어를입력한다. jeusadmin <hostname> 다음은 hostname이 'johan' 인경우에대한예이다. C:\TmaxSoft\JEUS6.0\bin>jeusadmin johan Login name>administrator Password> JEUS 6.0 Jeus Manager Controller johan> JEUS 관리자의사용자명과패스워드를입력한다. 일반적으로관리자의계정은 administrator이고패스워드는 JEUS를설치할때입력한값이다. 3. 잠시후프롬프트가다시뜨면 JEUS가제대로기동되었고, 다시명령어를받을수있는상태가되었다는것을나타낸다. 4. 웹브라우저를열어서주소창에다음의주소를입력한다. http://localhost:9744/webadmin 만약위예제의 JEUSMain.xml에서 WebAdmin을사용할수있게해놓았다면, WebAdmin이라는웹기반의관리툴이접속된다. 제 6 장 Windows 에서설치및제거 67

5. JEUS 관리자의계정과패스워드를입력하고 [Login] 버튼을클릭한다. 일반적으로관리자의계정은 administrator 이고패스워드는 JEUS 를설치할때입력한값이다. [ 그림 6.13] WebAdmin 로그인화면 6. WebAdmin 을통해서 JEUS 를관리할수있다. [ 그림 6.14] WebAdmin 노드관리페이지 68 JEUS 설치및시작하기

7. JEUS 서비스나엔진을중지하려면 JEUS 노드트리에서노드명을선택 (johan) 한후, 웹페이지메인뷰의 [ 제어 ] 탭을선택한다. 그리고 JEUS 매니저-제어화면에서 [ 다운 ] 탭을선택한다. 다운가능한노드를체크한후 [ 확인 ] 버튼을클릭하여다운작업을진행한다. [ 그림 6.15] 노드다운페이지 8. 종료가능한노드가 [ 종료 ] 탭에나타난다. 종료할노드를선택한후 [ 확인 ] 버튼을클릭하여종료작업 을완료한다. [ 그림 6.16] 노드종료페이지 9. 다음명령어를입력해서 jeusadmin 을종료한다. exit 6.4. 서비스등록과제거 JEUS는 Windows 운영체제에서서비스로동작할수있도록설계되었다. 이기능을사용하려면 JEUS 폴더에있는서비스를실행한다. 다음은 Windows NT 서비스로동작하도록 JEUS를등록, 제거하는과정에대한설명이다. 제 6 장 Windows 에서설치및제거 69

6.4.1. 서비스등록 다음은 Windows 서비스를등록하는과정에대한설명이다. 1. svcinstall.exe가위치한 %JEUS_HOME% 아래 'bin' 디렉터리로이동한다. ( 기본 : C:\TmaxSoft\JEUS6.0\bin) 2. svcinstall.exe를실행해서 JEUS를 Windows에서비스로등록한다. %JEUS_HOME%\bin 아래 jeus.ini 파일은 JEUS를 Windows NT 서비스로실행할때사용되는설정파일이다. 뿐만아니라 jeus.ini 파일명은서비스명으로등록된다 (jeus라는이름으로등록 ). 이파일에는 JEUS_HOME, JEUS_BASEPORT, JAVA_HOME 등의설정정보가저장된다. JEUS를시작할때 Hotspot JVM을사용하는경우 jeus.cmd 스크립트에 -hotspot 옵션을넣는다. ID와패스워드는 administrator 와 password 이다. svcinstall.exe <jeus.ini> <id> <password> -hotspot JEUS 가시작할때 Hotspot JVM 을사용하지않는경우 JEUS 를실행할때 -hotspot 옵션을넣지않는다. ID 와패스워드는 administrator 와 password 이다. svcinstall.exe <jeus.ini> <id> <password> 다음은 svcinstall 명령어사용에대한예이다. C:\TmaxSoft\JEUS6.0\bin>svcinstall jeus.ini administrator 1111111 -hotspot JEUS Windows service installer Ver. 3.1.1 Copyright (c) 2006, TmaxSoft Co., Ltd. JEUS Service[jeusservice-jeus] installed 6.4.2. 서비스등록확인 서비스등록에대해서는다음과같이 2가지방법으로확인이가능하다. GUI 모드에서등록확인 Windows에서 [ 시작 ] > [ 설정 ] > [ 제어판 ] > [ 관리도구 ] > [ 서비스 ] 를클릭하면서비스화면에서 JEUS 서비스가존재하는지확인할수있다. 서비스명 ( 서비스등록시사용한파일명 ) 을더블클릭하면 [ 시작 ], [ 중지 ], [ 일시중지 ], [ 계속 ] 버튼이나타난다. [ 시작 ] 버튼을클릭하면서비스가시작된다. 이것은설치파일에등록된엔진과기타컴포넌트가로딩된다는것을나타낸다. [ 중지 ] 버튼을클릭하면서비스가중단된다. 명령프롬프트에서등록확인서비스를확인하려면명령프롬프트에서다음과같이입력한다. svcremove -list 70 JEUS 설치및시작하기

다음은서비스를확인하는예제이다. C:\TmaxSoft\JEUS6.0\bin>svcremove -list JEUS Windows service remover Ver. 3.1.1 Copyright (c) 2006, TmaxSoft Co., Ltd. ** JEUS Services ** ---------------------------- - jeus Total count: 1 결과메시지에서 Windows 서비스가총 1 개등록되어있음을확인할수있다. 6.4.3. 서비스제거 서비스를중지하려면 Windows에서 [ 시작 ] >[ 설정 ] > [ 제어판 ] > [ 관리도구 ] > [ 서비스 ] 를선택하고 [ 중지 ] 버튼을클릭하여서비스를중단한다. 서비스를영구히제거하려면 %JEUS_HOME%\bin 디렉터리의 svcremove.exe를실행한다. 인자로서비스명을사용한다. C:\TmaxSoft\JEUS6.0\bin> svcremove.exe jeus> JEUS Windows service remover Ver. 3.0 Copyright (c) 2006, TmaxSoft Co., Ltd. Removing windows service 'jeus'... Successfully done. 6.5. 제거 다음은 JEUS를제거하는과정이다. 1. jeus 스크립트와 WebAdmin 등의모든 JEUS 프로그램들을종료한다. 2. JEUS 홈디렉터리의 'UninstallerData\JEUS6.0' 디렉터리에서 Uninstall.exe를실행하거나 ( 예 : C:\TmaxSoft\JEUS6.0\UninstallerData\JEUS6.0 ), [ 시작 ] > [ 프로그램 ] > [TmaxSoft] > [JEUS6.0] > [Uninstall] 을클릭한다. 제 6 장 Windows 에서설치및제거 71

3. 다음과같이설치제거초기화면이나타난다. [ 그림 6.17] 설치제거초기화면 4. 제거화면의메시지를읽고 JEUS 제거준비가되었다면 [Uninstall] 버튼을클릭한다. JEUS 를제거하 지않고프로그램을종료하려면 [Cancel] 버튼을클릭한다. 참고제거프로그램으로제거하여도 JEUS 설치후에생성된파일들은제거되지않는다. 이파일들은수동으로제거해야한다. 5. Windows NT서비스가존재한다면수동으로제거를하고, 다시제거과정을수행한다. [ 그림 6.18] Windows 서비스제거 72 JEUS 설치및시작하기

6. Uninstall JEUS 화면에서 JEUS 제거의진행표시를볼수있다. [ 그림 6.19] 설치제거진행화면 7. 설치제거완료화면이나타날때까지기다린다. JEUS 설치후에생성된파일들은 Uninstaller로제거되지않기때문에삭제할수없는파일의목록은다음과같이출력된다. 이파일들은그대로두거나, 수작업으로삭제한다. [ 그림 6.20] 설치제거완료화면 8. [Done] 버튼을클릭하여 JEUS Uninstaller 를종료한다. 9. 제거된사항의적용을위하여컴퓨터를재기동하거나또는로그오프후다시로그인한다. 제 6 장 Windows 에서설치및제거 73

6.6. 제거확인 정상적으로제거되었는지다음방법으로확인한다. 파일과디렉터리 %JEUS_HOME% 디렉터리의 ( 기본 : C:\TmaxSoft\JEUS6.0) 모든하위파일과하위폴더가제거되었는지확인한다. Shortcuts 설치하는동안에생성된 바로가기 ( 프로그램메뉴의항목과같은 ) 가제거되었는지확인한다. 환경변수다음환경변수들이제거되었는지를확인하고, 만약필요하다면 [ 시작 ] > [ 설정 ] > [ 제어판 ] > [ 시스템 ] > [ 고급 ] > [ 환경변수 ] 에서수동으로제거한다 (Windows 2000/ Windows 2003/ Windows XP/ Windows Vista). Windows 명령프롬프트에 set 명령으로변수들을확인할수있다. 만약 JEUS 제거후에컴퓨터를재부팅했다면갱신되어있어야한다. PATH 시스템 path에서 JEUS 경로는사라진다 ( 예 : C:\TmaxSoft\JEUS6.0 ). 74 JEUS 설치및시작하기

Part III. JEUS 시작하기 Part III. JEUS 시작하기 75

제 7 장개요 본부분은 TmaxSoft의 JEUS 6 Web Application Server를사용하여프로그램을처음작성하는사용자를위한 Part로다음의내용으로구성된다. 시스템설정 JEUS의기본적인환경설정방법과운영방법에대해설명한다. WebTier 사용웹애플리케이션의패키징방법을설명하고예제서블릿 /JSP/JSTL/JSF 페이지를실행한다. EJB 사용 EJB 모듈의패키징및배치방법, Stateless Session Bean과 Java Persistence API의이용방법에대해설명한다. 웹서비스사용웹서비스의패키징및배치방법, 서블릿기반 End-point와 EJB 기반 End-point의이용방법에대해설명한다. 각부분은순서에따라진행하도록되어있으므로 JEUS Web Application Server에대하여완벽히이해하려면이문서에담겨있는내용을실제로실행해보는것을권장한다. 참고좀더상세한기술적인내용의문서를보려면 "JEUS Server 안내서 ", "JEUS EJB 안내서 ", "JEUS Web Container 안내서 " 등을참조한다. WebAdmin 툴을좀더효과적으로사용하길원한다면 "JEUS WebAdmin 안내서 " 를읽어보길권한다. 제 7 장개요 77

제 8 장시스템설정 본장에서는 JEUS 의환경설정및기동방법에대한기본적인내용을설명한다. 8.1. WebAdmin 사용 WebAdmin을사용해서시스템을구성하는방법은다음의순서로설명한다. WebAdmin을이용 - 기본환경설정 - 시스템컴포넌트의추가와설정방법 - 시스템기동방법 8.1.1. 기본환경구성 JEUS WebAdmin은웹을통해 JEUS의모든요소를관리하기위한서비스를제공한다. 사용자는쉽게 JEUS에접근하여시스템설정과모니터링및애플리케이션을관리할수있다. 다음순서에따라 WebAdmin을실행한다. 1. 가장먼저 JEUS Manager를실행한다. 방법은커맨드창에서 jeus 라는실행파일을실행한다. jeus 스크립트는 JEUS_HOME\bin\ 디렉터리에있으며시스템 PATH에설정되어있어야한다. 참고 WebAdmin 을사용하기위해서는 JEUSMain.xml 에 <enable-webadmin> 태그의값이 true 로설정되 어있어야한다. 예 ) C:\Documents and Settings\Administrator>jeus ************************************************************** - JEUS Home : C:\TmaxSoft\JEUS6.0 - JEUS Base Port : 9736 - Added Java Option : - Java Vendor : Sun ************************************************************** "C:\java\1.5.0.7\bin\java" -server -Xmx512m -Xbootclasspath/p:"C:\TmaxSoft\JEUS6.0\lib\system\extension.jar";"C:\TmaxSoft\JEUS6.0\lib\system\classloader.jar" -c lasspath "C:\TmaxSoft\JEUS6.0\lib\system\bootstrap.jar" -Djava.endorsed.dirs="C: 제 8 장시스템설정 79

\TmaxSoft\JEUS6.0\lib\endorsed" -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rm i.dgc.server.gcinterval=3600000 -Djeus.jvm.version=hotspot -Djeus.home="C:\TmaxS oft\jeus6.0" -Djava.naming.factory.initial=jeus.jndi.JNSContextFactory -Djava.na ming.factory.url.pkgs=jeus.jndi.jns.url -Djava.library.path="C:\TmaxSoft\JEUS6.0 \lib\system" -Djeus.baseport=9736 -Djava.util.logging.config.file="C:\TmaxSoft\J EUS6.0\bin\logging.properties" -Djeus.properties.replicate=jeus,java.util.loggin g,sun.rmi.dgc -Djeus.tool.webadmin.locale.language=ko -Djava.net.preferIPv4Stack =true -Djeus.management.simple.log=true jeus.server.jeusbootstrapper [2007.05.19 13:33:39][1][] [client-10] initialize virtual DNS table, enable : tr ue, table : {shimbh:9736=johan} [2007.05.19 13:33:40][0][b037] [johan-10] [MGR-0411] virtual host name of this m anager : johan [Network Configuration] default local hostname : null, default local ip : null, local inetaddress : shimbh/192.168.1.210, local host address : 192.168.1.210, full host name : shimbh, local hostname : shimbh [RMI Configuration] Default RMI export port for this container : 9743 [SystemProperty] The system property is set but has no corresponding jeus proper ty, maybe typographical error : jeus.management.simple.log [2007.05.19 13:33:48][2][b037] [johan-10] jeus.server.uselistenportpercontainer= true [2007.05.19 13:33:48][2][b037] [johan-10] The id of this container johan_contain er1 is 63 [2007.05.19 13:33:48][2][b037] [johan-10] The base port of this container johan_ container1 is 10381 [2007.05.19 13:33:48][3][b037] [johan-10] [MGR-0239] JEUSMain.xml is loaded [2007.05.19 13:33:50:390] webt.properties file is not found [2007.05.19 13:33:57][0][b037] [johan-10] [MGR-0241] JeusServer is Ready 2. 웹브라우저를사용해서 WebAdmin 에접속한다. http://localhost:9744/webadmin [ 그림 8.1] 로그인화면 참고 JEUS 의 Base Port 는 9736 이며, WebAdmin 은 Base Port + 8 을사용한다. 80 JEUS 설치및시작하기

3. JEUS 를설치할때설정해주었던 JEUS 에대한로그인 ID 와패스워드를입력한다. 성공적으로인증되 었다면다음과같은 WebAdmin 초기화면이나타난다. [ 그림 8.2] 초기화면 제 8 장시스템설정 81

JEUS 노드트리에 JEUS를관리하기위한요소들이노드명을루트노드로하여트리형태로구성되어있다. 다음그림에서보는것과같이 JEUS 노드트리는크게엔진컨테이너, JEUS 매니저리소스, JEUS 매니저서비스, 어플리케이션모듈디플로이, JEUS 모니터링으로구성되어있다. [ 그림 8.3] JEUS 노드트리 엔진과관련된설정변경은각엔진에해당되는설정파일에반영되며, 루트노드 ( 예 : johan) 를선택했을때나오는설정항목과엔진컨테이너설정, JEUS 매니저리소스설정, JEUS 매니저설정, 영구모듈설정은 JEUS의설정파일에반영된다. JEUS와각엔진을구동하기위한설정파일들은다음의위치에존재한다. JEUS 메인 JEUS_HOME\config\<nodename>\JEUSMain.xml EJB 엔진 JEUS_HOME\config\<nodename>\<nodename>_ejb_<enginename>\EJBMain.xml 서블릿엔진 JEUS_HOME\ config\<nodename>\<nodename>_servlet_<enginename>\webmain.xml JMS 엔진 JEUS_HOME\ config\<nodename>\<nodename>_jms_<enginename>\jmsmain.xml 82 JEUS 설치및시작하기

8.1.2. 컴포넌트추가와설정 엔진이란 Java EE스펙을만족하는 JEUS 엔진이다. JEUS에는 EJB 엔진, 서블릿엔진, JMS 엔진, 웹서버 (Web Server) 엔진의 4가지의엔진타입이있다. 이엔진들은하나의엔진컨테이너내에존재한다. 단, 같은엔진컨테이너내에동일한타입의엔진이 2개이상존재할수없다. JEUS는기본적으로하나이상의엔진컨테이너를필요로하며, 설치할때하나의엔진컨테이너와 EJB 엔진, 서블릿엔진을포함한다. 엔진컨테이너를추가하는방법은기존의엔진컨테이너를복사하는방법과새로운엔진컨테이너를생성한후엔진을추가하는방법이있다. 컴포넌트추가 다음은새로운엔진컨테이너를추가하고, 추가된엔진컨테이너에 EJB 엔진과서블릿엔진을추가하는방법이다. 1. JEUS 노드트리에서루트노드아래 [ 엔진컨테이너 ] 를클릭한다. [ 그림 8.4] 엔진컨테이너개요 제 8 장시스템설정 83

2. Main View 에서 [ 새엔진컨테이너생성 ] 을클릭하고엔진컨테이너이름을입력한다. 엔진은하나이 상필수로추가해야하므로여기에서는 EJB 엔진을추가한다. [ 그림 8.5] 엔진컨테이너생성 3. 엔진컨테이너를추가하라는팝업화면에서 [ 확인 ] 버튼을클릭한다. 새엔진컨테이너생성이성공할 경우다음과같은화면이나타난다. [ 그림 8.6] 엔진컨테이너생성후 84 JEUS 설치및시작하기

4. 엔진컨테이너에엔진을추가하기위해 JEUS 노드트리에서생성한엔진컨테이너의 [ 엔진 ] 을클릭한 다. [ 그림 8.7] 엔진개요 5. [ 새서블릿엔진생성 ] 을클릭하고, 엔진이름을입력한다. [ 그림 8.8] 엔진생성 6. [ 확인 ] 버튼을클릭하면새로생성된서블릿엔진을확인할수있다. [ 그림 8.9] 엔진생성후 제 8 장시스템설정 85

컴포넌트설정 새로추가된엔진컨테이너를구동하기위한설정은기본설정으로충분하며, 서블릿엔진이있을경우컨텍스트그룹에등록된 Web Listener Port가중복되지않도록설정해야한다. 새로생성된엔진컨테이너의 [ 서블릿엔진 ] > [MyGroup] > [lsnr1] 을클릭하면다음과같은 Web Listener 설정화면이나타난다. [ 그림 8.10] Web Listener 설정 참고 다른엔진컨테이너의서블릿엔진에서사용하는 Web Listener Port 와중복되지않도록설정한다. 8.1.3. 데이터소스추가 데이터소스 (Data source) 는 Database와 Java EE 프로그램을연결하기위해사용된다. 예제에서는 JEUS에기본적으로포함되어있는 Apache Derby DB를사용한다. Apache Derby는 JEUS_HOME\derby에포함되어있다. 만약 Derby가실행되어있지않다면다음과같이실행한다. UNIX/LINUX에서또는 Windows의명령프롬프트에서다음과같이실행한다. JEUS_HOME\bin> startderby 추후에 Derby를종료하기위해서는다음과같이실행한다. JEUS_HOME\bin> stopderby 참고 Derby를 JEUS에서 사용하려면 Derby의 JDBC 드라이버 파일인 derbyclient.jar가 JEUS_HOME\lib\datasource에위치해야한다 ( 기본적으로포함되어있음 ).http://db.apache.org/derby/ Derby에대한자세한내용은 http://db.apache.org/derby/ 를참고한다. 86 JEUS 설치및시작하기

예제에서는 sample이라고하는데이터베이스를 jdbc/sample이라는데이터소스이름으로사용한다. 다음은데이터소스를추가하는방법에대한설명이다. 1. JEUS 노드트리에서 [JEUS 매니저리소스 ] > [JDBC] 를선택한다. Main View에서 [ 새 JDBC 데이터소스생성 ] 을클릭한다. [ 그림 8.11] JDBC 데이터소스 2. [1. 데이터소스 ] 탭의데이터소스설정화면에서 DBMS 는 Derby 를, 가능한데이터소스들 에서는 Derby Connection PoolDataSource 를선택한다. [ 그림 8.12] 데이터소스선택 3. 데이터소스의속성을설정한다. 입력항목들이기본값으로설정되어표시된다. 다음과같이입력하고 [ 다음 ] 버튼을클릭하여 [2. 속성 ] 탭에서속성을설정한다. Export Name: datasource1 추가속성들 : ServerName=localhost DatabaseName=sample User=app Password=app 제 8 장시스템설정 87

[ 그림 8.13] 데이터소스속성 4. [3. 연결풀 ] 탭에서데이터소스의연결풀을설정한다. 입력항목들이기본값으로설정되어출력된다. 다음과같이입력하고 [ 생성 ] 버튼을클릭한다. [ 그림 8.14] 데이터소스연결풀 88 JEUS 설치및시작하기

5. 데이터소스가정상적으로설정되었는지확인한다. [ 그림 8.15] 데이터소스생성후 참고데이터소스설정은 JEUS 설정파일에반영된다. JEUS 노드트리에 [JEUS 매니저리소스 ] > [JDBC] 하위에데이터소스이름의트리노드가생성되며, 바인드할경우루트노드의 [JNDI트리] 에서데이터소스를확인할수있다. Connection Pool 데이터소스일경우설정후바로 Connection Pool이생성되지않고, Java EE 모듈에서처음데이터소스를사용할때, 모듈이 Deploy된엔진켄테이너의 [ 리소스 ] >[JDBC] 하위에나타난다. 데이터소스의정상적인동작여부또한커넥션을처음사용할경우알수있다. 8.1.4. WebAdmin 에서 JEUS 기동 WebAdmin을통해 JEUS를기동하는경우 JEUS Manager가실행된상태여야한다. JEUS Manager가실행된상태에서 WebAdmin을통해노드의컨테이너를 Boot, Down시킬수있고 JEUS Manager를종료시킬수있다. 다음은 WebAdmin에서 JEUS를기동하는과정에대한설명이다. 1. JEUS 노드트리에서루트노드를선택한다. 2. Main View 에서 [ 제어 ] 탭을클릭하면, 다음와같이 [ 부트 ], [ 다운 ], [ 종료 ] 메뉴가나타난다. 현재노드의컨테이너가 Booting되지않은상태이므로, [ 부트 ] 탭을선택하면 Booting 가능한노드가나타난다. [ 그림 8.16] JEUS 매니저의제어중부트화면 제 8 장시스템설정 89

3. 앞에서추가한컨테이너를 Booting하려면 JEUS를재기동해야한다. 그러므로우선 [ 종료 ] 탭을클릭해서 JEUS를완전히종료한다. 만약 JEUS 매니저만뜬상태라면컨테이너를추가해도 JEUS를종료할필요없이바로부트해도된다. [ 그림 8.17] JEUS 매니저의제어중종료화면 4. JEUS 가완전히종료된것을확인한다음, JEUS 를다시실행한다. 그리고전과같은방법으로 WebAdmin 을실행한다. 5. [ 부트 ] 탭에서노드를선택하고 [ 확인 ] 버튼을클릭하면 JEUS 가기동된다. 참고 엔진컨테이너를개별적으로 Boot, Down 할수있다. JEUS 노드트리에서 [ 엔진컨테이너 ] 를선택하 면 [ 그림 8.18] 과같은메뉴를볼수있다. [ 그림 8.18] 엔진컨테이너제어 8.2. Text Editor 사용 Text Editor 사용해서수동으로환경설정을하는방법은다음의순서로설명한다. 수동으로환경설정하는방법 - 환경설정 - 시스템기동방법 90 JEUS 설치및시작하기

WebAdmin 을사용할수없는환경에서텍스트기반으로편집할경우 "JEUS Server 안내서 ", "JEUS EJB 안내서 ", "JEUS Web Container 안내서 ", "JEUS JMS 안내서 " 의부록이나해당스키마를참조하면설정하 는데도움이될수있다. 스키마파일은 JEUS_HOME\lib\schemas\jeus 아래에서참조할수있다. 8.2.1. 환경설정 WebAdmin이아닌 Text Editor를이용하여 "JEUS_HOME\config\<node name>\jeusmain.xml" 파일을생성하고설정할수있다. JEUS를설치할때설정되는노드이름은해당호스트머신의네트워크 ID명이다. Windows에서는 hostname 이라는명령어를통해, UNIX에서는 uname -an이라는명령어를통해알아낼수있다. 만약 JEUS의 Virtu alhost 기능을사용한다면, vhost.properties 파일을참고해서적절한노드이름을선택해서작업한다. 다음 JEUSMain.xml 예제는이전절의모든설정값 ( 노드, 엔진컨테이너, EJB 엔진, 서블릿엔진, 데이터베이스커넥션 ) 을적용한것이다. [ 예 8.1] <<JEUSMain.xml>> <?xml version="1.0" encoding="utf-8"?> <jeus-system xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="6.0"> <node> <name>johan</name> <engine-container> <name>container1</name> <engine-command> <type>ws</type> <name>engine1</name> </engine-command> <engine-command> <type>jms</type> <name>engine1</name> </engine-command> <engine-command> <type>ejb</type> <name>engine1</name> </engine-command> <engine-command> <type>servlet</type> <name>engine1</name> </engine-command> <sequential-start>true</sequential-start> </engine-container> <engine-container> <name>container2</name> <engine-command> <type>ejb</type> <name>engine2</name> 제 8 장시스템설정 91

</engine-command> <engine-command> <type>servlet</type> <name>engine2</name> </engine-command> </engine-container> <class-ftp>true</class-ftp> <sequential-start>true</sequential-start> <enable-webadmin>true</enable-webadmin> </node> <resource> <data-source> <database> <vendor>others</vendor> <export-name>jdbc/sample</export-name> <data-source-class-name> org.apache.derby.jdbc.clientconnectionpooldatasource </data-source-class-name> <data-source-type>datasource</data-source-type> <auto-commit>true</auto-commit> <property> <name>portnumber</name> <type>java.lang.integer</type> <value>1527</value> </property> <property> <name>password</name> <type>java.lang.string</type> <value>app</value> </property> <property> <name>servername</name> <type>java.lang.string</type> <value>localhost</value> </property> <property> <name>connectionattributes</name> <type>java.lang.string</type> <value>;create=true</value> </property> <property> <name>databasename</name> <type>java.lang.string</type> <value>sample</value> </property> <property> <name>user</name> 92 JEUS 설치및시작하기

<type>java.lang.string</type> <value>app</value> </property> </database> </data-source> </resource> </jeus-system> JEUSMain.xml 파일에 EJB 엔진과서블릿엔진만정의하는것으로는충분하지않다. 추가적으로이들엔진의설정파일이필요한데, 이설정은 JEUS에서 EJB 엔진과서블릿엔진을시작하기위해필요하다. EJB 엔진을위해서는 EJBMain.xml이, 서블릿엔진을위해서는 WEBMain.xml 파일이필요하다. [ 예 8.2] <<EJBMain.xml>> <?xml version="1.0"?> <ejb-engine xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="6.0"> </ejb-engine> [ 예 8.3] <<WEBMain.xml>> <?xml version="1.0" encoding="utf-8"?> <web-container xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="6.0"> <context-group> <group-name>mygroup</group-name> <webserver-connection> <http-listener> <listener-id>http1</listener-id> <port>8088</port> <output-buffer-size>8192</output-buffer-size> <thread-pool> <min>10</min> <max>20</max> <step>1</step> <max-idle-time>300000</max-idle-time> <max-wait-queue>4</max-wait-queue> <max-queue>-1</max-queue> </thread-pool> <postdata-read-timeout>30000</postdata-read-timeout> <back-log>50</back-log> <server-access-control>false</server-access-control> </http-listener> </webserver-connection> </context-group> </web-container> 제 8 장시스템설정 93

8.2.2. 콘솔창에서 JEUS 기동 JEUSMain.xml, EJBMain.xml 과 WEBMain.xml을위와같이설정했다면 JEUS를시작할준비가된것이다. 콘솔창에서 jeus 라는명령어를통해 JEUS Manager를시작한다. 그러면 JEUS를시작하고엔진컨테이너나엔진을시작시킬수있는 stand-by 모드로들어가게된다. 1. 콘솔창에 jeus 라고입력한다. C:\Documents and Settings\Administrator>jeus ************************************************************** - JEUS Home : C:\TmaxSoft\JEUS6.0 - JEUS Base Port : 9736 - Added Java Option : - Java Vendor : Sun ************************************************************** "D:\java\1.5.0.7\bin\java" -server -Xmx512m -Xbootclasspath/p:"C:\TmaxSoft\JEUS6.0\lib\system\extension.jar";"C:\TmaxSoft\JEUS6.0\lib\system\classloader.jar" -c lasspath "C:\TmaxSoft\JEUS6.0\lib\system\bootstrap.jar" -Djava.endorsed.dirs="C: \TmaxSoft\JEUS6.0\lib\endorsed" -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rm i.dgc.server.gcinterval=3600000 -Djeus.jvm.version=hotspot -Djeus.home="C:\TmaxS oft\jeus6.0" -Djava.naming.factory.initial=jeus.jndi.JNSContextFactory -Djava.na ming.factory.url.pkgs=jeus.jndi.jns.url -Djava.library.path="C:\TmaxSoft\JEUS6.0 \lib\system" -Djeus.baseport=9736 -Djava.util.logging.config.file="C:\TmaxSoft\J EUS6.0\bin\logging.properties" -Djeus.properties.replicate=jeus,java.util.loggin g,sun.rmi.dgc -Djeus.tool.webadmin.locale.language=ko -Djava.net.preferIPv4Stack =true -Djeus.management.simple.log=true jeus.server.jeusbootstrapper [2007.05.19 13:33:39][1][] [client-10] initialize virtual DNS table, enable : tr ue, table : {shimbh:9736=johan} [2007.05.19 13:33:40][0][b037] [johan-10] [MGR-0411] virtual host name of this m anager : johan [Network Configuration] default local hostname : null, default local ip : null, local inetaddress : shimbh/192.168.1.210, local host address : 192.168.1.210, fu ll host name : shimbh, local hostname : shimbh [RMI Configuration] Default RMI export port for this container : 9743 [SystemProperty] The system property is set but has no corresponding jeus proper ty, maybe typographical error : jeus.management.simple.log [2007.05.19 13:33:48][2][b037] [johan-10] jeus.server.uselistenportpercontainer= true [2007.05.19 13:33:48][2][b037] [johan-10] The id of this container johan_contain er1 is 63 [2007.05.19 13:33:48][2][b037] [johan-10] The base port of this container johan_ container1 is 10381 [2007.05.19 13:33:48][3][b037] [johan-10] [MGR-0239] JEUSMain.xml is loaded [2007.05.19 13:33:50:390] webt.properties file is not found [2007.05.19 13:33:57][0][b037] [johan-10] [MGR-0241] JeusServer is Ready 2. JeusServer is Ready 메시지가콘솔창에나타나면기동시킬수있는준비가된것이다. 94 JEUS 설치및시작하기

3. JEUS의 bin 디렉터리에있는콘솔툴인 jeusadmin 을실행시킨다. jeusadmin <node name> 이라고실행시키며, nodename은 JEUS 노드의이름을가리킨다 ( 예제의경우 johan 가된다 ). JEUS를설치할때정의했던관리자의 ID와패스워드를입력한다. 관리자의 ID는기본적으로 "administrator" 로설정되어있다. C:\TmaxSoft\JEUS6.0\bin>jeusadmin johan Login name>administrator Password> JEUS 6.0 Jeus Manager Controller johan> 4. johan> 라는 jeusadmin prompt가나타나면 JEUS를제어할수있게된다. 앞서 jeus 커맨드로실행시킨 JEUS Manager에명령을전달함으로써제어한다. 5. JEUS와설정된 EJB/ 서블릿엔진을실행시키기위해 boot 라는명령어를입력한다. johan>boot johan_container1 johan_conatiner2 6. prompt가나타나면 JEUS가기동된것이다. 7. EJB와서블릿엔진이정상적으로기동되었는지확인하기위해 jeusadmin prompt에서 allenglist 를실행한다. johan>allenglist ======================================== engines in the container johan_container1 johan_ws_engine1 johan_jms_engine1 johan_ejb_engine1 johan_servlet_engine1 ======================================== ======================================== engines in the container johan_container2 johan_ejb_engine2 johan_servlet_engine2 ======================================== 8. jeusadmin prompt에서 down 명령어를실행하면 JEUS가종료된다. johan>down Do you really want to down whole JEUS? (y : n):>y johan down successful 제 8 장시스템설정 95

9. jeusadmin prompt에서 jeusexit 를입력하면 JEUS Manager가완전히종료되고 exit 를입력하면 jeu sadmin이종료된다. johan>jeusexit johan jeusexit successful 96 JEUS 설치및시작하기

제 9 장 WebTier 사용하기 본장에서는예제를통해서서블릿, JSP, JSTL, JSF 애플리케이션의배치와 WAR(Web application ARchive) 모듈의패키징과배치에대해서설명한다. 9.1. 예제 본절에서는웹애플리케이션의간단한예제코드를작성하고, 해당소스의컴파일과배치과정을설명한 다. 참고자세한내용은 "JEUS Server 안내서 ", "JEUS Web Container 안내서 ", "JEUS Web Service 안내서 " 를참조한다. 다음의 HelloWorldServlet.java는웹브라우저에간단히 Hello World! 라는메시지를출력하는예제서블릿이다. 예제는다음위치의디렉터리에서찾을수있다. JEUS_HOME\samples\getting_started\helloservlet\src\java [ 예 9.1] <<HelloWorldServlet.java>> import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldServlet extends HttpServlet { public void doget(httpservletrequest req, HttpServletResponse res) throws IOException, ServletException { res.setcontenttype("text/html"); PrintWriter out = res.getwriter(); out.println("<html>"); out.println("<head>"); out.println("<title>hello World Sample</TITLE>"); out.println("</head>"); out.println("<body>"); out.println("<center><h1>hello World!</H1></CENTER>"); out.println("</body>"); 제 9 장 WebTier 사용하기 97

} } out.println("</html>"); out.close(); 다음의 snoop.jsp는요청을받았을때 request에대한몇가지정보를보여주는 snoop.jsp 라는샘플 JSP 프로그램이다. 예제는다음위치의디렉터리에서찾을수있다. JEUS_HOME\samples\getting_started\helloservlet\web [ 예 9.2] <<snoop.jsp>> <html> <body bgcolor="white"> <h2> Request Information </h2> <font size="4"> JSP Request Method: <%= request.getmethod() %> <br> Request URI: <%= request.getrequesturi() %> <br> Request Protocol: <%= request.getprotocol() %> <br> Servlet path: <%= request.getservletpath() %> <br> Path info: <%= request.getpathinfo() %> <br> Path translated: <%= request.getpathtranslated() %> <br> Query string: <%= request.getquerystring() %> <br> Content length: <%= request.getcontentlength() %> <br> Content type: <%= request.getcontenttype() %> <br> Server name: <%= request.getservername() %> <br> Server port: <%= request.getserverport() %> <br> Remote user: <%= request.getremoteuser() %> <br> Remote address: <%= request.getremoteaddr() %> <br> Remote host: <%= request.getremotehost() %> 98 JEUS 설치및시작하기

<br> Authorization scheme: <%= request.getauthtype() %> <hr> The browser you are using is <%= request.getheader("user-agent") %> <hr> </font> </body> </html> 다음은 snoop.jsp와똑같은일을하지만 JSTL과 JSF를사용한 'snoop-jstl.jsp' 라는샘플 JSP 프로그램이다. [ 예 9.3] <<snoop-jstl.jsp>> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <html> <body> <h2> Request Information </h2> <font size="4"> <c:set var="req" value="${pagecontext.request}"/> JSP Request Method: <c:out value="${req.method}"/> <br/> Request Protocol: <c:out value="${req.protocol}"/> <br/> Servlet path: <c:out value="${req.servletpath}"/> <br/> Path info: <c:out value="${req.pathinfo}"/> <br/> Path translated: <c:out value="${req.pathtranslated}"/> <br/> Query string: <c:out value="${req.querystring}"/> <br/> Content length: <c:out value="${req.contentlength}"/> <br/> Content type: <c:out value="${req.contenttype}"/> <br/> Server name: <c:out value="${req.servername}"/> <br/> Server port: <c:out value="${req.serverport}"/> <br/> Remote user: <c:out value="${req.remoteuser}"/> <br/> Remote address: <c:out value="${req.remoteaddr}"/> <br/> Remote host: <c:out value="${req.remotehost}"/> 제 9 장 WebTier 사용하기 99

<br/> Authorization scheme: <c:out value="${req.authtype}"/> <hr/> <f:view> The browser you are using is <h:outputtext value= "#{header['user-agent']}"/> </f:view> <hr/> </font> </body> </html> 이예제는 JSP이므로사용자가컴파일할필요없이서블릿엔진이자동으로컴파일한다. 다만 'snoop.jsp' 를넣을 jsp 디렉터리가필요하다. 9.2. 컴파일 작성한서블릿소스파일을컴파일하기위해서는서블릿이사용하는클래스들과인터페이스가클래스패스에설정되어있어야한다. 또한컴파일을위해서는기본적인 Java의클래스패스외에 JEUS의 classpath 역시클래스패스에추가되어야한다. 만일 JEUS가 'C:\TmaxSoft\JEUS6.0' 이라는디렉터리에설치되어있다면 'C:\TmaxSoft\JEUS6.0\lib\system\javaee.jar' 역시클래스패스에추가되어야한다. 예 ) C:\TmaxSoft\JEUS6.0\samples\getting_started\helloservlet\src\java>javac -classpath C:\TmaxSoft\JEUS6.0\lib\system\javaee.jar -d. *.java 컴파일후 'HelloWorldServlet.class' 란파일이컴파일을수행한디렉터리에생성된다. helloworld 라는디렉터리를 'C:\TmaxSoft\JEUS6.0\samples\getting_started\helloservlet' 아래에생성한다. helloworld 라는디렉터리아래에 WEB-INF 라는디렉터리를만든뒤, WEB-INF 디렉터리아래에다시 classes 라는디렉터리를만들고패키지구조에따라 'HelloWorldServlet.class' 를복사한다. 예제에서는 anonymous 패키지이므로별도의디렉터리없이 WEB-INF\classes로복사하기만하면된다. 그리고 snoop.jsp와 snoop-jstl.jsp를 helloworld 디렉터리에복사한다. 예 ) C:\TmaxSoft\JEUS6.0\samples\getting_started\helloservlet\src\java>copy HelloWorld Servlet.class..\..\helloworld\WEB-INF\classes 100 JEUS 설치및시작하기

9.3. WAR 모듈패키징 소스파일을작성하고컴파일에성공하였다면다음의절차에따라 Java EE WAR 파일을패키징한다. 예제파일은다음의경로에서찾을수있다. JEUS_HOME\samples\getting_started\helloservlet\src\conf 1. Text Editor를사용하여다음과같은내용으로 web.xml과 jeus-web-dd.xml 파일을작성하여 WEB-INF 디렉터리에저장한다. [ 예 9.4] <<jeus-web-dd.xml>> <?xml version="1.0" encoding="utf-8"?> <jeus-web-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="6.0"> <context-path>/helloworld</context-path> </jeus-web-dd> [ 예 9.5] <<web.xml>> <?xml version="1.0" encoding="utf-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"> <display-name>web Tier Tutorial</display-name> <servlet> <servlet-name>hello World Servlet</servlet-name> <servlet-class>helloworldservlet</servlet-class> </servlet> <servlet> <servlet-name>faces Servlet</servlet-name> <servlet-class> javax.faces.webapp.facesservlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>hello World Servlet</servlet-name> <url-pattern>/helloworldservlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> </web-app> 2. jar 명령으로 hello 디렉터리의내용을 WAR 모듈로묶는다. 예 ) C:\TmaxSoft\JEUS6.0\samples\getting_started\helloservlet>jar cvf helloworld.war C helloworld/. 제 9 장 WebTier 사용하기 101

9.4. Deploy 패키징된 WAR 모듈은 WebAdmin 이나콘솔을이용해서 Deploy 한다. WebAdmin 으로 WAR 모듈 Deploy 하기 패키징한 WAR 모듈은 WebAdmin과콘솔툴로 Deploy할수있다. WebAdmin에서는 EJB모듈과같이 WAR 모듈에대해 archive 모드, exploded 모드를제공한다. 또한, JEUS가기동되는시스템의임의의디렉터리에웹애플리케이션이존재할경우 exploded 모드로 Deploy할수있는기능을제공한다. 이기능은 Node View의엔진컨테이너하위에 [Java EE 어플리케이션모듈 ] 을선택했을때, [ 새웹컨텍스트배치 ] 라는링크를클릭함으로써사용할수있다. 참고 Deploy 에대한자세한내용은자세한내용은 "JEUS WebAdmin 안내서 " 를참조한다. 여기서는이전에사용한방법과동일하게 WAR 모듈을 Deploy 해보도록한다. 1. 웹브라우저로접속해서로그인한다. 2. Node View에서 [ 어플리케이션모듈디플로이 ] 를선택한다. 3. Deploy할모듈을선택하고 [ 다음 ] 버튼을클릭한다. [ 그림 9.1] WAR 모듈 deploy 초기화면 102 JEUS 설치및시작하기

4. Deploy 할엔진컨테이너를선택하고, 서블릿엔진의컨텍스트그룹을입력한후 [ 다음 ] 버튼을클릭한 다. [ 그림 9.2] WAR 모듈 deploy 대상선택 5. 필요한선택사항을입력하고 [ 다음 ] 버튼을클릭한다. [ 그림 9.3] WAR 모듈 deploy 선택사항 제 9 장 WebTier 사용하기 103

6. Deploy 방식을선택하고 [ 디플로이 ] 버튼을클릭한다. [ 그림 9.4] WAR 모듈 deploy 7. Deploy 가성공적으로완료되면 Node View 의 [ 어플리케이션모듈 ] 아래 'helloworld' 라고나타난다. [ 그림 9.5] WAR 모듈 deploy 104 JEUS 설치및시작하기

콘솔툴로 WAR 모듈 Deploy 하기 다음은콘솔툴을사용하여수동으로 WAR 모듈을 Deploy하는과정이다. 단, 서블릿과 JSP는이미언급한대로모두컴파일된것으로가정한다. 1. 컴파일된서블릿, JSP, XML 파일을각각다음과같은디렉터리아래에위치시킨다. 서블릿파일 JEUS_HOME\webhome\app_home\< 모듈명 >\WEB-INF\classes 예 ) C:\TmaxSoft\JEUS6.0\webhome\app_home\helloworld\WEB-INF\classes JSP 파일 JEUS_HOME\webhome\app_home\< 모듈명 > 예 ) C:\TmaxSoft\JEUS6.0\webhome\app_home\helloworld XML 파일 JEUS_HOME\webhome\app_home\< 모듈명 >\WEB-INF 예 ) C:\TmaxSoft\JEUS6.0\webhome\app_home\helloworld \WEB-INF 2. jeusadmin 으로 JEUS 에접속한다. jeusadmin johan Uadministrator Pjeusadmin 3. 접속이되었다면다음과같은순서로명령을입력한다. johan>deploy -con johan_container1 helloworld using the following application info : applicationtype path:helloworld.war deployment-type:component class-ftp-unit:jar web-component 4. 모듈이정상적으로 Deploy 되었는지확인하고, 다음절에서 Deploy 한 WAR 모듈을실행해보도록한다. 제 9 장 WebTier 사용하기 105

9.5. 실행및결과 본절에서는 Deploy 된서블릿과 JSP 를사용하는방법을설명한다. 우선 Servlet 부터사용해보자. Deploy 된서블릿사용방법 Hello World 서블릿을호출하기위해서는브라우저의주소창에다음과같이입력한다. http://localhost:8088/helloworld/helloworldservlet 서블릿엔진이정상적으로기동된상태이고, Hello World 서블릿이정상적으로 Deploy되었다면다음과같은화면이나타난다. [ 그림 9.6] WAR 모듈서블릿호출 주소창에입력한 URL(http://localhost:8088/helloworld/HelloWorldServlet) 의의미는다음과같다. [ 표 9.1] 서블릿 Request Path 의항목과의미 항목 http Localhost 8088 helloworld HelloWorld Servlet 설명 JEUS에접속할때사용하는 HTTP 프로토콜을의미한다. 서비스를제공하는서버가브라우저와동일한자신의주소에있음을의미한다. Context Group의 HTTP listener의포트번호이다. 웹애플리케이션의 context용 request path이다. Context group의 request path가아님에주의해야한다. Context Group은오직포트번호의구분을통해서만요청을분리할수있다. 이 request path는 WEBMain.xml의 context-path element에설정되며, 이값을지정하지않을경우 WAR 모듈파일의이름과동일하다. 서블릿에정의된 URL 패턴이다. 106 JEUS 설치및시작하기

Deploy 된 JSP 사용방법 Deploy된 JSP 사용하는방법 snoop.jsp 페이지를호출 snoop.jsp페이지를호출하려면다음의주소를웹브라우저주소창을통해호출한다 (JSP의경우최초로호출하는경우서블릿엔진이자동으로컴파일을수행하므로약간늦게실행된다 ). http://localhost:8088/helloworld/faces/snoop.jsp [ 그림 9.7] WAR 모듈 JSP 호출 snoop-jstl.jsp 페이지를호출 snoop-jstl.jsp페이지를호출하려면다음주소를주소창을통해호출하면된다. 화면결과는 snoop.jsp 와동일하다. http://localhost:8088/helloworld/snoop-jstl.jsf 제 9 장 WebTier 사용하기 107

제 10 장 EJB 사용하기 본장에서는예제를이용해서 Stateless Session Bean 과 Java Persistence API 를이용하여 Entity 를개발 하고 Deploy 하는과정을설명한다. 10.1. Session Bean 예제 Session Bean 은기본적으로 Business Interface 와 Bean Class 로구성된다. 10.1.1. 예제 EJB 예제 다음의예제코드는 Hello EJB 를출력하는 Business Method를가진간단한 Stateless Session Bean 예제이다. 예제코드는다음의디렉터리에서찾아볼수있다. JEUS_HOME\samples\getting_started\helloejb\helloejb-ejb\src\java\helloejb Business Interface [ 예 10.1] <<Hello.java>> package helloejb; import javax.ejb.remote; @Remote public interface Hello { String sayhello(); } Bean Class [ 예 10.2] <<HelloBean.java>> package helloejb; import javax.ejb.stateless; @Stateless(mappedName="helloejb.Hello") public class HelloBean implements Hello { 제 10 장 EJB 사용하기 109

public String sayhello() { } return "Hello EJB!"; } 서블릿클라이언트예제 HelloEJB를호출하는서블릿클라이언트를다음과같이구현한다. 예제코드는다음위치의디렉터리에서찾아볼수있다. JEUS_HOME\samples\getting_started\helloejb\helloejb-war\src\java\helloejb [ 예 10.3] <<HelloClient.java>> package helloejb; import java.io.*; import javax.ejb.ejb; import javax.servlet.*; import javax.servlet.http.*; public class HelloClient extends HttpServlet { @EJB private Hello hello; protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getwriter(); try { // Call session bean business method. String msg = hello.sayhello(); response.setcontenttype("text/html"); out.println("<html>"); out.println("<head>"); out.println("<title>helloclient</title>"); out.println("</head>"); out.println("<body>"); out.println("<center><h1>" + msg + "</h1></center>"); out.println("</body>"); out.println("</html>"); out.close(); 110 JEUS 설치및시작하기

} } catch(exception ex){ response.setcontenttype("text/plain"); ex.printstacktrace(out); } protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); } protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); } } 10.1.2. 컴파일 작성된예제는 Ant를이용하여다음과같이빌드할수있다. %JEUS_HOME%\samples\getting_started\helloejb>ant build 빌드가정상적으로완료되면 'dist\helloejb.ear' 애플리케이션 EAR 파일이생성된다. 10.1.3. Deploy 패키징한 EJB 애플리케이션을 WebAdmin 과콘솔툴로 Deploy 할수있다. WebAdmin 으로 Deploy 하기 다음은 WebAdmin으로 Deploy하는과정에대한설명이다. 1. 커맨드창에서 jeus 명령을실행하고, 웹브라우저로접속한다. 2. Node View에서 [ 어플리케이션모듈디플로이 ] 를선택한다. 3. Main View에모듈 Deploy를위한초기화면이나타난다. [1. 모듈선택 ] 탭에보이는것과같이 Deploy 할대상모듈을선택하는화면으로, 3가지방법을제공한다. 제 10 장 EJB 사용하기 111

탭모듈절대경로파일업로드 설명 JEUS_HOME\webhome\app_home 이나 JEUS_HOME \webhome\autodeploy 아래있는모듈을보여주며, 이들중하나를선택해 Deploy할수있다. Deploy할모듈이존재하는위치를파일명을포함해지정한다. 모듈의위치는 WebAd min이실행되는머신이아니고 JEUS가구동되는머신의디렉터리이다. WebAdmin이실행되는머신에서 JEUS가구동되는머신으로파일을업로드할수있으며, 업로드할위치는 JEUS_HOME \webhome\app_home 이나 JEUS_HOME\webhome\autodeploy 중하나를선택할수있다. [ 모듈 ] 이나 [ 절대경로 ], [ 파일업로드 ] 탭에서모듈을선택하고 [ 다음 ] 버튼을클릭한다. [ 그림 10.1] HelloEJB Deploy 초기화면 112 JEUS 설치및시작하기

4. 모듈선택이완료되면, Deploy 할대상이엔진컨테이너단위로나타난다. Deploy 할대상을선택하고 [ 다음 ] 버튼을클릭한다. [ 그림 10.2] HelloEJB Deploy 대상선택 5. Deploy 할때필요한선택사항을입력하는화면으로, 애플리케이션설정과모듈설정을할수있다. 특 별한설정이필요없으므로 [ 다음 ] 버튼을클릭한다. [ 그림 10.3] HelloEJB Deploy 시선택사항 제 10 장 EJB 사용하기 113

6. Deploy 할방식을선택하고 [ 디플로이 ] 버튼을클릭한다. [ 그림 10.4] HelloEJB Deploy 7. Deploy 가성공적으로완료되면 Node View 의 [ 어플리케이션모듈 ] 아래 'helloejb' 가나타난다. [ 그림 10.5] HelloEJB Deploy 콘솔툴로 Deploy 하기 다음은콘솔툴을사용하여수동으로 Deploy 하는과정에대한설명이다. 114 JEUS 설치및시작하기

1. 패키징된 'helloejb.ear' 파일을다음 JEUS APP_HOME 디렉터리에복사한다. JEUS_HOME/webhome/app_home/ 2. 콘솔창에서 jeusadmin 이라고입력하면 jeusadmin 콘솔툴이실행된다. 다음과같은순서로명령을입력한다. C:\TmaxSoft\JEUS6.0\bin>jeusadmin johan Login name>administrator Password> JEUS 6 Jeus Manager Controller node>deploy -con johan_container1 helloejb.ear using the following application info :... node>applist con johan_container1 name : helloejb type : J2EEApplication... 위의명령을살펴보면 deploy <module name> 을통해서 HelloEJB 애플리케이션을 Deploy하고, applist 를이용하여 Deploy된것을확인했다. Deploy가정상적으로이루어졌다면 exit 명령을통하여콘솔툴을종료한다. 10.1.4. 실행및결과 Deploy가완료되면작성된페이지를실행해서결과를확인한다. 다음은웹클라이언트를실행하는과정에대한설명이다. 1. 웹브라우저를통해다음 URL로접속하면 HelloEJB 웹클라이언트로접속할수있다. http://localhost:8088/helloejb/ [ 그림 10.6] HelloEJB 클라이언트화면 제 10 장 EJB 사용하기 115

2. 화면의버튼을클릭하면 EJB 를호출하는 HelloClient 서블릿을실행시키며다음과같은결과를확인할 수있다. [ 그림 10.7] HelloEJB 서블릿클라이언트수행결과 10.2. Java Persistence API 예제 본절에서는 Java Persistence API 를통해 Entity 를작성하고컴파일하여 Deploy 하는과정을설명한다. 10.2.1. 예제 EJB 예제 예제는 Product Entity와이를다루는 EJB인 ProductManager Session Bean으로구성되어있다. 예제코드는다음의디렉터리에서찾아볼수있다. JEUS_HOME\samples\getting_started\hellojpa\hellojpa-ejb\src\java\hellojpa Entity [ 예 10.4] <<Product.java>> package hellojpa; import java.io.serializable; import javax.persistence.entity; import javax.persistence.id; import javax.persistence.namedquery; @Entity @NamedQuery(name="findAllProducts", query="select p FROM Product p") 116 JEUS 설치및시작하기

public class Product implements Serializable { @Id private String productid; private double price; private String description; public Product() { } public Product(String productid, double price, String description){ this.productid = productid; this.price = price; this.description = description; } public String getproductid() { } return productid; public void setproductid(string id) { } this.productid = id; public double getprice() { } return price; public void setprice(double price) { } this.price = price; public String getdescription() { } return description; public void setdescription(string description) { } this.description = description; public String tostring() { return "Product[productId=" + productid + ", price=" + price + ", description=" + description + "]"; } } 제 10 장 EJB 사용하기 117

Business Interface [ 예 10.5] <<ProductManager.java>> package hellojpa; import java.util.collection; import javax.ejb.local; @Local public interface ProductManager { Product createproduct(string productid, double price, String desc); Product getproduct(string productid); Collection findallproducts(); Collection findproductsbydescription(string desc); Collection findproductsinrange(double low, double high); void updateproduct(product product); void removeproduct(product product); } void removeallproducts(); Bean Class [ 예 10.6] <<ProductManagerBean.java>> package hellojpa; import java.util.collection; import javax.ejb.stateless; import javax.persistence.entitymanager; import javax.persistence.persistencecontext; import javax.persistence.query; @Stateless(mappedName="hellojpa.ProductManager") public class ProductManagerBean implements ProductManager { @PersistenceContext private EntityManager em; public ProductManagerBean() { } 118 JEUS 설치및시작하기

public Product createproduct(string productid, double price, String desc){ Product product = new Product(productId, price, desc); em.persist(product); return product; } public Product getproduct(string productid){ } return (Product)em.find(Product.class, productid); public Collection findallproducts() { return em.createnamedquery("findallproducts"). getresultlist(); } public Collection findproductsbydescription(string desc){ Query query = em.createquery("select p FROM Product p WHERE p.description=:desc"); query.setparameter("desc", desc); return query.getresultlist(); } public Collection findproductsinrange(double low, double high){ Query query = em.createquery("select p FROM Product p WHERE p.price between :low and :high"); query.setparameter("low", low).setparameter("high", high); return query.getresultlist(); } public void updateproduct(product product){ Product managed = em.merge(product); em.flush(); } public void removeproduct(product product){ Product managed = em.merge(product); em.remove(managed); } public void removeallproducts(){ } em.createquery("delete FROM Product p").executeupdate(); } 제 10 장 EJB 사용하기 119

서블릿클라이언트예제 ProductManager EJB를사용하여 DB에데이터를저장하고데이터를다루는서블릿클라이언트를다음과같이구현한다. 예제코드는다음의디렉터리에서찾아볼수있다. JEUS_HOME\samples\getting_started\hellojpa\hellojpa-war\src\java\hellojpa [ 예 10.7] <<ProductManagerClient.java>> package hellojpa; import java.io.*; import java.util.collection; import javax.ejb.ejb; import javax.servlet.*; import javax.servlet.http.*; public class ProductManagerClient extends HttpServlet { @EJB private ProductManager productmanager; protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/plain"); PrintWriter out = response.getwriter(); out.println("servlet CLIENT CONSOLE OUTPUT:\n"); productmanager.removeallproducts(); out.println("cleaned up existing products.\n"); out.println("creating products..."); Product p1 = productmanager.createproduct("1", 10.00, "Ceramic Dog"); Product p2 = productmanager.createproduct("2", 13.00, "Wooden Duck"); Product p3 = productmanager.createproduct("3", 19.00, "Ivory Cat"); Product p4 = productmanager.createproduct("4", 33.00, "Ivory Cat"); Product p5 = productmanager.createproduct("5", 22.00, "Chrome Fish"); Collection products; 120 JEUS 설치및시작하기

out.println("created products:"); products = productmanager.findallproducts(); for(object product : products){ out.println(product); } out.println(); out.println("find product with productid 1:"); Product pp1 = productmanager.getproduct("1"); out.println("found = " + pp1.getdescription() + " $" + pp1.getprice()); out.println("update the price of this product to 12.00"); pp1.setprice(12.00); productmanager.updateproduct(pp1); Product pp2 = productmanager.getproduct("1"); out.println("product " + pp2.getdescription() + " is now $" + pp2.getprice()); out.println(); out.println("find products with description:"); products = productmanager.findproductsbydescription("ivory Cat"); for(object product : products){ out.println(product); } out.println(); out.println("find products with price range between 10.00 and 20.00"); products = productmanager.findproductsinrange(10.00, 20.00); for(object product : products){ out.println(product); } out.println(); out.println("removed all products."); productmanager.removeproduct(p1); productmanager.removeproduct(p2); productmanager.removeproduct(p3); productmanager.removeproduct(p4); productmanager.removeproduct(p5); } out.close(); 제 10 장 EJB 사용하기 121

protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); } } protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); } 10.2.2. 컴파일 Ant를이용하여예제코드를다음과같이빌드할수있다. 다음은컴파일하는과정에대한설명이다. 1. 예제가작성된경로에서다음과같이명령어를입력한다. C:\jeus\samples\getting_started\hellojpa>ant build 2. 빌드가정상적으로완료되면 dist\hellojpa.ear 애플리케이션 EAR 파일이생성된다. 이번예제는 DB를필요로하므로 Derby를시작시키도록한다. 또한 DB가 jdbc/sample 데이터소스로설정되어있어야한다. 자세한것은 제8장시스템설정 을참고한다. Derby가시작되었다면다음과같이 DB 테이블을생성하도록한다. 여기서는 sample 이라고하는 DB 를사용할것이다. CREATE TABLE PRODUCT (PRODUCTID VARCHAR(255) NOT NULL, PRICE FLOAT, DESCRIPTION VARCHAR(255), PRIMARY KEY (PRODUCTID)); 3. 다음의명령어를입력해서 DB 테이블을생성한다. C:\jeus\samples\getting_started\hellojpa>ant setup 이제빌드와 DB 설정이완료되었다면패키징된모듈을 Deploy 할준비가완료되었다. 10.2.3. Deploy 패키징한 EJB 애플리케이션을 WebAdmin 과콘솔툴로 Deploy 할수있다. WebAdmin 으로 Deploy 하기 다음과정에따라패키징된모듈을 WebAdmin으로 Deploy 한다. 1. WebAdmin으로접속한다. 122 JEUS 설치및시작하기

2. Node View 에서 [ 어플리케이션모듈디플로이 ] 를선택한다. 3. Deploy 할모듈을선택하고 [ 다음 ] 버튼을클릭한다. [ 그림 10.8] HelloJPA Deploy 초기화면 4. Deploy 할컨테이너를선택하고 [ 다음 ] 버튼을클릭한다. [ 그림 10.9] HelloJPA Deploy 대상선택 제 10 장 EJB 사용하기 123

5. Deploy 할때팔요한선택사항을입력하는화면으로, 애플리케이션설정과모듈설정을할수있다. 특 별한설정이필요없으므로 [ 다음 ] 버튼을클릭한다. [ 그림 10.10] HelloJPA Deploy 선택사항 6. Deploy 할방식을선택하고 [ 디플로이 ] 버튼을클릭한다. [ 그림 10.11] HelloJPA Deploy 배치옵션 124 JEUS 설치및시작하기

7. Deploy 가성공할경우 [ 어플리케이션모듈 ] 아래 'hellojpa' 가나타난다. [ 그림 10.12] Deploy 된 HelloJPA 참고 8.1.3. 데이터소스추가 에서데이터소스설정관련부분에서설명했지만, 데이터소스설정에서 패스워드가틀렸거나 IP 주소가정확하지않을경우에 Deploy 는실패하게된다. 콘솔툴로 Deploy 하기 콘솔툴을사용하여수동으로 Deploy하는방법은다음과같다. 1. 패키징된 hellojpa.ear 파일을다음 JEUS APP_HOME 디렉터리에복사한다. JEUS_HOME/webhome/app_home/ 2. 콘솔창에서 jeusadmin 이라고입력하여 jeusadmin 콘솔툴을실행한다. 다음과같은순서로명령을입력한다. C:\>jeusadmin johan Login name>administrator Password> JEUS 6 Jeus Manager Controller node>deploy -con johan_container1 hellojpa.ear using the following application info :... node>applist con johan_container1 name : hellojpa type : J2EEApplication... 제 10 장 EJB 사용하기 125

3. 모듈이정상적으로 Deploy 되었는지확인한다. 10.2.4. 실행및결과 Deploy가완료되면작성된페이지를실행해서결과를확인한다. 다음은웹클라이언트를실행하는과정에대한설명이다. 1. 웹브라우저를통해다음 URL로접속하면 HelloJPA 웹클라이언트로접속할수있다. http://localhost:8088/hellojpa/ [ 그림 10.13] HelloJPA 클라이언트화면 126 JEUS 설치및시작하기

2. 화면의버튼을클릭하면 EJB 에요청을내리는서블릿클라이언트를수행하고다음과같이결과를보 여준다. [ 그림 10.14] HelloJPA 서블릿클라이언트수행결과 제 10 장 EJB 사용하기 127

제 11 장웹서비스사용하기 본장에서는 JAX-WS 2.0 을활용한웹서비스의생성과클라이언트의작성, 그리고웹서비스를호출하는 내용을설명한다. 11.1. 웹서비스생성 JEUS 6에서는 Java EE 5 방식의웹서비스를지원하며 JAX-WS 2.0은 Java EE 5웹서비스의핵심이다. JAX-WS 2.0은기존 JAX-RPC를대체하는수단으로설계되었다. 새로운모습으로등장한 JAX-WS의배경으로는 JAXB 2.0의등장이있으며, JAXB 2.0은모든 XML 스키마타입을완전히지원하게됨으로써기존에존재했던 Java 타입과 XML 타입간의매핑을보다명확하게정의할수있게되었고, 기존에 JAX-RPC 스펙에존재하던 Java 타입과 XML 타입간의매핑에대한의존성을제거할수있게한원동력이되었다. 여기에다 SOAP 1.2 메시지를직접다룰수있게하는 SAAJ 1.3까지포함하여, Java Web Services 2.0이라는새로운웹서비스모델이등장하게된다. 11.1.1. From Java 방식 From Java 방식의웹서비스생성은기본적으로다음과같은절차를따른다. 1. 웹서비스 Annotation이포함된서비스구현 Bean의작성 2. 타벤더간에이식가능한산출물 (Portable Artifact) 의생성 3. 웹서비스패키징과배치 서비스구현 Bean(Service Implementation Bean) 의작성 서비스구현 Bean을작성할경우에는몇가지의필수제약조건이따르게되는데, 이러한필수제약조건들은다음과같다. javax.jws.webservice Annotation을포함시켜서이클래스가서비스구현 Bean임을명시한다. 웹서비스메소드의인자와리턴타입은 JAXB 2.0의 Java와 XML 스키마간의매핑정의와호환되어야한다. 웹서비스메소드의인자와리턴타입은 java.rmi.remote 인터페이스를직접혹은간접적으로구현하여서는안된다. 이와같은요소들말고도, javax.jws 패키지에정의되어있는여러 Annotation을활용하면메소드의인자와리턴타입, 바인딩방식등의커스터마이징이가능하다. 그럼간단한예제코드를통해실제서비스구현 Bean이어떻게작성되어야하는지살펴보도록하자. 다음은간단한웹서비스를구현한클래스를보여준다. 제 11 장웹서비스사용하기 129

예제코드는 "JEUS_HOME\samples\getting_started\webservices\from_java\src\java\fromjava\server" 에서찾아볼수있다. [ 예 11.1] <<AddNumbersImpl.java>> package fromjava.server; import javax.jws.webservice; @WebService public class AddNumbersImpl { } public int addnumbers(int number1, int number2) { } return number1 + number2; JAX-WS 2.0 에서는기존 Java 클래스의웹서비스로의공개가아주용이하며, 위 < 리스트 1> 에서보는바 와같이 @WebService Annotation 을추가함으로써기존의 Java 클래스를쉽게웹서비스로변환하여만 들수있다. 타벤더간에이식가능한산출물 (Portable Artifact) 의생성 서비스구현 Bean을작성하고컴파일까지수행하였다면, JAX-WS 런타임에서사용할타벤더간에이식가능한산출물의생성작업이필요하다. 여기서타벤더간에이식가능한산출물이란, JAX-WS 스펙을준수하는모든벤더에서사용할수있는 JAX-WS 툴을통해만들어낸산출물임을의미하며, Java의파라미터를실제 WSDL의메시지로정확하게매핑하기위한정보등을담고있는 Java 클래스와 WSDL등이여기에포함된다. JEUS 6에서는 wsgen이라는콘솔스크립트를제공하며, 이스크립트는 JEUS_HOME/bin 디렉터리하위에존재한다. 예 ) wsgen cp <classpath> -d <destination_dir> fromjava.server.addnumbersimpl 위와같이명령을실행하면지정한경로에이식가능한산출물이생성됨을확인할수있다. 위스크립트를실행할때 wsdl 옵션을설정하면 WSDL까지생성이가능하나 JAX-WS 2.0에서는웹서비스엔드포인트에 WSDL을포함하지않아도되므로여기서 wsdl 옵션을설정하지않도록주의한다. 다음은이산출물들을묶어서서버에배치하는작업을진행한다. 웹서비스패키징과배치 현재작성하고있는웹서비스를패키징한다는것은서비스구현 Bean과서비스구현 Bean이참조하고있는 Java 클래스와부수적인배치서술자들을 WAR 형식으로묶는것을의미한다. 여기서는이미앞에서작성했던파일인 fromjava.server.addnumbersimpl 클래스와 wsgen 스크립트를통해생성하였던 fromjava.server.jaxws.addnumbers, fromjava.server.jaxws.addnumbersresponse 클래스만을포함한다. 이클래스들은 WEB-INF/classes 하위에포함시키면된다. 패키징할파일이름을 AddNumbers.war로 130 JEUS 설치및시작하기

하여 WAR 패키징을한다음, JEUS 6에배치하려면, JEUS_HOME/webhome/autodeploy에 WAR 모듈을복사해두기만하면된다. 그러면실제이서비스를호출할수있는 HTTP 주소는다음과같다. http://localhost:8088/addnumbers/addnumbers 실제이주소로웹브라우저에서호출하면다음과같이성공적으로웹서비스가배치되어있음을확인할수있다. [ 그림 11.1] 성공적으로배치된 AddNumbers 샘플예제손쉽게실행하기 JEUS 6에서는웹서비스예제를쉽게실행해볼수있는방법을제공한다. 다음과같이 JEUS_HOME\samples\getting_started\webservices\from_java\ 아래에서다음과같이실행하면서비스패키징부터클라이언트실행까지쉽게할수있다. [ 예 11.2] 샘플예제실행 Buildfile: build.xml -pre-init: init: build_server: do-compile: [echo] Compiling AddNumbers... wsgen: setosconditions: settoolunix: 제 11 장웹서비스사용하기 131

settoolwindows: settools: do-wsgen: [echo] wsgen -cp./build/classes -keep -d./build/classes fromjava.server.add NumbersImpl do-package-war: [copy] Copying 16 files to D:\TmaxSoft\jeus6\samples\getting_started\web services\from_java\build\web\web-inf\classes [jar] Building jar: D:\TmaxSoft\jeus6\samples\getting_started\webservic es\from_java\dist\addnumbers.war build: -pre-deploy: deploy: do-deploy: [echo] Deploying./dist/AddNumbers.war... setosconditions: settoolunix: settoolwindows: settools: do-deploy-cmd: [echo] jeusadmin example -Ujeus -Pjeus deploy -absolute-path./dist/addnumber s.war as AddNumbers [exec] using the following application info : [exec] <applicationtype> [exec] <deploy-when-booting>true</deploy-when-booting> [exec] <name>addnumbers</name> [exec] <path>d:\tmaxsoft\jeus6\samples\getting_started\webservices\ from_java\.\dist\addnumbers.war</path> [exec] <deployment-type>component</deployment-type> [exec] <web-component> [exec] </web-component> [exec] <deployment-target> [exec] <all-targets> [exec] </all-targets> [exec] </deployment-target> 132 JEUS 설치및시작하기

[exec] <class-ftp-unit>jar</class-ftp-unit> [exec] </applicationtype> [exec] The WebModule, AddNumbers, is deployed on example_container1 do-deploy-success: getbrowser: launch: [echo] [echo] Trying to launch the browser with the url [echo] http://localhost:8088/addnumbers/addnumbers [echo] [echo] If the above does not work, you may open a browser and cop y and paste the above URL. [echo] build_client: wsimport: setosconditions: settoolunix: settoolwindows: settools: do-wsimport: [echo] wsimport -keep -p fromjava.client -d./build/classes :8088/AddNumbers/addnumbers?wsdl [exec] parsing WSDL... [exec] generating code... http://localhost do-compile: [echo] Compiling AddNumbers... [javac] Compiling 1 source file to D:\TmaxSoft\jeus6\samples\getting_started\ webservices\from_java\build\classes run: [java] ############################################## [java] ### JAX-WS Webservices examples - fromjava ### [java] ############################################## [java] Testing Java class webservices... [java] Success! 제 11 장웹서비스사용하기 133

all: BUILD SUCCESSFUL Total time: 32 seconds 11.1.2. From WSDL 방식 From Java 방식의웹서비스방식이이미작성한 Java RPC 모델을웹서비스로공개하는것이초점이라면 From WSDL 방식의웹서비스는서로간에통신할 SOAP 메시지를먼저정의하고 WSDL를통해그정보를공유한다음, 그정의된메시지타입에맞도록 Java 클래스를생성하는것이초점이라할수있겠다. 일반적인 From WSDL 방식의웹서비스생성은다음과같은과정으로진행된다. 1. 서비스엔드포인트인터페이스 (Service Endpoint Interface) 의생성 2. 서비스엔드포인트인터페이스의구현 3. 웹서비스패키징과배치 서비스엔드포인트인터페이스의생성 이과정에서는이미공개되어있는 WSDL을기반으로웹서비스의 Java 인터페이스파일과 Java 클래스파일들을생성한다. 이때 JEUS 6에서제공하는 wsimport라는콘솔스크립트를사용하고, 그스크립트는 JEUS_HOME/bin이라는위치에존재한다. 다음과같이 "JEUS_HOME\samples\getting_started\webservices\from_wsdl" 디렉터리에서다음과같이실행한다. 예 ) wsimport -keep -p fromwsdl.server -d./build/classes s.wsdl./web/web-inf/wsdl/addnumber 위와같이명령을실행하면, 지정한경로에서비스엔드포인트인터페이스와서비스정의클래스를포함한여러산출물들이생성된다. 이중, 생성된서비스엔드포인트인터페이스는다음과같다. 이렇게생성된서비스엔드포인트인터페이스는 JAX-WS 2.0 런타임에사용될정보들을 Annotation 형태로포함하고있다. [ 예 11.3] <<AddNumbersImpl.java>> package fromwsdl.server; @javax.jws.webservice(endpointinterface = "fromwsdl.server.addnumbersporttype", ws dllocation = "WEB-INF/wsdl/AddNumbers.wsdl", targetnamespace = "urn:addnumbers", servicename = "AddNumbersService", portname = "AddNumbersPort") public class AddNumbersImpl { 134 JEUS 설치및시작하기

} public int addnumbers(int number1, int number2) { } return number1 + number2; 서비스엔드포인트인터페이스의구현 서비스엔드포인트인터페이스가생성이되었다면, 이엔드포인트인터페이스를구현하는실제비즈니스로직을가지고있는서비스구현 Bean을작성한다. 서비스엔드포인트인터페이스를구현한서비스구현 Bean을작성할경우에는 @WebService Annotation을추가해야하며, 이 Annotation은서비스엔드포인트인터페이스를명시한 endpointinterface 멤버를속성으로가지고있어야한다. 웹서비스패키징과배치 웹서비스로공개하기위해 WAR 형태로패키징하는작업은이전의 From Java 방식의웹서비스의패키징및배치작업과유사하다. wsimport 스크립트를통해생성한서비스엔드포인트인터페이스를포함한몇가지의산출물들과서비스구현 Bean을 WEB-INF/classes에위치시키고 WAR 형태로패키징한다. 이때의 WAR 패키지의이름을 AddNumbers.war라고하였을경우, 이를 JEUS 6에배치하게되면다음과같은주소로접근할수있다 (From Java 방식으로이미배치하였다면, context 이름이동일하므로이를제거한후다시배치해야한다 ). http://localhost:8088/addnumbers/addnumbers 실제이주소로웹브라우저에서호출하면다음과같이성공적으로웹서비스가배치되어있음을확인할수있다. [ 그림 11.2] 성공적으로배치된 From WSDL 방식의웹서비스 제 11 장웹서비스사용하기 135