업그레이드 안내서 - tmaxsoft...“제4장 jeus 5에서 6로 업그레이드” jeus 5...

84
JEUS 업그레이드 안내서 JEUS v6.0 Fix#8 Copyright © 2011 TmaxSoft Co., Ltd. All Rights Reserved.

Upload: others

Post on 21-Feb-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

JEUS

업그레이드 안내서

JEUS v6.0 Fix#8

Copyright © 2011 TmaxSoft Co., Ltd. All Rights Reserved.

Page 2: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

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

Page 3: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

내용 목차

안내서에 대하여 ........................................................................................................................... xi

제1장 소개 ................................................................................................................................. 1

제2장 업그레이드 준비 ................................................................................................................ 3

2.1. 주요 변경 사항 및 호환성 노트 ...................................................................................... 3

2.2. 업그레이드 자동화 툴 ................................................................................................... 3

2.3. 업그레이드 절차 ........................................................................................................... 3

2.3.1. 기존 JEUS 백업 ................................................................................................. 3

2.3.2. JEUS 6 설치 ..................................................................................................... 3

2.3.3. 환경변수 변경 ................................................................................................... 4

2.3.4. 불필요한 설정 및 애플리케이션 정리 ................................................................... 4

제3장 JEUS 4.x에서 6로 업그레이드 ........................................................................................... 5

3.1. 개요 ............................................................................................................................ 5

3.2. 업그레이드 툴을 통한 이전 방식 .................................................................................... 5

3.3. 서버 설정 이전 ............................................................................................................. 7

3.3.1. 서버 설정 이전 대상 ........................................................................................... 7

3.3.2. 라이브러리 이전 ................................................................................................ 8

3.3.3. 웹 컨텍스트 설정 ............................................................................................... 9

3.3.4. JSP Java 컴파일러 설정 ..................................................................................... 9

3.3.5. 데이터 소스 Connection Pool 설정 ...................................................................... 9

3.3.6. Lifecycle Listener 클래스 설정 .......................................................................... 13

3.3.7. 로깅 설정 ........................................................................................................ 14

3.3.8. 액세스 로그 설정 ............................................................................................. 14

3.3.9. EJB_HOME 설정 ............................................................................................. 15

3.3.10. SERVLET_HOME 설정 .................................................................................. 15

3.3.11. EAR_HOME 설정 .......................................................................................... 15

3.4. 애플리케이션 이전 ...................................................................................................... 15

3.4.1. 패키징 방식 변경 ............................................................................................. 15

3.4.2. 웹(서블릿) 모듈 ............................................................................................... 46

3.4.3. EJB 모듈 ......................................................................................................... 46

3.4.4. 웹 서비스 ........................................................................................................ 18

3.4.5. 애플리케이션 개별 수정 작업 ............................................................................ 24

3.5. 스크립트 변경 ............................................................................................................ 24

3.5.1. 제공하지 않는 스크립트 ................................................................................... 25

3.5.2. Admin 관련 스크립트들의 통합 ......................................................................... 26

3.5.3. 스크립트 변경 .................................................................................................. 27

3.5.4. 애플리케이션에서 사용하는 스크립트 변경 ........................................................ 27

3.6. 기타 외부 모듈 설정 이전 ............................................................................................ 28

3.6.1. WebT 설정 ...................................................................................................... 28

3.6.2. JTmax 설정 ..................................................................................................... 28

JEUS iii

Page 4: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

3.6.3. 내장 WebtoB 환경이전 ..................................................................................... 29

제4장 JEUS 5에서 6로 업그레이드 ............................................................................................ 31

4.1. 개요 ........................................................................................................................... 31

4.2. 업그레이드 툴을 통한 이전 방식 .................................................................................. 31

4.3. 서버 설정 이전 ........................................................................................................... 32

4.3.1. 서버 설정 이전 대상 ......................................................................................... 33

4.3.2. 라이브러리 이전 .............................................................................................. 34

4.3.3. 세션 서버 설정 변경 ......................................................................................... 34

4.3.4. Persistence Store 설정 변경 ............................................................................. 40

4.3.5. Threshold 설정 변경 ........................................................................................ 43

4.3.6. 변경된 요소 ..................................................................................................... 43

4.3.7. 삭제된 요소 ..................................................................................................... 44

4.4. 애플리케이션 이전 ...................................................................................................... 45

4.4.1. 웹(서블릿) 모듈 ............................................................................................... 46

4.4.2. EJB 모듈 ......................................................................................................... 46

4.5. 스크립트 변경 ............................................................................................................ 46

4.5.1. 제공하지 않는 스크립트 ................................................................................... 46

4.5.2. Admin 관련 스크립트들의 통합 ......................................................................... 47

4.5.3. 스크립트 변경 .................................................................................................. 48

Appendix A. 업그레이드 툴 ...................................................................................................... 49

A.1. 업그레이드 툴 사용법 ................................................................................................. 49

A.2. 업그레이드 툴 설정 .................................................................................................... 49

A.3. JEUS 4.x to 6 업그레이드 툴 Command ...................................................................... 50

A.4. JEUS 4.x to 6 업그레이드 툴 옵션 ............................................................................... 51

A.5. JEUS 5 to 6 업그레이드 툴 Command ......................................................................... 54

A.6. JEUS 5 to 6 업그레이드 툴 옵션 .................................................................................. 55

A.7. 알려진 문제 ............................................................................................................... 57

Appendix B. 주요 변경 사항(4.x to 6) ........................................................................................ 59

B.1. 웹 컨테이너 ............................................................................................................... 59

B.2. EJB ........................................................................................................................... 59

B.3. JDBC ........................................................................................................................ 59

B.4. JMS .......................................................................................................................... 60

B.5. 그 외 변경 사항 .......................................................................................................... 60

B.5.1. 모듈 컴파일 도구 변경 및 기능 향상 .................................................................. 60

B.5.2. 모듈 관련 디렉터리의 통합 ............................................................................... 60

B.5.3. Deploy 방식의 변경 ......................................................................................... 60

B.5.4. 시스템 프로퍼티의 변경 ................................................................................... 60

B.5.5. JEUS_HOME의 제거 ....................................................................................... 61

Appendix C. 주요 변경 사항(5 to 6) ........................................................................................... 63

C.1. 웹 컨테이너 ............................................................................................................... 63

C.2. EJB ........................................................................................................................... 63

iv JEUS 업그레이드 안내서

Page 5: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

C.3. JDBC ........................................................................................................................ 63

C.4. JMS .......................................................................................................................... 63

C.5. 그 외 변경 사항 .......................................................................................................... 64

C.5.1. 시스템 프로퍼티의 변경 ................................................................................... 64

C.5.2. JEUS_HOME의 제거 ....................................................................................... 64

Appendix D. 호환성(Compatibility) 노트 ................................................................................... 65

D.1. 웹 컨테이너 ............................................................................................................... 65

D.2. EJB ........................................................................................................................... 66

D.3. JDBC ........................................................................................................................ 67

D.4. JVM 버전 변경 영향도 ................................................................................................ 67

D.4.1. SUN JVM, HP JVM ......................................................................................... 67

D.4.2. IBM JVM ......................................................................................................... 68

JEUS v

Page 6: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의
Page 7: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

그림 목차

[그림 3.1] HelloWorldService에 대한 웹 서비스 정보 .................................................................... 23

JEUS vii

Page 8: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의
Page 9: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

예 목차

[예 3.1] <<build.xml>> ............................................................................................................... 19

[예 3.2] <<webservices.xml>> .................................................................................................... 21

[예 3.3] <<web.xml>> ................................................................................................................ 22

[예 3.4] <<JEUSMain.xml>> ...................................................................................................... 28

[예 3.5] <<JEUSMain.xml>> ...................................................................................................... 29

JEUS ix

Page 10: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의
Page 11: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

안내서에 대하여

안내서의 대상

본 안내서는 JEUS 이전 버전을 업그레이드 하고자 하는 관리자를 대상으로 한다.

안내서의 제한 조건

본 안내서에서는 Java EE와 Java 스펙에 대한 것은 설명하지 않고, JEUS 관련 내용만 설명한다.

안내서 구성

본 안내서는 총 4개의 장과 4개의 Appendix로 구성된다.

● “제1장 소개”

업그레이드에 대해 간략히 설명한다.

● “제2장 업그레이드 준비”

JEUS 상위 버전으로 업그레이드를 준비할 때 고려해야 하는 사항에 대해 설명한다.

● “제3장 JEUS 4.x에서 6로 업그레이드”

JEUS 4.x 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의 구체적인 변경 과정에

대해서 설명한다.

● “제4장 JEUS 5에서 6로 업그레이드”

JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의 구체적인 변경 과정에 대

해서 설명한다.

● “Appendix A. 업그레이드 툴”

JEUS 6에서 제공하는 업그레이드 툴의 기능과 옵션과 툴을 사용하기 위한 설정들을 설명한다.

● “Appendix B. 주요 변경 사항(4.x to 6)”

JEUS 4.x 환경에서 JEUS 6 환경으로 업그레이드할 때 참고해야 할 주요 변경 사항에 대해서 설명한다.

● “Appendix C. 주요 변경 사항(5 to 6)”

JEUS 5.0 환경에서 JEUS 6 환경으로 업그레이드할 때 참고해야 할 주요 변경 사항에 대해서 설명한다.

● “Appendix D. 호환성(Compatibility) 노트”

호환성과 관련된 중요한 사항에 대해 설명한다.

안내서에 대하여 xi

Page 12: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

안내서 규약

의미표기

프로그램 소스 코드의 파일명<<AaBbCc123>>

Ctrl과 C를 동시에 누름<Ctrl>+C

GUI의 버튼 또는 메뉴 이름[Button]

강조진하게

다른 관련 안내서 또는 안내서 내의 다른 장 및 절 언급" "(따옴표)

화면 UI에서 입력 항목에 대한 설명'입력항목'

메일계정, 웹 사이트하이퍼링크

메뉴의 진행 순서>

하위 디렉터리 또는 파일 있음+----

하위 디렉터리 또는 파일 없음|----

참고 또는 주의사항참고

주의할 사항주의

그림 이름[그림 1.1]

표 이름[표 1.1]

Java 코드, XML 문서AaBbCc123

옵션 파라미터[ command argument ]

‘<’와 ‘>’ 사이의 내용이 실제 값으로 변경됨< xyz >

선택 사항. 예) A|B: A나 B 중 하나|

파라미터 등이 반복되어서 나옴…

xii JEUS 업그레이드 안내서

Page 13: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

시스템 사용 환경

본 안내서는 모든 예제와 환경 구성을 Microsoft Windows™의 스타일을 따랐다. UNIX와 같은 다른 환경

에서 작업하는 사람은 몇 가지 사항만 고려하면 별 무리 없이 사용할 수 있다. 대표적인 것이 디렉터리 구

분자인데, Windows 스타일인 “\”를 UNIX 스타일인 “/”로 바꿔서 사용하면 무리가 없다. 이외에 환경변수도

UNIX 스타일로 변경해서 사용하면 된다.

그러나 Java 표준을 고려해서 문서를 작성했기 때문에, 대부분의 내용은 동일하게 적용된다.

관련 안내서

설명안내서

JEUS의 새로운 기능과 이전 버전의 업그레이드 방법에 대해 기술한

안내서이다.

JEUS 릴리즈 노트

안내서에 대하여 xiii

Page 14: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

연락처

Korea

TmaxSoft Co., Ltd

272-6, Seohyeon-dong, Bundang-gu,

Seongnam-si, Gyeonggi-do, 463-721

South Korea

Tel: +82-31-8018-1000

Fax: +82-31-8018-1115

Email: [email protected]

Web (Korean): http://www.tmax.co.kr

기술지원: http://technet.tmaxsoft.com

USA

TmaxSoft, Inc.

560 Sylvan Avenue Englewood Cliffs, NJ 07632

U.S.A

Tel: +1-201-567-8266

Fax: +1-201-567-7339

Email: [email protected]

Web (English): http://www.tmaxsoft.com

Japan

TmaxSoft Japan Co., Ltd.

5F Sanko Bldg, 3-12-16 Mita, Minato-Ku, Tokyo, 108-0073

Japan

Tel: +81-3-5765-2550

Fax: +81-3-5765-2567

Email: [email protected]

Web (Japanese): http://www.tmaxsoft.co.jp

xiv JEUS 업그레이드 안내서

Page 15: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

China

TmaxSoft China Co., Ltd.

Beijing Silver Tower, RM 1508, 2# North Rd Dong San Huan,

Chaoyang District, Beijing, China, 100027

China

Tel: +86-10-6410-6145~8

Fax: +86-10-6410-6144

Email: [email protected]

Web (Chinese): http://www.tmaxsoft.com.cn

안내서에 대하여 xv

Page 16: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의
Page 17: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

제1장 소개

본 안내서에서는 JEUS 기존 버전을 JEUS 6로 업그레이드하는 데 필요한 지식과 절차, 그리고 방법에 대

해서 설명한다.

현재 본 안내서는 JEUS 4.x 버전과 JEUS 5의 업그레이드에 대해서만 다루며, 더 오래된 버전(3.x)에 대해

서는 다루지 않는다. 필요하다면 3.x 버전은 먼저 수동으로 4.x나 5로 업그레이드를 한 이후에 이 문서를

참고할 수 있다.

업그레이드는 대부분 서버 설정과 애플리케이션 이전의 절차로 이루어진다. 업그레이드의 편이성을 위해

서 JEUS 6에는 이를 지원하기 위한 툴이 제공되며, 많은 부분을 자동으로 처리한다. 하지만, 설치 환경에

따라 특수한 경우에는 자동으로 처리할 수 없는 부분이 존재하며 이런 경우 수동으로 처리해야 한다. 업그

레이드 툴은 서버 설정과 개별 애플리케이션을 단계적으로 이전하는 방식과 전체 과정을 한번에 진행하

는 방식도 지원하므로 사이트의 필요에 따라서 사용할 수 있다.

JEUS 6에서 변경된 주요 사항은 "JEUS 릴리즈 노트"를 참고한다. 기본적으로 Java EE(J2EE) 스펙에 따

라서 작성된 애플리케이션은 하위 호환성을 보장하므로 JEUS용 Descriptor와 같은 외부 설정을 변환하면

거의 그대로 호환이 된다. 하지만, 표준에 벗어나거나 기존 버전에서는 문제가 발생하지 않았지만 원래 잘

못 작성되었던 애플리케이션, 또는 공개되지 않은 내부 JEUS API를 사용하거나 내부 구조를 가정하여 작

성된 애플리케이션인 경우 그대로 동작하지 않을 수 있다. 이는 JEUS 버전 업이 되면서 내부 아키텍처가

변화하거나 유효성(validation) 검사가 더 강화되었기 때문에 발생할 수 있는 현상이다. 이런 경우에는 애

플리케이션을 수정해야 할 수도 있다.

JEUS 5와 JEUS 6는 상호 운영(interoperability)이 가능하기 때문에 별도의 설정 없이 서로 EJB, JMS와

같은 원격 호출이 가능하다. 하지만, JEUS 4와 JEUS 5, 6 사이에는 이것이 보장되지 않는다. 따라서, JEUS

4와 JEUS 6을 동시에 운영할 경우 서로 EJB, JMS 호출이 되지 않으니 단계적으로 업그레이드를 진행할

때는 이런 점을 고려해야 한다.

제1장 소개 1

Page 18: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의
Page 19: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

제2장 업그레이드 준비

본 장에서는 JEUS 상위 버전으로 업그레이드를 준비할 때 고려해야 하는 사항에 대해 설명한다.

2.1. 주요 변경 사항 및 호환성 노트먼저, 업그레이드에 영향을 줄 수 있는 사항을 파악하기 위해 주요 변경 사항들에 대해 파악하는 것이 좋

다. 이를 위해 릴리즈 노트를 참고하여 JEUS 5, 6의 변경 사항을 살펴본다. 이 중에 업그레이드와 꼭 알아

야 할 주요 변경 사항은 “Appendix B. 주요 변경 사항(4.x to 6)”을 참고한다.

하위 호환성(Backward compatibility)과 JDK 업그레이드에 따른 JVM 버전 변경 영향도에 관련된 정보는

“Appendix D. 호환성(Compatibility) 노트”를 참고한다.

2.2. 업그레이드 자동화 툴JEUS 6에서는 구 버전에서 JEUS 6로의 업그레이드를 용이하게 하기 위해 업그레이드 자동화 툴을 지원

한다. 업그레이드 툴을 이용하면 서버 설정 이전과 애플리케이션 이전을 단계적으로 진행하거나 한 번에

진행할 수 있다. 다만, 업그레이드 툴을 이용한 후에도 기존 JEUS의 시스템 프로퍼티(System Properties)

설정에 따라 수작업이 필요할 수 있다.

업그레이드 자동화 툴을 사용한 업그레이드 방식은 다음 장에서 설명하며 사용법에 관한 자세한 사용법

은 “Appendix A. 업그레이드 툴”을 참고한다.

2.3. 업그레이드 절차전체적으로 업그레이드는 다음과 같은 절차로 진행된다.

2.3.1. 기존 JEUS 백업

업그레이드가 실패할 경우를 대비하여 기존 JEUS 설치 파일과 애플리케이션에 대한 백업을 한다. 업그레

이드 툴은 기본적으로 기존 JEUS 설치본을 변경하지 않지만, 외부에 있는 애플리케이션의 경우 변경이

가해질 수 있으므로 반드시 백업을 하도록 한다.

2.3.2. JEUS 6 설치

JEUS 6를 설치한다. JEUS 6를 설치하기 전에 기본적으로 JDK 5 이상이 설치되어 있어야 한다. JEUS 6

를 설치한 후에 기본 설정들이 생기는데 업그레이드할 때 불필요하므로 별도로 백업하거나 삭제하도록

한다.

제2장 업그레이드 준비 3

Page 20: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

특히 JEUS_HOME/config/의 하위 디렉터리들은 백업하기를 권장한다.

2.3.3. 환경변수 변경

● Windows 환경

Windows 환경에서 JEUS 6의 환경변수가 정확하게 설정되었는지 확인하기 위해, 명령 프롬프트에서

"set" 명령을 사용하거나 또는, [시작] > [설정] > [제어판] > [시스템] > [고급] > [환경변수]로 확인한다.

예를 들어, 환경변수 Path는 다음의 정보를 포함하고 있어야 JEUS 6를 수행할 수 있다.

C:\TmaxSoft\JEUS6\bin;C:\TmaxSoft\JEUS6\lib\system;C:\TmaxSoft\JEUS6\webserver\bin

● UNIX 환경

UNIX 환경에서 기존 JEUS의 사용자 환경 파일(Korn 쉘일 경우 .profile, C 쉘일 경우 .cshrc)의 시스템

환경변수는 JEUS 6 환경에 맞게 변경되어야 한다. 예를 들어 JEUS 4.x에서의 사용자 환경 파일의 Path

가 다음과 같을 경우, JEUS 6의 Path 설정이 적용되도록 JEUS 4.x의 Path를 주석처리하거나 또는 삭

제한다.

#PATH="/user/jeus4/bin:/user/jeus4/lib/system:/user/jeus4/webserver/bin:${PATH}"

PATH="/user/jeus6/bin:/user/jeus6/lib/system:/user/jeus6/webserver/bin:${PATH}"

또한, 사용자 환경 파일에 기존 JEUS의 경로가 설정되어 있는 환경변수가 있다면 이를 JEUS 6 경로로

수정해야 한다.

2.3.4. 불필요한 설정 및 애플리케이션 정리

먼저, 기존 JEUS에서 업그레이드할 때 불필요한 설정이나 불필요한 애플리케이션들은 제거한다.

예를 들어, JEUS 4.x에는 다음의 경로에 sample로 petstore가 들어있는데, 이를 변환하는 데는 시간이 많

이 소요되므로 삭제하는 것이 좋다.

c:\TmaxSoft\JEUS4.x\webhome\ear_home

4 JEUS 업그레이드 안내서

Page 21: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

제3장 JEUS 4.x에서 6로 업그레이드

본 장에서는 JEUS 4.x 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의 구체적인 변

경 과정에 대해서 설명하며 업그레이드 툴이 지원 가능한 설정에 대해 업그레이드 툴의 사용을 설명한다.

주로 업그레이드 툴(upgradetool)을 이용하여 자동으로 이전하는 방법을 설명하며, 수동으로 해야 하는

부분이나 관련되어 알아야 할 사항에 대해서도 설명한다.

3.1. 개요업그레이드 절차에서 설명한 단계 중에 업그레이드 툴(upgradetool)은 서버 설정 이전과 애플리케이션 이

전을 자동화한 툴이다. 서버 설정 이전은 노드 설정 디렉터리 아래에 존재하는 설정(XML 및 기타 파일)들

을 JEUS 6의 형식에 맞도록 변환하여 JEUS 6의 각 디렉터리에 저장하며, 애플리케이션 이전은 JEUS 4.x

에 등록되어 있는 애플리케이션들을 JEUS 6에 맞게 변환하여 JEUS 6로 이전한다.

현재 업그레이드 툴에서는 한 번에 모든 변환을 처리하거나, 서버 설정을 변환하고 애플리케이션을 이전

하는 2단계 변환, 그리고 각 애플리케이션 종류별로 변환하는 방식을 모두 지원하고 있다. 그 외에 각각의

애플리케이션 하나를 변환하는 방식도 지원한다.

3.2. 업그레이드 툴을 통한 이전 방식업그레이드 툴(upgradetool)의 자세한 사용법 및 옵션은 “Appendix A. 업그레이드 툴”에 설명되어 있으며

본 절에서는 간단한 사용법을 소개한다.

업그레이드 툴에서는 기본적으로 '-jeus4home' 옵션만을 사용하여 이전을 진행할 수 있으며 JEUS 4.x에

서 기본적으로 주어진 EJB_HOME, SERVLET_HOME과 같은 디렉터리가 아닌 특정한 디렉터리를 지정

해서 사용하고 있거나 특수한 설정을 사용하고 있을 경우에 각 옵션을 지정하여 사용할 수 있다.

JEUS 4.x의 전체 서버 설정과 애플리케이션을 JEUS 6 환경으로 이전하기 위해서 다음과 같이 명령을 실

행한다.

upgradetool4to6 all -jeus4home JEUS_4_HOME_PATH

업그레이드 툴을 이용하여 JEUS 4.x 버전을 이전할 때 출력되는 메시지들은 현재 진행 상황과 사용자가

추후에 직접 수동으로 적용해야 하는 부분에 대한 안내가 있다. 현재 진행 상황은 현재 어떤 작업을 진행

중인지 표시하는 것이고 사용자가 추후에 적용해야 하는 부분은 대부분 <enable-interop>과 같은 4.x 버전

에서는 시스템 프로퍼티로 설정되었지만 현재는 스키마에 포함되어 XML에 설정하도록 되어있는 부분들

을 말한다. 수행한 결과에 대한 로그는 JEUS 6의 'logs\upgradetool_xxx.log' 파일에 좀 더 자세히 남으니

완료 후에 확인하도록 한다.

다음은 업그레이드 툴을 이용하여 단계적으로 이전하는 방법에 대해서 설명한다.

제3장 JEUS 4.x에서 6로 업그레이드 5

Page 22: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

서버 이전

서버 설정만 이전하기 위해서는 다음과 같이 진행한다.

upgradetool4to6 serverconf -jeus4home JEUS_4_HOME_PATH

이 명령을 실행하면 JEUS 4.x에서 사용하던 설정이 포함된 XML 파일들이 생성된다.

업그레이드 툴에서 서버 설정은 한번에 이전된다. 이는 서버 설정에서 JEUS 4.x에서는 WEBMain.xml이

나 EJBMain.xml에 각각 부팅할 때 배치될 애플리케이션이 등록되어 있는데 반해 JEUS 6에서는

JEUSMain.xml로 통합되다. 그 외에도 데이터 소스와 같은 항목들이 JEUSMain.xml로 옮겨지는 등의 변

경 사항이 있어 각각의 XML만을 변환해서는 정확한 이전이 되지 않기 때문이다. 업그레이드 툴의 더 자세

한 옵션에 대해서는 “Appendix A. 업그레이드 툴”을 참조한다.

애플리케이션 이전

업그레이드 툴을 이용하여 애플리케이션들을 이전할 수 있다.

업그레이드 툴을 이용하면 전체 애플리케이션을 한번에 이전할 수도 있고, 애플리케이션이 많거나 전체

이전이 잘 진행되지 않는 경우에는 애플리케이션 타입별로 더 세분화하여 단계적으로 진행할 수 있다.

전체 애플리케이션을 한번에 이전하기 위해서는 다음과 같이 진행한다.

upgradetool4to6 regapp-all -jeus4home JEUS_4_HOME_PATH -ejbclassloading JAR | DIR

이 명령을 실행하면 JEUS 4.x에서 사용하던 애플리케이션들이 기본적으로는 JEUS 6의

APP_HOME(JEUS_HOME\webhome\app_home)에 생성된다. 이를 변경할 경우에는 옵션이나 환경변수,

프로퍼티 파일을 이용하여 APP_HOME을 변경하면 변경된 값으로 이동된다. 또한 웹(서블릿) 모듈이나

ejbclassloading 모드를 DIR모드로 사용하던 EJB 모듈과 같은 경우는 APP_HOME이 아닌 다른 디렉터리

에 생성될 수 있는데 이는 다음에 설명한다.

JEUS 4.x에서 사용하던 ejbclassloading 모드는 DIR 모드와 JAR 모드가 있다. 이에 대한 자세한 설명은

“3.4.3. EJB 모듈”을 참조한다.

업그레이드 툴에서는 이외에도 애플리케이션 타입별로 단계적으로 이전 작업을 진행할 수 있다. 애플리

케이션을 단계적으로 이전하기 위해서는 regapp-ejb, regapp-web, regapp-ear 명령어를 사용해야 한다.

애플리케이션을 단계적으로 이전하는 방법은 다음과 같다.

upgradetool4to6 regapp-ejb -jeus4home JEUS_4_HOME_PATH -ejbclassloading JAR | DIR

EJB_HOME에 있는 EJB 모듈들을 모두 이전한다. 이전하는 방식은 -ejbclassloading의 값에 따른다.

upgradetool4to6 regapp-web -jeus4home JEUS_4_HOME_PATH

SERVLET_HOME에 있는 웹(서블릿) 모듈들을 모두 이전한다. 이전하는 방식에 대한 자세한 설명은 “3.4.2.

웹(서블릿) 모듈”을 참고한다.

upgradetool4to6 regapp-ear -jeus4home JEUS_4_HOME_PATH

6 JEUS 업그레이드 안내서

Page 23: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

EAR_HOME에 있는 EAR 모듈들을 모두 이전한다. EAR 모듈을 이전하면 내부에 있는 JAR나 WAR에 포

함된 JEUS DD 파일들을 모두 변환한 후 다시 패키징한다. application.xml Descriptor는 변환할 부분이 없

으므로 그대로 둔다.

upgradetool4to6 regapp-misc -jeus4home JEUS_4_HOME_PATH

JEUS 4.x의 DEPLOY_HOME에 있는 모듈을 JEUS 6의 AUTODEPLOY 디렉터리로 이전한다. 모듈의 종

류는 상관없이 내부에 있는 모든 모듈이 이전된다.

또한, 업그레이드 툴에서는 JEUS 4.x 형식으로 패키징된 애플리케이션이 있는 경우 이를 개별적으로 변

환하는 기능을 제공한다. 애플리케이션을 변환하는 방법은 다음과 같다.

upgradetool4to6 app -src SOURCE_MODULE_PATH -target TARGET_MODULE_PATH

-jeus-dd DESCRIPTOR_FILE_PATH

이 경우 모듈의 종류가 EJB인지 웹(서블릿)인지 EAR인지 가리지 않고 -jeus-dd 옵션에 설정된 Descriptor

파일을 변환하여 포함한 JEUS 6에서 배치할 수 있는 모듈을 TARGET_MODULE_PATH에 생성한다.

각 이전 단계에 대한 더 자세한 정보는 다음 절에서 설명한다.

3.3. 서버 설정 이전서버 설정 이전이란 서버의 설정을 구성하는 XML 파일 등을 변환하여 이전하는 동작을 말하며,

JEUSMain.xml, EJBMain.xml, WEBMain.xml, JMSMain.xml, accounts.xml, policies.xml와 같은 설정 파

일을 포함한다.

서버 설정 이전을 완료했을 때 JEUSMain.xml에 배치될 애플리케이션이 등록되어 있을 경우 이 애플리케

이션들이 모두 이전되어 있지 않다면 애플리케이션을 찾을 수 없다는 예외가 발생할 수 있다. 이런 예외

발생은 애플리케이션이 준비되지 않았음을 사용자에게 알려주기 위한 관점에서 정상적인 상황이므로 애

플리케이션을 이전하고 나면 사라진다.

3.3.1. 서버 설정 이전 대상

서버 설정 이전의 경우, 변환이 필요한 파일들은 다음과 같다. 이 중 JEUSMain.xml과 각 엔진 설정 파일

들은 각자 자신이 있던 위치에 변환되어 옮겨야한다. accounts.xml과 policies.xml은 JEUS 4.x의 file-

realm.xml을 변환하여 계정 관련 항목은 accounts.xml로 정책 관련은 policies.xml로 이전된다.

● JEUS_4_HOME\config\{nodename}\JEUSMain.xml

→ JEUS_6_HOME\config\{nodename}\JEUSMain.xml

● JEUS_4_HOME\config\{nodename}\{ejb_engine}\EJBMain.xml

→ JEUS_6_HOME\config\{nodename}\{ejb_engine}\EJBMain.xml

● JEUS_4_HOME\config\{nodename}\{servlet_engine}\WEBMain.xml

→ JEUS_6_HOME\config\{nodename}\{servlet_engine}\WEBMain.xml

● JEUS_4_HOME\config\{nodename}\{servlet_engine}\webcommon.xml

제3장 JEUS 4.x에서 6로 업그레이드 7

Page 24: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

→ JEUS_6_HOME\config\{nodename}\{servlet_engine}\webcommon.xml

● JEUS_4_HOME\config\{nodename}\{servlet_engine}\web.xml

→ JEUS_6_HOME\config\{nodename}\{servlet_engine}\web.xml

● JEUS_4_HOME\config\{nodename}\{jms_engine}\JMSMain.xml

→ JEUS_6_HOME\config\{nodename}\{jms_engine}\JMSMain.xml

● JEUS_4_HOME\config\{nodename}\file-realm.xml

→ JEUS_6_HOME\config\{nodename}\security\SYSTEM_DOMAIN\accounts.xml

→ JEUS_6_HOME\config\{nodename}\security\SYSTEM_DOMAIN\policies.xml

다음의 파일들은 변환될 필요는 없지만 해당 디렉터리로 복사되어야 한다. security.key는 3DES 암호화

알고리즘을 사용한 적이 없다면 존재하지 않을 것이다. 3DES 알고리즘을 사용했을 경우 암호화된 패스워

드는 그대로 이동할 수 없고 JEUS 6의 encryption 툴을 이용하여 변환해야 한다. 필요할 경우 keystore는

sslkeystore, trustore는 ssltrustore의 이름을 변경해서 사용해야 한다. 일반적으로는 sslkeystore와

ssltruststore가 우선된다.

● JEUS_HOME\config\{nodename}\security\security.key

● JEUS_HOME\config\{nodename}\truststore

● JEUS_HOME\config\{nodename}\keystore

● JEUS_HOME\config\{nodename}\sslkeystore

● JEUS_HOME\config\{nodename}\ssltruststore

서버를 이전할 때 주의해야 할 점은 JEUS 4.x에서는 각 엔진의 설정 파일에 있던 내용들 중 일부가 JEUS

6에서는 JEUSMain.xml로 옮겨졌다는 점이다. 대표적으로는 기동할 때 배치되는 애플리케이션과 데이터

소스 Connection Pool 설정의 등록이 있다.

JEUS 4에서는 기동할 때 배치되는 애플리케이션을 등록할 경우, 웹(서블릿) 모듈은 서블릿 엔진에, EJB

모듈은 EJB 엔진에 등록하는 등 각각의 모듈의 종류에 맞는 엔진에 등록되었으나 이들은 모두 JEUSMain.xml

의 <appilcation> element로 옮겨진다. 데이터 소스 Connection Pool의 설정에 대해서는 아래에서 다시 설

명한다.

업그레이드 툴을 사용하면 이 설정들은 자동으로 변환되며 보안에 필요한 security.key와 keystore, truststore

와 같은 파일들도 필요한 위치로 옮겨준다.

3.3.2. 라이브러리 이전

JEUS 4.x의 애플리케이션에서 사용하는 사용자 클래스 파일 및 라이브러리들을 다음의 JEUS 6 경로로

복사한다.

● JEUS_4_HOME\lib\application

→ JEUS_6_HOME\lib\application

또한, JDBC 드라이버 파일을 JEUS 6의 경로로 복사한다.

8 JEUS 업그레이드 안내서

Page 25: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

● JEUS_4_HOME\lib\datasource

→ JEUS_6_HOME\lib\datasource

위의 라이브러리와 JDBC 드라이버 파일들은 수동으로 복사해 주어야 한다. 그 외에 사용자가 추가한 라

이브러리가 존재할 경우에도 수동으로 복사할 필요가 있다.

3.3.3. 웹 컨텍스트 설정

JEUS 4.x에서 웹 모듈은 WEBMain.xml에 <context-name>으로 등록하며, 해당 jeus-web-dd_<con

textname>.xml의 <docbase>가 컨텍스트의 경로 정보를 가지고 있다. JEUS 6에서는 JEUSMain.xml에 웹

모듈을 등록하여 이용하므로, 다음과 같이 매핑하여 이용한다.

● JEUS 4.x WEBMain.xml의 <context-name>

→ JEUS 6 JEUSMain.xml의 <application><name>

● JEUS 4.x jeus-web-dd_<context-name>.xml의 <docbase>

→ JEUS 6 JEUSMain.xml의 <application><path>

자세한 설명은 “3.4.2. 웹(서블릿) 모듈”을 참고한다.

3.3.4. JSP Java 컴파일러 설정

JEUS 6에서는 JSP Java 컴파일러가 변경되었기 때문에 JEUS 4.x에서는 에러가 발생하지 않으나, JEUS

6에서는 JSP 소스에서 존재하지 않는 패키지를 import할 때 에러가 발생할 수 있다. 이 문제를 해결하기

위해서는 JSP 소스를 수정하거나, 수정 없이 JEUS 6의 JSP Java 컴파일러를 JEUS 4.x와 동일한

"sun.tools.javac"로 설정한다.

● JEUS 4.x 디폴트 Java 컴파일러

<jsp-engine>

<java-compiler>sun.tools.javac</java-compiler>

</jsp-engine>

● JEUS 6 디폴트 Java 컴파일러

<jsp-engine>

<java-compiler>com.sun.tools.javac</java-compiler>

</jsp-engine>

3.3.5. 데이터 소스 Connection Pool 설정

JEUS 4.x에서 데이터 소스 방식의 Connection Pool을 사용했을 경우, JEUS 6의 데이터 소스 방식으로 거

의 그대로 이전하면 된다. 기존 WEBMain.xml의 db-connection-pool 설정(이하 웹 설정 Pool)은 더 이상

제3장 JEUS 4.x에서 6로 업그레이드 9

Page 26: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

지원되지 않기 때문에 JEUSMain.xml에 데이터 소스 방식으로 변경해야 한다. 이 두 가지 방식 모두 업그

레이드 툴에서 자동으로 변환된다.

웹 설정 Pool의 경우 Connection을 얻는 방식이 달라지기 때문에 애플리케이션을 기본적으로 수정해야

한다. 이를 위해서 JEUS 6에서는 이에 대한 어댑터를 제공하며 다음의 절차를 따르면 애플리케이션 소스

를 변경하지 않고도 데이터 소스를 사용할 수 있다. 하지만, 가능하다면 데이터 소스 방식으로 애플리케이

션을 수정하는 것을 권장한다.

● WEBMain.xml의 db-connection-pool 설정을 데이터 소스 설정으로 변경

예를 들어, JEUS 4.x WEBMain.xml의 db-connection-pool 설정이 다음과 같은 경우

<db-connection-pool>

<pool-name>ClientPool</pool-name>

<pool-type>shared</pool-type>

<pooling-rule>queue</pooling-rule>

<connection-url>jdbc:mysql://localhost:3306/tmax</connection-url>

<connection-argument>user=jeus;password=jeus</connection-argument>

<driver-class-name>org.gjt.mm.mysql.Driver</driver-class-name>

<dynamic-increment>true</dynamic-increment>

<close-long-active-connection>true</close-long-active-connection>

<max-active-time>300</max-active-time>

<max-use-count>10</max-use-count>

<db-pool-control>

<min>5</min>

<max>10</max>

</db-pool-control>

</db-connection-pool>

JEUS 6의 데이터 소스 설정은 2가지를 선택할 수 있는데 WEBMain.xml의 <db-connection-pool> Pool

에서 사용하던 드라이버 매니저(DriverManager) 클래스와 JEUS에서 제공하는 BlackboxConnection

PoolDataSource를 사용하는 방법, 그리고 해당 데이터베이스 벤더에서 제공하는 JDBC 드라이버의

ConnectionPoolDataSource(이하 CPDS)를 이용하는 방법이다.

BlackboxConnectionPoolDataSource를 사용하는 방법이 쓰이고 있는 것으로 파악되는데 이는 권장하

지 않는 방법이다. 왜냐하면 Connection Pooling을 가정하지 않은 드라이버 매니저의 커넥션을 가져와

서 계속 close하지 않고 사용해야 하기 때문에 드라이버 구현에 따라서 Connection이 끊긴다던지, auto-

commit 처리가 예상과 다르게 될 수 있는 문제가 있기 때문이다. 따라서 1차적으로 벤더에서 제공하는

JDBC 드라이버의 ConnectionPoolDataSource를 이용하도록 한다.

위의 예에서는 MySQL을 사용하고 있으므로 MySQL JDBC 드라이버(Connector/J)의 CPDS 설정을 이

용해서 앞의 설정을 JEUS 6에서 사용하기 위해 변환한 예는 다음과 같다.

<database>

<vendor>others</vendor>

<export-name>ClientPool</export-name>

<data-source-class-name>

com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource

</data-source-class-name>

10 JEUS 업그레이드 안내서

Page 27: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

<data-source-type>ConnectionPoolDataSource</data-source-type>

<property>

<name>URL</name>

<type>java.lang.String</type>

<value>jdbc:mysql://localhost:3306/tmax</value>

</property>

<property>

<name>User</name>

<type>java.lang.String</type>

<value>jeus</value>

</property>

<property>

<name>Password</name>

<type>java.lang.String</type>

<value>jeus</value>

</property>

<connection-pool>

<pooling>

<min>5</min>

<max>10</max>

<period>3600000</period>

</pooling>

</connection-pool>

</database>

각 벤더별 CPDS 설정, 특히 CPDS를 구현한 <data-source-class-name>, 필요한 프로퍼티는 각 벤더에

서 제공하는 문서를 참고한다.

만약 위의 예처럼 오픈 소스 드라이버를 이용했는데 해당 오픈 소스에서 CPDS에 지원하지 않거나, 부

득이 유지해야 하는 경우에는 BlackboxConnectionPoolDataSource를 사용한다.

<database>

<vendor>others</vendor>

<export-name>ClientPool</export-name>

<data-source-class-name>

jeus.jdbc.driver.blackbox.BlackboxConnectionPoolDataSource

</data-source-class-name>

<data-source-type>ConnectionPoolDataSource</data-source-type>

<property>

<name>DriverClassName</name>

<type>java.lang.String</type>

<value>org.gjt.mm.mysql.Driver</value>

</property>

<property>

<name>URL</name>

<type>java.lang.String</type>

<value>jdbc:mysql://localhost:3306/tmax</value>

</property>

제3장 JEUS 4.x에서 6로 업그레이드 11

Page 28: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

<property>

<name>User</name>

<type>java.lang.String</type>

<value>jeus</value>

</property>

<property>

<name>Password</name>

<type>java.lang.String</type>

<value>jeus</value>

</property>

<connection-pool>

<pooling>

<min>5</min>

<max>10</max>

<step>1</step>

<period>3600000</period>

</pooling>

</connection-pool>

</database>

● 에플리케이션에서 사용하는 URL 설정을 변경한다. 반드시 "jdbc:jeus:pool:"로 시작해야 한다.

다음과 같이 기존에 웹 설정 Pool을 사용하고 있을 경우

Driver myDriver = (Driver)Class.forName("jeus.jdbc.pool.Driver").newInstance();

Connection conn = myDriver.connect("jdbc:jeus:pool:ClientPool");

위에서 설정한 export-name인 ClientPool을 데이터베이스 접속 URL의 마지막에 입력한다.

위와 같이 소스 수정 없이 변경할 수 있는데, 이 방식은 내부적으로 JNDI를 통해서 호출하여 동작하게

된다.

참고

이것은 JVM에서 제공하는 java.sql.DriverManager 클래스를 통해서 데이터 소스의 getConnection

을 호출하는 방식이다. 그런데 java.sql.DriverManager는 항상 Class Lock을 설정하기 때문에 서로

다른 데이터 소스에 대한 커넥션 요청이라도 모두 serialized되는 문제가 있다. 또한 Oracle JDBC 드

라이버를 사용할 경우 하위 버전에서는 Dead Lock이 발생할 수 있으므로 9.0.1.5, 9.2.0.4, 10.1.0.2

버전 이상의 드라이버를 사용해야 한다.

소스 수정이 가능하다면 다음과 같이 InitailContext를 이용하여 JNDI서버에 직접 Lookup하여 커넥션을

얻는 소스로 수정하는 것을 권고한다.

InitialContext ic = new InitialContext();

DataSource ds = (DataSource)ic.lookup("ClientPool");

Connection con = ds.getConnection();

12 JEUS 업그레이드 안내서

Page 29: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

3.3.6. Lifecycle Listener 클래스 설정

JEUS 4.x의 웹 및 EJB 엔진에 설정되던 startup, shutdown 클래스 설정은 JEUSMain.xml의 Lifecycle Lis

tener 설정으로 변경되었다.

Lifecycle Listener의 경우에는 다음과 같이 여러 가지 시점에 Callback을 받을 수 있으므로 좀 더 세밀하게

설정할 수 있다.

살명구분

컨테이너가 시작되고 시스템 서비스들이 띄워지기 이전의 시점이다.BOOT

시스템 서비스가 시작되고 애플리케이션들이 디플로이되기 이전의 시점이

다.

BEFORE_DEPLOY

애플리케이션들이 디플로이된 이후의 시점이다.AFTER_DEPLOY

디플로이가 완료되고 실제 서비스 준비가 된 시점이다.READY

JEUS 4.x에서는 이 시점이 startup이 된다.

Down될 때 운영 중인 애플리케이션을 중단하기 이전의 시점이다.BEFORE_UNDEPLOY

JEUS 4.x에서는 이 시점이 shutdown이 된다.

Down될 때 운영 중인 애플리케이션을 중단한 이후의 시점이다.AFTER_UNDEPLOY

클래스 패스기존에는 <context>\WEB-INF\lib, classes 하위에 클래스가 존재해도 되었으나, JEUS 6에서는

JEUS_HOME\lib\application이나 JEUSMain.xml 설정의 컨테이너별 user-class-path에 위치시켜야 한다.

변환 예

JEUS 4.x에서 다음과 같은 설정이 되어있을 경우

<startup-class>

<startup-method>

com.acme.StartUp::start()

</startup-method>

<startup-parameter></startup-parameter>

</startup-class>

JEUS 6에서는 다음과 같이 설정을 변경하여 사용해야 한다.

<lifecycle-invocation>

<class-name>com.acme.StartUp</class-name>

<invocation>

<invocation-method>

<method-name>start</method-name>

</invocation-method>

제3장 JEUS 4.x에서 6로 업그레이드 13

Page 30: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

<invocation-type>READY</invocation-type>

</invocation>

</lifecycle-invocation>

startup 클래스에서의 웹 페이지 호출JEUS 4.x의 startup 클래스에서는 WebtoB-JEUS 간에 연결이 이루어진 후에 startup 클래스가 실행이 되

었으므로, startup 클래스내에서 웹 페이지를 호출하는 경우에는 Lifecycle callback 타입을 READY로 설

정되어야 한다.

3.3.7. 로깅 설정

● 서버 로그

JEUS 4.x의 JEUSMain.xml에 설정한 시스템 로그는 업그레이드 툴을 사용하여 JEUS 6로 환경설정을

이전할 경우, JEUS 6의 JEUSMain.xml에 자동으로 적용된다. JEUS 4.x의 로깅 레벨은 “fatal”, “notice”,

“information” 그리고 “debug” 중 하나로 설정할 수 있는데, JEUS 6는 JEUS 4.x의 로깅 레벨을 그대로

지원한다.

● 웹 컨테이너 로그

JEUS 4.x서버의 WEBMain.xml에 설정한 웹 컨테이너 로그는 업그레이드 툴을 사용하여 JEUS 6로 환

경설정을 이전할 경우 JEUS 6의 WEBMain.xml에 자동으로 적용된다. 그러나 JEUS 4.x에서 설정했던

에러 로그 레벨 중 "test"는 JEUS 6에서 지원하지 않으므로 "FINEST"로 변경하여 사용해야 한다.

3.3.8. 액세스 로그 설정

JEUS 4.x에서는 기본적으로 액세스 로그가 설정이 되나, JEUS 6에서는 별도로 설정이 필요하다.

<logging>

<access-log>

<handler>

<file-handler>

<name>filehandle</name>

<level>FINEST</level>

<valid-day>1</valid-day>

<buffer-size>0</buffer-size>

</file-handler>

</handler>

</access-log>

</logging>

14 JEUS 업그레이드 안내서

Page 31: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

3.3.9. EJB_HOME 설정

JEUS 6에서는 JEUS 4.x에 있던 EJB_HOME이 삭제되었다. ejbclassloading 모드를 JAR로 사용하고 있

었을 경우에는 엔진이나 모듈 내부의 JEUS DD 파일을 JEUS 6에 맞도록 변경하여 패키징한다. 하지만

DIR 모드로 사용하고 있었을 경우에는 먼저 필요한 클래스들을 묶어주는 과정이 필요하다. 혹은 EJB_HOME

을 그대로 JEUS 6의 EJB_HOME(JEUS_HOME\webhome\ejb_home)에 복사하고 <engine-container>의

<user-class-path>에 EJB_HOME을 등록해주는 방법도 있으나 이는 권장하지 않는다.

3.3.10. SERVLET_HOME 설정

JEUS 6에서는 JEUS 4.x에 있던 SERVLET_HOME이 삭제되었다.

주로 JEUS 4.x에서는 웹 모듈들을 SERVLET_HOME 디렉터리 하위에 WAR 압축 파일을 풀어서 사용하

였다. 즉, 각 컨텍스트를 위한 디렉터리들은 컨텍스트 그룹의 docbase 디렉터리 하위에 존재하며, 컨텍스

트 그룹의 docbase 디렉터리는 SERVLET_HOME 디렉터리 하위에 존재하는 구조이다.

JEUS 6에서는 이와 같은 디렉터리 구조가 없어졌으며, APP_HOME에 웹 모듈을 두고 이용하는 구조로

바뀌었다. JEUS 4.x 웹 모듈들의 엔진이나 모듈 내부의 JEUS DD 파일을 JEUS 6에 맞게 변환해주고, 이

를 패키징하면 JEUS 6에서 이용할 수 있다. 좀 더 자세한 JEUS 4.x와 JEUS 6의 웹 모듈을 위한 디렉터리

구조와 JEUS 4.x에서 JEUS 6으로 웹 모듈 변환에 대해서는 “3.4.2. 웹(서블릿) 모듈”에서 설명한다.

3.3.11. EAR_HOME 설정

JEUS 6에서는 JEUS 4.x에 있던 EAR_HOME이 삭제되었다. EAR 모듈들을 이전하려면 내부에 패키징된

EJB와 WEB 모듈들의 JEUS DD 파일들을 JEUS 6에 맞도록 변환하고 패키징한다. EAR 파일들은 일반적

으로 JEUS_HOME\webhome\app_home에 저장된다. EAR_HOME은 따로 지정해줄 필요가 없다.

3.4. 애플리케이션 이전애플리케이션 이전은 JEUS 구 버전에서 동작하던 애플리케이션들을 JEUS 6의 APP_HOME으로 이전하

는 동작을 말한다. 이때 jeus-ejb-dd.xml이나 jeus-web-dd.xml과 같은 애플리케이션 설정 Deploy Descrip

tor(DD)들이 모두 JEUS 6에서 배치될 수 있도록 수정되어야 한다.

애플리케이션 이전이 완료되면 이전된 애플리케이션들은 JEUS 6에서 성공적으로 배치될 수 있어야 한

다.

3.4.1. 패키징 방식 변경

JEUS 4.x에서는 각 모듈에 대한 설정 정보를 담고 있는 JEUS DD 파일들을 각 종류별 엔진 디렉터리에

저장할 수 있었지만 JEUS 6에서는 JEUS DD는 모듈 내의 META-INF나 WEB-INF 디렉터리에 존재해야

한다. 따라서 JEUS 4.x에서 JEUS 6로 애플리케이션을 이전하기 위해서는 각 엔진 디렉터리에 있는 JEUS

DD들을 모듈 내로 옮겨야한다. 이 경우 엔진 디렉터리의 JEUS DD 파일의 이름은 jeus-ejb-dd_<module

제3장 JEUS 4.x에서 6로 업그레이드 15

Page 32: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

name>.xml 또는 jeus-web-dd_<contextname >.xml 이었지만 모듈 내로 옮겨진 후에는 이름을 jeus-ejb-

dd.xml이나 jeus-web-dd.xml로 변경해야 한다. JEUS 6에서는 JAR나 WAR, EAR로 묶인 파일이나 디렉터

리 형태로 풀려있는 Exploded 모듈 2가지 종류를 모두 지원한다. 또한 엔진 디렉터리 하위에 특정한 JEUS

DD 파일을 저장할 필요가 없다.

3.4.2. 웹(서블릿) 모듈

주로 JEUS 4.x에서는 웹(서블릿) 모듈을 SERVLET_HOME 디렉터리에 해당 WAR 압축 파일을 풀어서

사용하며, 컨텍스트 그룹과 컨텍스트에 대해 docbase 디렉터리를 지정하여 사용하는 방식이다. JEUS 4.x

에서는 일반적으로 SERVLET_HOME 디렉터리 하위에 컨텍스트 그룹의 docbase 디렉터리가 존재하며,

컨텍스트 그룹 docbase 디렉터리 하위에 컨텍스트 docbase 디렉터리가 존재하고, 여기에 WAR 압축 파

일을 풀고 하나의 컨텍스트로 WEBMain.xml에 등록하여 이용한다. 컨텍스트 그룹과 컨텍스트의 docbase

디렉터리는 상대 경로뿐 아니라 절대 경로도 이용할 수 있다. 이때 각 웹 모듈에 해당하는 JEUS DD 파일

들이 서블릿 엔진 디렉터리에 jeus-web-dd_<contextname>.xml 파일로 존재해야 한다. JEUS 4.x에서는

각 컨텍스트 그룹에 대해서 컨텍스트 경로(context-path)가 "/"(root)인 디폴트 컨텍스트를 기본적으로 제

공하며, 이는 컨텍스트 그룹의 docbase 디렉터리를 이용한다. 또한, 자동으로 모듈들을 Deploy하고 UnDe

ploy 하는 deploy_home(auto-deploy 디렉터리)를 이용하여 동적으로 WAR 압축 파일을 Deploy 할 수 있

다.

JEUS 6에서는 JEUS 4.x에서의 docbase 디렉터리가 사라졌으며, 각 웹 모듈들은 APP_HOME에 위치하

거나 원하는 위치에 두고 JEUSMain.xml에 등록하여 이용하거나 동적으로 디플로이가 가능하다. JEUS 6

에서는 jeus-web-dd.xml 파일을 해당 웹 모듈 내의 WEB-INF 디렉터리에 가지고 있다. JEUS 6에서는

WEBMain.xml에서 컨텍스트 그룹을 정의하고, 각 웹 모듈들은 JEUSMain.xml에 등록할 때 Deploy Target

을 해당 컨텍스트 그룹으로 설정하여 컨텍스트 그룹에 등록할 수 있다. JEUS 6에서는 JEUS 4.x에서 제공

하였던 디폴트 컨텍스트를 제공하지 않으므로, 필요하면 사용자가 직접 생성하여 사용한다.

JEUS 4.x와 JEUS 6의 웹 모듈에 대한 처리 방법에 차이가 있다.

JEUS 4.x에서 제공하던 웹 모듈을 JEUS 6에서 제공하기 위해서는 다음과 같은 작업들이 필요하다.

● WEBMain.xml에 등록된 웹 모듈들에 대해서 변환한다.

JEUS 4.x에서의 웹 모듈들에 대한 경로 정보가 WEBMain.xml에 등록된 웹 모듈에 대해서만 정확히 알

수 있다. 따라서, WEBMain.xml에 등록된 웹 모듈들에 대해서만 JEUS 6에 맞게 변환하여 이용하며,

JEUS 6의 JEUSMain.xml에 해당 웹 모듈을 등록하여 이용한다.

● JEUS 4.x 웹 모듈에 해당하는 컨텍스트 디렉터리를 JEUS 6로 복사하여 이용한다.

JEUS 4.x에서는 웹 모듈에 대한 컨텍스트 그룹과 컨텍스트 docbase는 상대 경로 또는 절대 경로를 모

두 이용할 수 있다. 앞서 언급한 것과 같이 상대 경로일 경우, JEUS 6의 SERVLET_HOME 디렉터리로

해당 웹 모듈을 복사하여 이용한다. 만약 절대 경로일 경우에는 복사하지 않고 해당 컨텍스트 docbase

디렉터리를 그대로 이용하도록 하며, 이때 해당 위치에 WEB-INF/jeus-web-dd.xml 파일이 생성된다.

16 JEUS 업그레이드 안내서

Page 33: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

● 디폴트 컨텍스트를 위한 디렉터리를 생성한다.

JEUS 4.x에서의 기본적으로 제공하는 디폴트 컨텍스트를 JEUS 6에서 제공하기 위하여, "__DE

FAULT_CONTEXT__" 라는 디렉터리를 컨텍스트 그룹 docbase 디렉터리 하위에 생성한다. 여기에 해

당 컨텍스트 그룹에 등록된 컨텍스트들의 docbase들을 제외한 모든 파일들을 디폴트 컨텍스트를 위한

파일들로 여기고 옮긴다.

해당 디렉터리를 하나의 웹 모듈로 여기고 JEUSMain.xml에 <context-root>를 "/" 값으로 하여 등록한다.

(실제로 디폴트 컨텍스트로 사용하지 않는 디렉터리 또는 파일들이 디폴트 컨텍스트 디렉터리로 옮겨

질 수 있으므로, 변환 후 반드시 기존에 제공하던 컨텍스트를 정상적으로 제공하는지 확인한다. 예를 들

어, 여러 컨텍스트들에서 이용하는 유틸성 클래스들을 컨텍스트 그룹의 docbase 디렉터리, 즉 디폴트

컨텍스트의 docbase 디렉터리에 두고 이용하고 있을 수 있다.)

이와 같이 디폴트 컨텍스트를 위한 디렉터리를 생성하지 않고 기존 JEUS 4.x 컨텍스트 디렉터리 구조

를 그대로 이용하고 싶다면, 시스템 프로퍼티 "generate.default.context.directory"를 "false"로 설정한다.

참고로, JEUS 4.x의 컨텍스트 디렉터리 구조는 각 컨텍스트 그룹에 대해 항상 디폴트 컨텍스트가 존재

하여 컨텍스트 그룹의 docbase 디렉터리에 매핑되는 최상위 컨텍스트 경로("/")에 접근이 가능하며, 이

를 통해 하위의 컨텍스트를 비정상적으로 접근할 수 있는 문제점이 존재한다.

따라서, JEUS 6의 컨텍스트 디렉터리 구조에 맞게 개선하는 것을 기본 정책으로 하였다.

● JEUS 6의 JEUSMain.xml에 웹 모듈을 등록할 때, <context-root>를 이용하여 컨텍스트 경로를 설정

한다.

JEUS 4.x에서는 웹 모듈의 컨텍스트 경로 정보를 WEBMain.xml의 <context-path> 또는 jeus-web-

dd_<contextname>.xml 의 <context-path>로 설정할 수 있다. WEBMain.xml의 <context-path> 값이 우

선 순위가 높으며, 둘 중 하나는 반드시 값이 존재해야 한다. JEUS 6에서는 컨텍스트 경로에 대한 값을

설정하기 위하여, JEUSMain.xml의 <context-root>에 해당 컨텍스트 경로 값을 설정한다.

● JEUS 4.x 웹 모듈이 JEUS 6에서 수행하기 위하여, JEUS 4.x 웹 엔진과 동일한 JSP 엔진을 이용하도

록 jeus-web-dd.xml에 설정한다.

JEUS 6에서는 2가지 종류의 JSP 엔진을 제공하며, JEUS 4.x에서 제공하던 구버전의 JSP 엔진과 새롭

게 이용하고 있는 신버전의 JSP 엔진이 존재한다. JEUS 4.x 웹 모듈은 구버전의 JSP 엔진에서 개발되

고 수행하였던 것이므로, JEUS 6에서 문제없이 운용하기 위해서는 구버전 JSP 엔진을 이용해야 한다.

이를 위해 각 웹 모듈의 jeus-web-dd.xml에 시스템 프로퍼티 설정 기능을 이용하여

"jeus.servlet.jsp.modern"을 "false"로 설정한다.

위와 같은 방법을 통하여, JEUS 4.x 환경에서 수행하던 웹 모듈들을 JEUS 6에서 수행할 수 있게 한다.

3.4.3. EJB 모듈

JEUS 4.x에서는 EJB 모듈에 대해 2가지 방식을 지원한다. ejbclassloading에 따라 DIR 방식과 JAR 방식

이 존재한다.

이 중 DIR 방식은 EJB_HOME에 클래스들을 모아두고 엔진에 Descriptor 파일들을 넣어두는 방식으로 사

용되며 JEUS 6에서는 사라진 방식이다. JEUS 4.x의 EJB를 이 방식으로 사용했을 경우 업그레이드할 때

에는 JEUS 6에 EJB_HOME을 생성하고 그 안에 JEUS 4의 EJB_HOME을 그대로 복사하여 JEUSMain.xml

제3장 JEUS 4.x에서 6로 업그레이드 17

Page 34: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

의 <engine-container>에 <user-class-path>로 등록한 후 JEUS 4.x의 EJB엔진에 포함된 Descriptor 파일

들을 JEUS 6의 APP_HOME에 Exploded 모듈 형태로 생성하여 사용할 수 있다. 이 방법을 사용하면 JEUS

4와 같은 방법으로 EJB를 사용할 수 있지만 JEUS 6에서는 이러한 방식보다는 클래스들을 모듈별로 다시

묶어 사용하는 것을 권장한다. DIR 방식을 그대로 유지할 경우 EJB 모듈 간의 클래스를 공유하므로 충돌

이나 기타 예상하지 못한 문제가 발생할 수 있기 때문이다. 따라서 가능한한 클래스를 모듈별로 다시 묶고

클래스 로딩 모드를 ISOLATED 방식으로 사용하는 것을 권장한다.

업그레이드 툴에서 DIR 방식의 애플리케이션을 이전하기 위해서는 -ejbclassloading 옵션 값을 DIR로 설

정해야 한다.

JAR 방식은 EJB_HOME에 클래스들과 ejb-jar.xml을 함께 JAR 형태로 묶어 넣어두고 엔진에 jeus-ejb-

dd_<modulename>.xml을 넣어두어 배치하는 방식이다. 이는 JEUS 6의 APP_HOME에 jeus-ejb-dd.xml

을 포함한 JAR 형태로 이전된다. JAR 방식을 사용하기 위해서는 -ejbclassloading 옵션 값을 JAR로 설정

해야 한다.

또한 업그레이드 툴에서는 하위 호환성을 위해서 변환할 때 JEUSMain.xml에 클래스 로딩이 기본적으로

SHARED로 선언된다. 이는 이전 버전에서 SHARED가 기본값이었기 때문이다. 하지만 SHARED 방식으

로 사용할 경우 EJB 모듈 간에 클래스를 공유하므로 충돌이나 기타 예상하지 못한 문제가 발생할 수 있기

때문에 모듈들을 ISOLATED 방식으로 다시 패키징하는 것을 권장한다.

참고

JEUS 4.x에서 Fast-Deploy를 위해 Stub 파일과 Skeleton 파일을 생성해서 모듈에 포함되어 있을 경

우 JEUS 6 배치 시에 에러가 발생한다. 그렇기 때문에 JEUS 6의 appcompiler의 -deloldgen 옵션을

사용하여 이전 버전의 Stub 파일과 Skeleton 파일을 삭제하고 다시 생성해야 한다. 현재는 수동으로

진행해야 하며, 추후 업그레이드 툴에서 기능을 지원할 예정이다.

3.4.4. 웹 서비스

3.4.4.1. JAX-RPC 웹 서비스 마이그레이션

JEUS 4 웹 서비스 안내서 3.3에서 작성했던 Java-class JAX-RPC 웹 서비스를 JEUS 6으로 마이그레이션

하는 예를 통해 JAX-RPC 웹 서비스를 마이그레이션하는 과정을 설명한다.

앞으로 <old app home>은 JEUS 4 웹 서비스 안내서 3.3에서 작성한 MyServices.war가 존재하는 디렉터

리를 의미하며, <app home>은 JEUS 6의 웹 서비스를 작성할 최상위 디렉터리이다.

Java 클래스 파일과 WSDL 파일의 이동

<old app home>에서 다음의 명령을 이용하여 JEUS 4의 웹 애플리케이션 Archive 파일의 압축을 푼다.

$jar xvf MyServices.war

압축이 풀리면 <old app home>에는 다음과 같은 파일들이 생성된다.

META-INF/

META-INF/MANIFEST.MF

WEB-INF/

18 JEUS 업그레이드 안내서

Page 35: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

WEB-INF/web.xml

WEB-INF/HelloWorldClassService.wsdl

WEB-INF/server-config.wsdd

WEB-INF/classes/

WEB-INF/classes/hello/

WEB-INF/classes/hello/HelloWorldServiceIF.class

WEB-INF/classes/hello/HelloWorldServiceImpl.class

WEB-INF/classes/hello/deploy.wsdd

WEB-INF/classes/hello/undeploy.wsdd

이 파일들중 Java 클래스 파일과 WSDL 파일을 <app home> 아래의 적절한 위치에 복사한다. Java 클래

스 파일은 <app home>/web/WEB-INF/class 하위로 복사하고, WSDL은 <app home/web/WEB-INF/wsdl

하위에 복사한다. 다음은 예제에 대한 복사 명령이다.

$cp -r <old app home>/WEB-INF/classes <app home>/web/WEB-INF

$cp <old app home>/WEB-INF/HelloWorldClassService.wsdl <app home>/web/WEB-INF/wsdl

Descriptor의 작성

Java 클래스 JAX-RPC 웹 서비스의 작성 중 JEUS 4와 JEUS 6 간에 가장 차이가 나는 부분은 Descriptor

이다. JavaEE 웹 서비스의 표준 Descriptor를 정의한 JSR 109가 JavaEE에 포함된 것이 JEUS 4의 출시

이후이기 때문에 두 버전 모두 WSDL파일과 서블릿 Descriptor(web.xml)가 필요하다. 그러나 JEUS 4의

경우 비 표준 웹 서비스 Descriptor를, JEUS 6의 경우 표준 웹 서비스 Descriptor(webservices.xml)와 Java-

XML 매핑 파일을 요구하는 점에서 다르다.

● Java-XML 매핑 파일과 Java 인터페이스의 생성

먼저, 기존의 WSDL 파일로부터 Java-XML 매핑 파일과 Java 인터페이스를 생성한다. 그 다음 <jeus

home>/sample/common 하위의 파일에 정의되어 있는 common build target들을 이용하여 작성한

build.xml 파일이다.

[예 3.1] <<build.xml>>

<project name="example" default="build" basedir=".">

<property name="is.war.module" value="true" />

<import file="../common/common-build.xml" />

<target name="-post-compile">

<mkdir dir="${build.war.dir}/WEB-INF"/>

<antcall target="wsdl2java">

<param name="wsdl2java.option" value="-import:server -d tmp

-outputmapping ${build.war.dir}/WEB-INF/HelloWorldClassService-mapping.xml

-package hello

${src.web}/WEB-INF/wsdl/$HelloWorldClassService.wsdl" />

</antcall>

제3장 JEUS 4.x에서 6로 업그레이드 19

Page 36: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

</target>

</project>

ant target -post-compile은 먼저 Java 인터페이스가 생성될 디렉터리를 생성한다.

다음으로 common-build.xml에서 정의한 ant target wsdl2java를 부른다. ant target wsdl2java 는 Command

Line 툴인 wsdl2java를 불러 WSDL 파일로 부터 Java-XML 매핑 파일인 <app home>/build/web/WEB-

INF/HelloWorldClassService-mapping.xml 과 Java 인터페이스 파일인 <app home>/tmp/hello/HelloWorld

ServiceIF.java를 생성한다.

참고

wsdl2java의 -package 옵션을 사용하여 생성되는 Java 인터페이스의 패키지가 기존에 구현된 패키

지와 일치하도록 한다. 또한 document/literal 스타일의 SOAP 메시지를 주고받는 웹 서비스의 경우,

JEUS 6의 wsdl2java 툴은 기본적으로 WSDL을 wrapped style로 해석하나 JEUS 4의 ws2java 툴은

그렇지 않다. 따라서 JEUS 4에서 Java 소스로 부터 WSDL을 생성할 때, 일반적인 document/literal

style로 생성하였다면 wsdl2java 툴의 옵션에 -nowrapped 를 설정해야 한다.

build.xml에서 정의한 ant target -post-compile을 부르기 위해 다음의 명령을 실행한다.

$ant compile

● 생성된 Java 인터페이스와 기존의 Java 인터페이스의 비교

기존의 Java 클래스 파일과 WSDL파일을 재사용하기 위해서는 wsdl2java 툴을 이용하여 생성한 Java

인터페이스 파일의 내용과 기존 Java 클래스 파일 중 서비스 정의 인터페이스와 동일해야 한다. 기존

Java 클래스 파일의 소스 코드를 가지고 있는 경우 직접 비교한다. 만약 소스 코드를 가지고 있지 않다

면 JDK의 Javap Command Line 툴을 이용하여 .class 파일로 부터 Java 인터페이스의 정보를 얻어야

한다. 다음은 Javap 툴을 이용하여 Java 인터페이스의 정보를 얻는 명령이다.

$javap -classpath ./web/WEB-INF/classes hello.HelloWorldServiceIF

위 명령을 실행하면 standard output에 정보가 출력된다. 출력된 결과를 <app home>/tmp/hello/Hel

loWorldServiceIF.java의 내용과 비교한다.

만약 두 Java 인터페이스의 내용이 다르다면 기존의 WSDL 파일을 재사용 할 수 없다. 이 경우 기존

Java 클래스로 부터 WSDL 파일을 생성하는 작업부터 다시 시작해야 한다. 이 과정은 "JEUS Web Service

안내서"를 참고한다.

만약, Java 클래스의 소스 파일을 가지고 있다면 JAX-RPC보다 JAX-WS를 이용할 것을 권장한다. JAX-

WS 웹 서비스는 “JEUS Web Service 안내서”의 “제3장 JEUS 웹 서비스 구현”을 참고한다. 소스 파일을

가지고 있지 않은 경우 JAX-RPC를 이용해야 하며 이후 과정은 “JEUS Web Service 안내서”의 “제20

장 JAX-RPC 웹 서비스의 구현”을 참고한다.

● 웹 서비스 Descriptor와 서블릿 Descriptor의 작성

다음으로 JavaEE 웹 서비스 Descriptor인 webservices.xml와 서블릿 Descriptor인 web.xml을 별도로

작성해야 한다. JEUS 4와는 달리 JEUS 6에서는 별도의 툴을 제공하지 않기 때문이다.

webservices.xml을 <app home>/web/WEB-INF/ 디렉터리 아래에 위치시키고 다음과 같이 작성한다.

20 JEUS 업그레이드 안내서

Page 37: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

[예 3.2] <<webservices.xml>>

<?xml version="1.0"?>

<webservices version="1.1" xmlns="http://java.sun.com/xml/ns/j2ee">

<webservice-description>

<webservice-description-name>HelloWorldService</webservice-description-name>

<wsdl-file>WEB-INF/wsdl/HelloWorldClassService.wsdl</wsdl-file>

<jaxrpc-mapping-file>WEB-INF/HelloWorldClassService-mapping.xml</jaxrpc-mapping-file>

<port-component>

<port-component-name>HelloWorldServicePort</port-component-name>

<wsdl-port

xmlns:ns2="http://test.com/hello">ns2:HelloWorldServiceIFPort</wsdl-port>

<service-endpoint-interface>hello.HelloWorldServiceIF</service-endpoint-interface>

<service-impl-bean>

<servlet-link>HelloWorldServlet</servlet-link>

</service-impl-bean>

</port-component>

</webservice-description>

</webservices>

Deploy할 웹 서비스에 대한 설명을 webservices.xml 파일에 명시한다. webservices.xml은 <webservices>

를 Root element로 가지며 하나 이상의 <webservice-description>을 Child element로 가진다.

다음은 각 element에 대한 설명이다.

설명element

하나의 웹 서비스 End-point에 대한 정보를 설정한다.<webservice-description>

<webservice-description-name>, <wsdl-file>, <jaxrpc-mapping-file>,

하나 이상의 <port-component>를 Child element로 설정한다.

명시하는 웹 서비스의 이름을 설명하며 xml 문서 내에서 유일한 이

름을 가져야 한다.

<webservice-description-name>

WSDL 파일의 경로를 명시한다.<wsdl-file>

JAVA-XML 매핑 파일의 경로를 명시한다.<jaxrpc-mapping-file>

웹 서비스가 가지는 하나의 port에 대한 정보를 설정한다.<port-component>

<port-component-name>, <wsdl-port>, <service-endpoint-interface>,

<service-impl-bean>을 Child element로 설정한다.

Port의 이름이며 Parent element인 <webservice-description> element

내에서 유일해야 한다.

<port-component-name>

제3장 JEUS 4.x에서 6로 업그레이드 21

Page 38: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

설명element

QName <WSDL 파일의 targetNamespace의 prefix>:<WSDL 파일

에서 definitions/service/port element의 name attribute>로 명시한다.

<wsdl-port>

기존의 Java 클래스 중 Java 인터페이스의 이름이다.<service-endpoint-interface>

웹 서비스가 서블릿의 형태로 서비스되는 경우 <servlet-link>를, EJB

의 형태인 경우 <ejb-link>를 Child element로 갖는다.

<service-imple-bean>

예제의 경우 서블릿의 형태로 서비스되므로 <servlet-link>를 Child

element로 가지며, 그 내용은 web.xml에서 명세한 <servlet-name>

과 일치해야 한다.

다음으로 web.xml을 <app home>/web/WEB-INF/ 디렉터리 아래에 위치시키고 다음과 같이 작성한다.

[예 3.3] <<web.xml>>

<?xml version="1.0"?>

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">

<servlet>

<servlet-name>HelloWorldServlet</servlet-name>

<servlet-class>hello.HelloWorldServiceImpl</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>HelloWorldServlet</servlet-name>

<url-pattern>/HelloWorldClassService</url-pattern>

</servlet-mapping>

</web-app>

<servlet-name> element의 내용은 webservices.xml의 <servlet-link> element의 내용과 동일하여야 한

다. 또한 <servlet-class>는 기존의 Java 클래스 중 implementation 클래스를 지정한다.

패키징과 Deploy

Java 클래스와 Descriptor들을 작성하고 생성하였다면 .war파일로 패키징한다. 패키징을 하기 위해 다음

의 명령을 실행한다.

$ant package

실행을 완료한 후 <app home>/dist/ 디렉터리에 example.war 웹 애플리케이션 Archive가 생성된 것을 확

인한다.

생성된 example.war를 JEUS 6에 Deploy하기 위하여 다음의 명령을 실행한다.

$ant deploy

22 JEUS 업그레이드 안내서

Page 39: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

확인

디플로이까지 완료했다면 웹 브라우저를 통해 확인이 가능하다.

확인할 주소는 다음과 같다.

http://<host>:<port>/<servlet-context-name>/<servlet url>

본 예제를 로컬 호스트에서 확인할 경우에 주소는 다음과 같다.

http://localhost:8088/example/HelloWorldService

아래의 screenshot은 성공적으로 디플로이가 된 경우 웹 브라우저에서 볼 수 있는 웹 서비스의 정보이다.

[그림 3.1] HelloWorldService에 대한 웹 서비스 정보

3.4.4.2. 메시지 스타일 웹 서비스 마이그레이션

JEUS 4에는 SOAP 메시지를 Java object로 변환하여 처리하는 대신 웹 서비스 메소드에서 직접 다루는

메시지 스타일을 제공한다. 메시지 스타일 웹 서비스의 메소드는 다음과 같은 형태를 가지고 있다.

public element [] method(element [] bodies);

public SOAPBodyelement [] method (SOAPBodyelement [] bodies);

public Document method(Document body);

public void method(SOAPEnvelope req, SOAPEnvelope resp);

JEUS 6의 웹 서비스에서 SOAP 메시지를 직접 다루고 싶은 경우 JAX-WS의 프로바이더 인터페이스를

사용해야 한다.

이 경우 웹 서비스 메소드는 다음의 형태를 가져야 하며 적절한 Java Annotation을 가져야 한다.

public SOAPMessage method(SOAPMessage req)

public Source method(Source req)

제3장 JEUS 4.x에서 6로 업그레이드 23

Page 40: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

따라서 JEUS 4의 메시지 스타일 웹 서비스를 JEUS 6의 JAX-WS 프로바이더 인터페이스로 변경하고자

하면 소스를 수정해야 한다. JAX-WS 프로바이더 인터페이스에 대한 더욱 자세한 설명은 “JEUS Web

Service 안내서”의 “제8장 프로바이더와 디스패치 인터페이스”를 참고한다.

3.4.5. 애플리케이션 개별 수정 작업

● EJB 모듈 개별 수정

JEUS 4.x에서의 EJB 모듈을 JEUS 6로 이전할 경우, 기존 JEUS 4.x 버전에서 생성된 EJB 모듈의 Stub,

Skeleton, 인터페이스 구현 클래스들은 삭제해야 한다.

예를 들어 EJB 모듈이 hello.jar일 때, appcompiler의 기존 Stub, Skeleton을 삭제하고 다시 생성하는 방

법은 다음과 같다.

appcompiler -deloldgen hello.jar

● 클래스 로딩 모드 변경

JEUS 4.x에서 기본 클래스 로딩 모드는 SHARED이기 때문에 웹 모듈과 EJB 모듈 간의 클래스가 서로

공유된다. 하지만 JEUS 6에서는 기본이 ISOLATED이고 이 방식은 애플리케이션 단위로 클래스가 독

립적으로 로딩되기 때문에 서로 공유되지 않으므로, 웹 모듈과 EJB 모듈 간의 클래스를 공유하지 못하

여 ClassNotFound 에러가 발생할 수 있다. 업그레이드 툴을 이용하면 기본적으로 JEUS 6에서 SHARED

클래스 로딩을 사용하도록 설정한다.

또한 다음과 같은 방법으로 해결할 수 있다.

– EAR 패키징

웹 모듈(WAR)과 EJB 모듈(JAR)을 하나의 EAR로 패키징하여 서로 공유가 가능하도록 한다.

– 참조하는 해당 클래스를 각 모듈에 각각 넣는다.

EJB 클래스를 웹 모듈에서 사용할 경우 해당 EJB 클래스를 WEB-INF/classes에 포함시키거나 JAR

파일로 압축하여 WEB-INF/lib에 포함시킨다.

– 클래스로딩 모드를 4.x와 같은 SHARED로 변경한다.

JEUSMain.xml의 <application>의 하위 태그로 <classloading>SHARED</classloading>을 추가한다.

업그레이드 툴에서는 세 번째 방법을 지원하고 있다.

3.5. 스크립트 변경JEUS에서 제공하는 스크립트는 JEUS 4.x와 JEUS 6 모두 JEUS_HOME\bin 디렉터리에 위치한다.

본 절에서는 JEUS 4.x에서 제공되었지만 JEUS 6에서는 제공되지 않는 스트립트 및 다른 스크립트의 기

능으로 통합된 스크립트가 어떤 것인지 있는지, 그리고 별도로 스크립트를 작성한 경우 어떤식으로 수정

해야 하는지 설명한다.

24 JEUS 업그레이드 안내서

Page 41: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

3.5.1. 제공하지 않는 스크립트

다음의 스크립트들은 JEUS 6에서 더 이상 제공하지 않는다.

● clientcontainer

– JEUS 4.x에서 제공하는 애플리케이션 클라이언트 모듈을 사용하기 위해서 제공하는 스크립트이다.

– JEUS 6에서는 appclient가 이 역할을 대신한다.

● ejbcompiler

– JEUS 4.x에서 EJB 모듈의 Stub과 Skeleton을 Deploy 전에 생성하는 스크립트이다.

– JEUS 6에서는 appcompiler로 통합되었다.

● jeus-petstore

– JEUS 4.x에서 Petstore 예제를 사용하기 위한 설정의 JEUS를 시작하기 위해서 제공하는 스크립트이

다.

– JEUS 6에서는 QuickStart 실행하는 경우 Petstore 예제가 포함되어 있다.

● jeusp

– IBM 장비에서 JEUS 4.x를 사용할 때 JEUS_HOME/bin/jeus 대신 이 스크립트를 사용했다.

– JEUS 6에서는 jeus로 통합되었다.

● jmanager

– JEUS 6에서는 JManager를 제공하지 않으므로 삭제되었다.

● jspc2

– JEUS 4.x에서는 jspc, jspc2가 별도로 제공되었지만 JEUS 6에서는 jspc 하나만 남겨졌다.

– 각 스크립트의 자세한 기능은 JEUS 4.x와 JEUS 6 안내서 중 "JEUS Web Container 안내서"를 참조

한다.

● wltojeus

– Weblogic의 설정을 JEUS 4.x에서 사용할 수 있는 설정으로 변환하는 기능을 제공하는 스크립트이다.

– JEUS 6에서는 제공하지 않는다.

● xmlconverter, xmlconverterAPI

– JEUS 3.x의 설정을 JEUS 4.x의 설정으로 변환하기 위해서 사용하는 스크립트이다.

– JEUS 6에서는 제공하지 않으며, JEUS 4.x에서 JEUS 6로 업그레이드를 위한 upgradetool 스크립트

를 제공한다.

● ddinit

– JEUS 6에서는 EJB 관련 설정 파일을 생성해주는 ejbddinit 툴을 별도로 제공한다. 웹 관련 툴은 아직

제공되지 않는다.

제3장 JEUS 4.x에서 6로 업그레이드 25

Page 42: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

3.5.2. Admin 관련 스크립트들의 통합

JEUS 4.x에서는 JEUS에서 제공하는 엔진이나 기능별로 별도의 Admin 툴이 존재하였다. JEUS 6에서는

이런 툴의 기능이 jeusadmin으로 통합되었으며 이에 따라서 기존에 제공되는 Admin 관련 스크립트들은

더 이상 제공하지 않는다. 사용자는 jeusadmin을 이용하여 이전에 각 Admin 툴을 이용하여 수행하던 작

업을 진행할 수 있다.

● 삭제된 Admin 툴의 목록

connectoradmin, dbpooladmin, ejbadmin, securityadmin, smadmin, tmadmin, webadmin, webtadmin

● jeusadmin에서 사용할 수 있는 명령들(자세한 내용은 "JEUS Reference Book" 참조)

[ jeusadmin Commands ]_________________________________________________________

allenglist allnodelist applist boot conlist connect

deploy distribute down downcon dump englist

ftp gc jeusexit jndi jndilist loglevel

mbeanlist meminfo nodelist pidlist redeploy rftp

setcon start startcon stop undeploy

[ EJB ]________________________________________________________________________

beanlist compile moduleinfo

[ DB Pool ]____________________________________________________________________

controlcds createds disableds dsconinfo dsinfo enableds

reconfigds refreshds resyncds shrinkds testdsconfig

[ Transaction ]________________________________________________________________

tmresync txlist

[ Servlet ]____________________________________________________________________

cfg clrstat info setcfg stat ti webreload

webresume websuspend webtob

[ Security ]___________________________________________________________________

addcredential addgroup addprincipal

addsubject addusertogroup assignresource

assignrole authorizeresource authorizerole

checkresource checkrole clearsubjectexpiration

excluderesource excluderole getgroup

getgroupdescription getgroupnames getgroups

getmembersfromgroup getpolicy getpolicyids

getsubject getsubjectnames groupexist

includeresource includerole ismember

locksubject removecredential removegroup

removeprincipal removesubject removeuserfromgroup

savepolicy savesubject setgroupdescription

setpassword setsubjectdescription setsubjectexpiration

26 JEUS 업그레이드 안내서

Page 43: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

unassignresource unassignrole uncheckresource

uncheckrole unlocksubject userexist

[ General ]____________________________________________________________________

exit help p setProperty unsetProperty

3.5.3. 스크립트 변경

● JEUS 엔진 기동 스크립트

JEUS 4.x 엔진을 기동할 때 다음과 같이 One Step Booting 스크립트를 사용했을 경우

jeus -xml -Uadministrator -P<admin_password>

OS가 AIX 장비의 경우 다음의 스크립트를 사용했을 경우

jeusp -xml -Uadministrator -P<admin_password>

JEUS 6 엔진을 기동할 때에는 AIX의 경우에도 다른 플랫폼과 동일한 jeus 스크립트를 다음과 같이 사

용한다. -xml 태그는 더 이상 필요없으며 있어도 무시된다.

jeus -Uadministrator -P<admin_password>

● JEUS 엔진 종료 스크립트

JEUS 4.x 엔진을 종료할 때 다음과 같이 One Step Down 스크립트를 사용했을 경우

jeusadmin {nodename} jeusexit -Uadministrator -P<admin_password>

JEUS 6 엔진을 종료할 때 다음과 같이 스크립트를 변경하여 사용한다.

jeusadmin {nodename} -Uadministrator -P<admin_password> jeusexit

● jeusadmin 스크립트

JEUS 4.x에서의 JEUS 콘솔 관리 툴인 jeusadmin, webadmin, dbpooladmin, ejbadmin, tmadmin 등이

JEUS 6에서는 jeusadmin으로 통합되었다. JEUS 4.x에서 다음과 같이 jeusadmin 스크립트를 사용했을

경우, JEUS 6에서 동일하게 적용하여 사용한다.

jeusadmin {nodename} -Uadministrator -P<admin_password>

3.5.4. 애플리케이션에서 사용하는 스크립트 변경

기존에 Crontab에 등록이 되어 있거나 쉘 스크립트들에서 참조하던 라이브러리의 클래스 패스 경로를 수

정해야 한다.

JEUS 4.x의 EJB 클라이언트에서 사용하는 라이브러리가 JEUS 6에서는 용량이 적은 jclient.jar로 분리되

었으므로 기존에 jeus.jar를 참조하거나 clientcontainer.jar를 참조했던 스크립들은 변경이 필요하다. 물론

jeus.jar를 그대로 참조해도 되지만, 좀 더 가벼운 모듈들만 빼 놓은 것이므로 jclient.jar를 사용하도록 한다.

제3장 JEUS 4.x에서 6로 업그레이드 27

Page 44: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

C:\TmaxSoft\JEUS4\lib\system\jeus.jar

→ C:\TmaxSoft\JEUS6\lib\client\jclient.jar

3.6. 기타 외부 모듈 설정 이전

3.6.1. WebT 설정

webt.properties를 그대로 이용해도 되지만, 다음과 같이 JEUSMain.xml의 <external-source><tmax-

source><tmax> 설정으로 변경하는게 좀 더 편리하다.

[예 3.4] <<JEUSMain.xml>>

<tmax>

<export-name>tmax1</export-name>

<webt-logging>

<level>debug</level>

<valid-day>1</valid-day>

<file-name>/log/jeus/webt.log</file-name>

</webt-logging>

<host-name>127.0.0.1</host-name>

<port>9999</port>

<support-xa>false</support-xa>

<default-charset>euc-kr</default-charset>

<connect-timeout>10000</connect-timeout>

<transaction-block-timeout>30000</transaction-block-timeout>

<header-type>extendedV3</header-type>

<tmax-connection-pool>

<pooling>

<min>10</min>

<max>20</max>

<step>1</step>

<period>600000</period>

</pooling>

</tmax-connection-pool>

</tmax>

3.6.2. JTmax 설정

jTmaxMain.xml 설정을 다음과 같이 JEUSMain.xml의 <external-source><tmax-source><jtmax> 설정으로

변경해야 한다.

28 JEUS 업그레이드 안내서

Page 45: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

[예 3.5] <<JEUSMain.xml>>

<jtmax>

<context-name>JTMAX1</context-name>

<listen-port>8002</listen-port>

<webt-logging>

<file-name>/log/jeus/jtmax.log</file-name>

<level>debug</level>

<valid-day>1</valid-day>

</webt-logging>

<pooling>

<min>10</min>

<max>20</max>

<step>1</step>

<period>600000</period>

</pooling>

<ejb-service>

<name>jtmax_ejb</name>

<export-name>export_jtmaxejb</export-name>

<method-name>call</method-name>

<method-signiture>webt</method-signiture>

</ejb-service>

</jtmax>

3.6.3. 내장 WebtoB 환경이전

기존 JEUS 4.x에서 내장 WebtoB를 사용했을 경우, JEUS 4.x의 WEBMain.xml에 설정된 WebtoB Listener

는 업그레이드 툴을 사용할 때 자동으로 JEUS 6의 WEBMain.xml에 적용된다.

하지만 JEUS 4.x의 내장 WebtoB의 환경 파일은 업그레이드 툴의 변환 대상에 포함되지 않기 때문에, 직

접 환경 파일을 JEUS 6의 내장 WebtoB 경로로 복사해야 한다. 예를 들어, WebtoB의 환경 파일명을 http.m

이라고 했을 때, 다음의 JEUS 6의 WebtoB 경로에 복사한다.

C:\TmaxSoft\JEUS4\webserver\config\http.m

→ C:\TmaxSoft\JEUS6\webserver\config\http.m

환경 파일 복사 후, JEUS 4.x로 경로 설정이 되어있는 부분을 JEUS 6로 변경해야 한다. 예를 들어, JEUS

4.x의 WebtoB 환경 파일이 다음과 같을 경우 다음과 같이 수정한다.

*DOMAIN

webtob1

*NODE

ibmtest WEBTOBDIR="C:\TmaxSoft\JEUS4\webserver",

→ WEBTOBDIR="C:\TmaxSoft\JEUS6\webserver"

SHMKEY = 54000,

제3장 JEUS 4.x에서 6로 업그레이드 29

Page 46: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

DOCROOT="C:\TmaxSoft\JEUS4\webserver\docs",

→ DOCROOT="C:\TmaxSoft\JEUS6\webserver\docs"

PORT = "8080",

LOGGING = "log1",

ERRORLOG = "log2",

JSVPORT = 9000

.....

*URI

uri1 Uri = "/cgi-bin/", Svrtype = CGI

*ALIAS

alias1 URI = "/cgi-bin/", RealPath = "C:\TmaxSoft\JEUS4\webserver\cgi-bin\"

→ RealPath = "C:\TmaxSoft\JEUS6\webserver\cgi-bin\"

*LOGGING

log1 Format = "DEFAULT", FileName = \

"C:\TmaxSoft\JEUS4\webserver\log\access.log", Option = "sync"

→ FileName = "C:\TmaxSoft\JEUS6\webserver\log\access.log"

log2 Format = "ERROR", FileName = \

"C:\TmaxSoft\JEUS4\webserver\log\error.log", Option = "sync"

→ FileName = "C:\TmaxSoft\JEUS6\webserver\log\error.log"

*EXT

htm MimeType = "text/html", SvrType = HTML

위와 같이 JEUS 6로 경로 설정 변경 후 환경 파일(http.m)을 컴파일한다.

각 줄의 마지막 "\"은 환경 파일에서 다음 줄에 계속 내용이 이어진다는 의미로 사용된 줄 구분자(line sep

arator)이다.

30 JEUS 업그레이드 안내서

Page 47: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

제4장 JEUS 5에서 6로 업그레이드

본 장에서는 JEUS 5 버전을 6으로 업그레이드할 때 주의해야할 설정들과 해당 설정들의 구체적인 변경

과정에 대해서 설명하며 업그레이드 툴이 지원 가능한 설정에 대해 업그레이드 툴의 사용을 설명한다.

주로 업그레이드 툴(upgradetool)을 이용하여 자동으로 이전하는 방법을 설명하며, 수동으로 해야 하는

부분이나 관련되어 알아야 할 사항에 대해서도 설명한다.

4.1. 개요업그레이드 절차에서 설명한 단계 중에 업그레이드 툴은 서버 설정 이전과 애플리케이션 이전을 자동화

한 툴이다. 서버 설정 이전은 노드 설정 디렉터리 하위에 존재하는 설정(XML 및 기타 파일)들을 JEUS 6

의 형식에 맞도록 변환하여 JEUS 6의 각 디렉터리에 저장하며, 애플리케이션 이전은 JEUS 5에 등록되어

있는 애플리케이션들을 JEUS 6에 맞게 변환하여 JEUS 6로 이전한다.

현재 업그레이드 툴에서는 한번에 모든 변환을 처리하거나, 서버 설정을 변환하고 애플리케이션을 이전

하는 2단계 변환 방식을 지원하고 있다. 그 외에 각각의 애플리케이션 하나를 변환하는 방식도 지원한다.

4.2. 업그레이드 툴을 통한 이전 방식업그레이드 툴(upgradetool)의 자세한 사용법 및 옵션은 “Appendix A. 업그레이드 툴”에 설명되어 있으며

본 절에서는 간단한 사용법을 소개한다.

업그레이드 툴에서는 기본적으로 -jeus5home 옵션만을 사용하여 이전을 진행할 수 있으며 JEUS 5에서

기본적으로 주어진 APP_HOME, DEPLOY_HOME과 같은 디렉터리가 아닌 특정한 디렉터리를 지정해서

사용하고 있거나 특수한 설정을 사용하고 있을 경우에 각 옵션을 지정하여 사용할 수 있다.

JEUS 5의 전체 서버 설정과 애플리케이션을 JEUS 6 환경으로 이전하기 위해서 다음과 같이 명령을 실행

한다.

upgradetool5to6 all -jeus5home JEUS_5_HOME_PATH

업그레이드 툴을 이용하여 JEUS 5 버전을 이전할 때 출력되는 메시지들은 현재 진행 상황과 사용자가 추

후에 직접 수동으로 적용해야 하는 부분에 대한 안내가 있다. 현재 진행 상황은 현재 어떤 작업을 진행 중

인지 표시하는 것이고 사용자가 추후에 적용해야 하는 부분은 thread-state-notify의 Threshold들이 비율

로 변경된 것과 같은 의미가 변경된 부분이다. 수행한 결과에 대한 로그는 JEUS 6의 logs\up

gradetool_xxx.log 파일에 좀 더 자세히 남으니 완료 후에 확인한다.

다음은 업그레이드 툴을 이용하여 단계적으로 이전하는 방법에 대해서 설명한다.

제4장 JEUS 5에서 6로 업그레이드 31

Page 48: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

서버 이전

서버 설정만 이전하기 위해서는 다음과 같이 진행한다.

upgradetool5to6 serverconf -jeus5home JEUS_5_HOME_PATH

이 명령을 실행하면 JEUS 5에서 사용하던 설정이 포함된 XML 파일들이 생성된다.

업그레이드 툴에서 서버 설정은 한꺼번에 이전된다. 이는 서버 설정 이전은 JEUSMain.xml에 엔진이 선언

되면 그에 해당하는 EJBMain.xml, WEBMain.xml, JMSMain.xml과 같은 엔진 설정들도 함께 존재해야 하

기 때문이며 보안(security)과 관련 xml들도 함께 이전되어야 정확한 이전을 보장할 수 있기 때문이다. 업

그레이드 툴에 대한 더 자세한 옵션에 관해서는 “Appendix A. 업그레이드 툴”을 참조한다.

애플리케이션 이전

다음은 업그레이드 툴을 이용하여 애플리케이션들을 이전하는 방법을 설명한다.

업그레이드 툴을 이용하면 전체 애플리케이션을 한번에 이전할 수도 있고, 애플리케이션이 많거나 전체

이전이 잘 진행되지 않는 경우에는 애플리케이션 타입별로 더 세분화하여 단계적으로 진행할 수 있다.

전체 애플리케이션을 한번에 이전하기 위해서는 다음과 같이 진행한다.

upgradetool5to6 regapp-all -jeus5home JEUS_5_HOME_PATH

이 명령을 실행하면 JEUS 5의 APP_HOME에 있던 애플리케이션들이 기본적으로 JEUS 6의

APP_HOME(JEUS_HOME\webhome\app_home)에 이전되며 DEPLOY_HOME에 있던 애플리케이션들

은 AUTODEPLOY_HOME으로 이전된다. 또한 JEUSMain.xml에 등록된 애플리케이션들은 그대로 남아

있게 된다. 이전된 애플리케이션들은 설정 파일의 변경없이 그대로 복사된 애플리케이션이다. JEUS 5의

애플리케이션들은 기본적으로 설정의 변경없이 JEUS 6에 배치될 수 있다. 하지만 Fast-Deploy가 설정되

어 있거나 MDB, 혹은 JEUS 4.x의 웹 애플리케이션을 그대로 사용하고 있을 경우에는 app 명령을 사용하

여 다시 변환해야 한다. app 명령에 대해서는 다음에 다시 설명한다.

하나의 애플리케이션 혹은 하나의 디렉터리에 포함된 모든 애플리케이션을 변환하는 방법은 다음과 같다.

upgradetool5to6 app -src SOURCE_MODULE_PATH -target TARGET_MODULE_PATH

애플리케이션에 대해서 JEUS 6에서 변경된 부분은 크게 MDB 설정이 있다. 이는 다음에 애플리케이션 이

전 부분에서 다시 설명한다. 또한 JEUS 5는 JEUS 4.x의 웹 모듈 설정을 가능한 그대로 이용할 수 있도록

되어 있었기 때문에 호환을 위해 남겨두었던 설정들이 JEUS 6에서는 삭제되었다. 그렇기 때문에 JEUS

4.x에서 사용했던 웹 모듈의 경우는 변환을 다시 해줄 필요가 있다. 마지막으로 Fast-Deploy 기능을 사용

하고 있던 EJB 모듈은 이전 버전의 Stub과 Skeleton이 남아있어 배치가 실패할 수 있으므로 app 명령에

appcompile 옵션을 추가하여 다시 변환할 필요가 있다.

4.3. 서버 설정 이전서버 설정 이전이란 서버의 설정을 구성하는 XML 파일 등을 변환하여 이전하는 동작을 말하며,

JEUSMain.xml, EJBMain.xml, WEBMain.xml, JMSMain.xml, accounts.xml, policies.xml와 같은 설정 파

32 JEUS 업그레이드 안내서

Page 49: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

일과 keystore, truststore, security.key, web-common.xml, web.xml 등의 변환되지 않지만 그대로 복사되

어야 할 파일들을 포함한다.

서버 설정 이전을 완료했을 때 JEUSMain.xml에 배치될 애플리케이션이 등록되어 있을 경우 이 애플리케

이션들이 모두 이전되지 않았다면 애플리케이션을 찾을 수 없다는 예외가 발생할 수 있다. 이런 예외 발생

은 애플리케이션이 준비되지 않았음을 사용자에게 알려주기 위한 관점에서 정상적인 상황이므로 애플리

케이션을 이전하고 나면 사라진다.

4.3.1. 서버 설정 이전 대상

서버 설정을 이전할 때 변환이 필요한 파일들은 다음과 같다. 이 중 JEUSMain.xml과 각 설정 파일들은 각

자 자신이 있던 위치에 변환되어 이동되어야 한다.

● JEUS_5_HOME\config\{nodename}\JEUSMain.xml

→ JEUS_6_HOME\config\{nodename}\JEUSMain.xml

● JEUS_5_HOME\config\{nodename}\{ejb_engine}\EJBMain.xml

→ JEUS_6_HOME\config\{nodename}\{ejb_engine}\EJBMain.xml

● JEUS_5_HOME\config\{nodename}\{servlet_engine}\WEBMain.xml

→ JEUS_6_HOME\config\{nodename}\{servlet_engine}\WEBMain.xml

● JEUS_5_HOME\config\{nodename}\{jms_engine}\JMSMain.xml

→ JEUS_6_HOME\config\{nodename}\{jms_engine}\JMSMain.xml

● JEUS_5_HOME\config\{nodename}\security\SYSTEM_DOMAIN\accounts.xml

→ JEUS_6_HOME\config\{nodename}\security\SYSTEM_DOMAIN\accounts.xml

● JEUS_5_HOME\config\{nodename}\security\SYSTEM_DOMAIN\policies.xml

→ JEUS_6_HOME\config\{nodename}\security\SYSTEM_DOMAIN\policies.xml

다음의 파일들은 변환될 필요는 없지만 해당 디렉터리로 복사되어야 한다. vhost.xml은 가상 호스트를 사

용하고 있을 경우에만 필요하다. JEUS 6에서는 vhost.xml도 호환이 가능하지만 계속 vhost를 사용할 경

우에는 수동으로 vhost.properties로 이전하기를 권유한다. security.key는 3DES 암호화 알고리즘을 사용

한 적이 없다면 존재하지 않을 것이다. 3DES 알고리즘을 사용했을 경우 암호화된 패스워드는 그대로 이

동할 수 없고 JEUS 6의 encryption 툴을 이용하여 변환하여야 한다. 필요할 경우 keystore는 sslkeystore,

trustore는 ssltrustore의 이름을 변경해서 사용해야 한다. 일반적으로는 sslkeystore와 ssltruststore가 우선

된다.

● JEUS_HOME\config\vhost.xml

● JEUS_HOME\config\{nodename}\security\security.key

● JEUS_HOME\config\{nodename}\truststore

● JEUS_HOME\config\{nodename}\keystore

● JEUS_HOME\config\{nodename}\sslkeystore

제4장 JEUS 5에서 6로 업그레이드 33

Page 50: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

● JEUS_HOME\config\{nodename}\ssltruststore

● JEUS_HOME\config\{nodename}\{servlet_engine}\web-common.xml

● JEUS_HOME\config\{nodename}\{servlet_engine}\web.xml

서버를 이전할 때 주의해야 할 점은 JEUS 5에서는 각 엔진의 설정 파일에 있던 내용들 중 일부가 변경되

었다는 점이다. 대표적으로는 WEBMain.xml의 thread-pool에서 Treshold 관련 설정이 값에서 비율로 변

경된 부분과 세션 서버 설정이 있다.

업그레이드 툴을 사용하면 이 설정들은 자동으로 변환되지만 일부 수동으로 변경해야 하는 부분이 있다.

보안에 필요한 security.key와 keystore, truststore와 같은 파일들도 필요한 위치로 이동한다.

4.3.2. 라이브러리 이전

JEUS 5의 애플리케이션에서 사용하는 사용자 클래스 파일 및 라이브러리들을 다음의 JEUS 6 경로로 복

사한다.

● JEUS_5_HOME\lib\application

→ JEUS_6_HOME\lib\application

또한, JDBC 드라이버 파일을 JEUS 6의 경로로 복사한다.

● JEUS_5_HOME\lib\datasource

→ JEUS_6_HOME\lib\datasource

위의 라이브러리와 JDBC 드라이버 파일들은 수동으로 복사해야 한다. 그 외에 사용자가 추가한 라이브러

리가 존재할 경우에도 수동으로 복사해야 한다.

4.3.3. 세션 서버 설정 변경

본 절에서는 JEUS 5를 JEUS 6로 업그레이드할 때 알아야할 세션 서버 관련 설정에 대해서 설명한다.

JEUS는 크게 3가지 종류의 세션 서버를 사용할 수 있다. 그 방법은 세션 클러스터링을 하지 않는 방법, 중

앙식 세션 서버를 사용하는 방법, 분산식 세션 서버를 사용해서 세션 클러스터링을 하는 방법이다. 그리고

중앙식 세션 클러스터링은 JEUS가 노드 클러스터링을 했는지 여부에 따라서 설정이 조금 달라진다. 반면

에 분산식 세션 클러스터링 설정은 노드 클러스터링 설정이 필수적이다. 다음은 노드 클러스터링을 하지

않았을 경우 중앙식 세션 서버 설정 변경, 노드 클러스터링을 했을 경우 중앙식/분산식 세션 서버 설정 변

경 순으로 진행한다.

4.3.3.1. 노드 클러스터링을 사용하지 않을 경우

중앙식 세션 서버 설정 변경

세션 서버의 설정은 JEUSMain.xml과 WEBMain.xml 파일에 설정해야 할 element가 다르다. 그러므로

JEUSMain.xml과 WEBMain.xml의 설정 변화에 대한 설명이 함께 되어야 한다.

● JEUS 5 JEUSMain.xml

34 JEUS 업그레이드 안내서

Page 51: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

<!-- (2) -Djeus.sessionmgr.<name> 설정 삭제 -->

<command-option>

-Djeus.sessionmgr.session1=xxx -Djeus.sessionmgr.session2=yyy

</command-option>

<session-server>

<resolution>30000</resolution>

<thread-pool>...</thread-pool>

<use-nio>false</use-nio> <!-- (1)삭제 -->

<connection-timeout>120000</connection-timeout>

<read-timeout>120000</read-timeout>

<session-manager> <!-- (1)삭제 -->

<name>session1</name> <!-- (1)삭제 -->

<passivation-to>-1</passivation-to>

<removal-to>-1</removal-to>

<file-db-path>/home/jeus6/logs/sessiondb/central</file-db-path>

<file-db-name>node_name</file-db-name>

<min-hole>1000</min-hole>

<packing-rate>0.5</packing-rate>

<check-to>300000</check-to>

<backup-trigger>1000</backup-trigger>

<backup-name>session2</backup-name> <!-- (3)변경 -->

<operation-to>30000</operation-to> <!-- (1)삭제 -->

</session-manager>

</session-server>

● JEUS 6 JEUSMain.xml

<session-server>

<resolution>30000</resolution>

<thread-pool>...</thread-pool>

<connection-timeout>120000</connection-timeout>

<read-timeout>120000</read-timeout>

<passivation-to>-1</passivation-to>

<removal-to>-1</removal-to>

<file-db-path>/home/jeus6/logs/sessiondb/central</file-db-path>

<file-db-name>node_name</file-db-name>

<min-hole>1000</min-hole>

<packing-rate>0.5</packing-rate>

<check-to>300000</check-to>

<backup-trigger>1000</backup-trigger>

<replicatedn-server>$BACKUP_NODENAME</replicated-server> <!-- (3)변경 -->

</session-server>

(1) 번 element들은 JEUS 6에서 더 이상 사용하지 않는 옵션들이다. <session-manager>의 경우 JEUS

5에서는 복수로 설정할 수 있었지만, JEUS 6에는 하나의 설정만 유지하게 되므로 해당 element가 삭제

되었다.

제4장 JEUS 5에서 6로 업그레이드 35

Page 52: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

(2) JEUS 5에서 백업의 주소를 설정하는 -Djeus.sessionmgr.<session-manager-name> 옵션은 JEUS

6에서 더 이상 사용하지 않는다. 그러므로 해당 옵션을 설정해도 영향을 주지 않게 된다.

(3) JEUS 5에서는 세션 서버의 백업 설정은 <session-server><session-manager><backup-name>에

백업 대상의 매니저 이름을 설정했다. JEUS 6에서는 <session-server><replicated-server>에 설정한다.

하지만 JEUS 5처럼 세션 매니저명이 아니라 백업 대상 JEUS의 노드명을 입력해야 하는 것이 차이점

이다.

다음은 WEBMain.xml의 설정 변경 내용이다.

● JEUS 5 WEBMain.xml

<session-config>

<timeout>30</timeout>

<shared>true</timeout>

<persistent>true</persistent> <!-- (1)변경 -->

</session-config>

<session-cluster>

<session-routing> <!-- (2)변경 -->

<shared> <!-- (3)삭제 -->

<session-server>

<server-name>session1</server-name> <!-- (4)변경 -->

<backup-server-name>session2</bakcup-server-name> <!-- (4)변경 -->

<connect-timeout>120000</connect-timeout>

<read-timeout>120000</read-timeout>

</session-server>

</session-cluster>

<response-header>

<session-id-cookie>...</session-id-cookie> <!-- (5)변경 -->

</response-header>

● JEUS 6 WEBMain.xml

<session-connfig>

<distributable>true</distributable> <!-- (6)추가 -->

<shared>true</shared>

<timeout>30</timeout>

<reload-persistent>true</reload-persistent> <!-- (1)변경 -->

<session-cookie>....</session-cookie> <!-- (5)변경 -->

</session-config>

<session-server>

<primary-server>$PRIMARY_SERVER_NODE_NAME</primary-server> <!-- (4)변경 -->

<backup-server>$BACKUP-SERVER_NODE_NAME</backup-server> <!-- (4)변경 -->

<connect-timeout>120000</connect-timeout>

<read-timeout>120000</read-timeout>

36 JEUS 업그레이드 안내서

Page 53: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

<check-level>set|modified|all</check-level> <!-- (7)변경 -->

</session-server>

(1) <persistent> element의 이름이 <reload-persistent>로 변경되었다. 의미는 같다.

(2) -Djeus.servlet.session.distributed.stickysession 설정으로 변경되었다. <session-routing> 설정을 실

행 스크립트에 -D옵션을 사용하면 된다. 설정은 가능하지만 default로 사용하길 권장한다.

(3) 해당 설정은 JEUS 6에서 삭제되었다.

(4) JEUS 6에서는 <server-name>과 <backup-server-name>의 이름이 JEUSMain.xml의 <session-

manager><name>이름이었는데 JEUS 6에서는 JEUSMain.xml의 <node><name> 값으로 변경되었다.

해당 매니저가 있는 JEUS의 노드명을 설정해야 한다.

(5) JEUS 5에서 <response-header> 내에 있던 <session-id-cookie> 설정은 <session-config><session-

cookie> 설정으로 위치가 변경되었다.

(6) JEUS 6에서는 세션 클러스터링을 사용하기 위해서는 <distributable> 설정을 true로 설정해야 한다.

(7) JEUS 6의 <check-level> 설정은 JEUS 5의 -Djeus.servlet.session.checkModified와 -

Djeus.servlet.session.updateAll 설정 유무에 따라서 적절하게 설정해야 한다. "JEUS Web Container 안

내서"를 참조한다.

4.3.3.2. 노드 클러스터링을 사용할 경우

중앙식 세션 서버 설정 변경

노드 클러스터링을 했을 경우 중앙식 세션 서버의 변경 사항은 노드 클러스터링을 하지 않았을 경우 설정

변경과 대부분 유사하다. 다른 부분은 백업 서버에 대한 내용이다. 변경 방법은 다음과 같다.

● JEUS 5 JEUSMain.xml의 생략 버전

<node>

<session-server>

.................

<session-manager> <!-- (1)삭제 -->

<name>session1</name> <!-- (1)삭제 -->

..............

<backup-name>session2</backup-name> <!-- (1)삭제 -->

</session-manager>

</session-server>

</node>

<node>

<session-server>

.................

<session-manager> <!-- (1)삭제 -->

<name>session1</name> <!-- (1)삭제 -->

..............

<backup-name>session2</backup-name> <!-- (1)삭제 -->

</session-manager>

제4장 JEUS 5에서 6로 업그레이드 37

Page 54: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

</session-server>

</node>

● JEUS 6 JEUSMain.xml

<node>

<name>node1</name>

<session-server>

<type>primary</type> <!-- (2)추가 -->

..............

</session-server>

</node>

<node>

<name>node2</name>

<session-server>

<type>backup</type> <!-- (2)추가 -->

</session-server>

</node>

(1) JEUS 5의 <session-server><session-manager> 와 <session-server><session-manager><name>

은 삭제되었다.

(2) JEUS 6에서는 <session-server>가 설정된 세션 서버 중 하나의 <type>값을 primary로 다른 세션 서

버의 <type>값을 backup으로 설정한다.

그리고 WEBMain.xml의 설정을 다음과 같이 변경한다.

● <session-config><distributable>을 true로 설정

● <session-config><shared>이 옵션은 JEUS 5의 <session-config><shared> 옵션을 유지

분산식 세션 서버 설정 변경

분산식 세션 서버 설정 변경도 JEUSMain.xml과 WEBMain.xml을 변경해야 한다. WEBMain.xml은 중앙식

세션 서버의 설정보다 쉽다.

● JEUS 5 JEUSMain.xml

<session-router-config>

<thread-pool>...</thread-pool>

<use-nio>false</user-nio> <!-- (1)삭제 -->

<connect-timeout>120000</connect-timeout>

<read-timeout>120000</read-timeout>

<backup-trigger>1000</backup-trigger>

<check-to>30000</check-to>

<check-level>set</check-level>

<default-file-db>...</default-file-db>

<session-router>

<servlet-engine-name>engine1</servlet-engine-name> <!-- (2)변경 -->

<file-db>...</file-db>

38 JEUS 업그레이드 안내서

Page 55: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

<backup-session-router>

<node-name>node1</node-name> <!-- (3)변경 -->

<serlvet-engine-name>engine2</servlet-engine-name> <!-- (3)변경 -->

<container-base-port>10012</container-base-port> <!-- (1)삭제 -->

</backup-session-router>

</session-router>

<session-router>

<servlet-engine-name>engine2</servlet-engine-name>

<file-db>...</file-db>

<backup-session-router>

<node-name>node1</node-name>

<serlvet-engine-name>engine1</servlet-engine-name>

<container-base-port>10011</container-base-port>

</backup-session-router>

</session-router>

</session-router-config>

● JEUS 6 JEUSMain.xml

<session-router>

<thread-pool>...</thread-pool>

<connect-timeout>120000</connect-timeout>

<read-timeout>120000</read-timeout>

<backup-trigger>1000</backup-trigger>

<check-to>30000</check-to>

<check-level>set</check-level>

<default-file-db>...</default-file-db>

<session-router>

<engine-name>node_servlet_engine1</engine-name> <!-- (2)변경 -->

<replication-group>node_servlet_engine1</replication-group> <!-- (3)추가 -->

<backup-group>node_servlet_engine2</backup-group> <!-- (3)추가 -->

<file-db>..</file-db>

</session-router>

<session-router>

<engine-name>node_servlet_engine2</engine-name>

<replication-group>node_servlet_engine2</replication-group>

<backup-group>node_servlet_engine1</backup-group>

</session-router>

</session-router>

(1) JEUS 5의 <use-nio>와 <container-base-port>는 삭제되었다.

(2) JEUS 5에서는 컨테이너의 세션 서버를 설정하기 위해서 <servlet-engine-name>에 엔진 이름을 설

정했지만, JEUS 6에서는 <engine-name>에 full 엔진 이름을 설정한다(full 엔진 이름 : <node-

name>_servlet_<engine-name>).

제4장 JEUS 5에서 6로 업그레이드 39

Page 56: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

(3) 백업을 설정하기 위해서 JEUS 5는 <backup-session-router>하위에 <node-name>과 <servlet-engine-

name>을 설정하도록 했다. JEUS 6는 <replication-group>,<backup-group>, <location>의 설정을 바탕

으로 자동으로 해당 컨테이너의 백업 세션 서버를 선택하게 된다. 그렇지만, JEUS 5에서 설정된 컨테

이너로 백업을 설정하기 위해서는 다음과 같은 방법으로 변환하면 가능하다.

– JEUS 6의 <replication-group>의 값을 <engine-name>과 동일하게 설정한다.

– JEUS 6의 <backup-group>의 값을 JEUS 5에서 <node-name>과 <servlet-engine-name>이 나타내는

<engine-name>으로 설정한다.

4.3.4. Persistence Store 설정 변경

본 절에서는 JEUS 5를 JEUS 6로 업그레이드할 때 알아야 할 JMS Persistent Store 관련 설정에 대해서

설명한다.

JEUS 6에서는 JMS의 성능 개선과 XA를 지원하기 위해 Persistent Store를 새롭게 구현하였다. 이에 따라

기존 JEUS 5의 설정은 deprecated 되었으며 Persistent Store를 사용하기 위해서는 JEUS 6에서 정의한

설정으로 변경해야 한다.

4.3.4.1. 기본 설정 변경

JEUS 5에서 Persistent Store를 설정하기 위해서는 <storage> element를 사용하였는데 JEUS 6에서는

Persistent Store설정을 위한 Root element가 <persistent-store>로 변경되었다. 또한 <reliability-level> el

ement와 <delete-invalid-destinations> element는 더 이상 사용하지 않으므로 설정할 필요가 없다.

● JEUS 5 JMSMain.xml

<jms-server>

<storage>

...

<reliability-level>consume</reliability-level>

<delete-invalid-destinations>true</delete-invalid-destinations>

</storage>

</jms-server>

● JEUS 6 JMSMain.xml

<jms-server>

<persistent-store>

...

</persistent-store>

</jms-server>

4.3.4.2. DB Storage

JMS 메시지들을 데이터베이스에 저장하려 할 때 JEUS 5에서는 <db-storage>를 사용하였다. JEUS 6에

서는 <db-storage> 대신 <jdbc>를 설정하여 사용하면 데이터베이스에 메시지 내용을 남길 수 있다.

40 JEUS 업그레이드 안내서

Page 57: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

● JEUS 5 JMSMain.xml

<jms-server>

<storage>

<db-storage>

<data-source-name>jdbc/JMSDataSource</data-source-name>

<destination-table-name>TEST_DT</destination-table-name>

<durable-subscriber-table-name>TEST_DS</durable-subscriber-table-name>

<message-table-name>TEST_MG</message-table-name>

<user-property-table-name>TEST_UP</user-property-table-name> <!-- 삭제 -- >

<durable-message-table-name>TEST_DS</durable-message-table-name>

<xa-table-name>TEST_XA</xa-table-name>

<sql-poll-timeout>500</sql-poll-timeout> <!-- 삭제 -- >

<wait-sql-executor>true</wait-sql-executor> <!-- 삭제 -- >

</db-storage>

...

</storage>

</jms-server>

● JEUS 6 JMSMain.xml

<jms-server>

<persistent-store>

<jdbc>

<data-source>jdbc/JMSDataSource</data-source>

<destination-table>TEST_DT</destination-table>

<durable-subscriber-table>TEST_DS</durable-subscriber-table>

<message-table>TEST_MG</message-table>

<subscription-message-table>TEST_SM</subscription-message-table>

<transaction-table>TEST_DS</transaction-table>

</jdbc>

...

</persistent-store>

<jms-server>

4.3.4.3. Embedded Storage

JMS 메시지들을 Embedded Storage에 저장하려 할 때 JEUS 5에서는 <db-storage>의 <embedded>를

사용하였다. JEUS 6에서는 Embedded Storage는 더 이상 지원하지 않으며 대신 <journal>을 설정하여 사

용하면 파일로 메시지 내용을 남길 수 있다.

● JEUS 5 JMSMain.xml

<jms-server>

<storage>

<db-storage>

<embedded>

<path>/home/mq/store</path>

제4장 JEUS 5에서 6로 업그레이드 41

Page 58: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

<embedded>

</db-storage>

...

</storage>

</jms-server>

● JEUS 6 JMSMain.xml

<jms-server>

<persistent-store>

<journal>

<base-dir>/home/mq/store</base-dir>

</journal>

...

</storage>

</persistent-store>

4.3.4.4. File Storage

JMS 메시지들을 파일에 저장하려 할 때 JEUS 5에서는 <file-storage>를 사용하였다. JEUS 6에서는 File

Storage를 사용하기 위해서는 <journal>을 설정해야 하며 디렉터리 설정 외에 추가 설정들이 필요하다.

추가 설정들에 대해서는 "JEUS MQ 안내서"를 참고한다.

● JEUS 5 JMSMain.xml

<jms-server>

<storage>

<file-storage>

<path>/home/mq/store</path>

</file-storage>

...

</storage>

</jms-server>

● JEUS 6 JMSMain.xml

<jms-server>

<persistent-store>

<journal>

<base-dir>/home/mq/store</base-dir>

</journal>

...

</storage>

</persistent-store>

JEUS 5의 <file-storage><path>는 JEUS 6에서 <journal><base-dir>로 변경하면 된다.

42 JEUS 업그레이드 안내서

Page 59: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

4.3.5. Threshold 설정 변경

JEUS 6에서는 Thread Pool에 관한 설정인 <notify-threshold>와 <restart-threshold >설정이 일정 수에서

비율로 변경되었다. 이는 사용자가 직접 필요한 수치로 변경해주어야 한다.

● JEUS 5 Threshold 설정

<thread-pool>

<thread-state-notify>

<notify-threshold>90</notify-threshold>

<restart-threshold>90</restart-threshold>

</thread-state-notify>

</thread-pool>

● JEUS 6 Threshold 설정

<thread-pool>

<thread-state-notify>

<notify-threshold-ratio>0.9</notify-threshold>

<restart-threshold>0.9</restart-threshold>

</thread-state-notify>

</thread-pool>

4.3.6. 변경된 요소

JEUS 5의 설정 중 JEUS 6에서 이름이나 위치가 변경된 요소들이 있다. 이들은 동작에 대한 불명확한 이

름을 명확하게 하거나 관계된 설정과 위치가 맞지 않았던 것들을 관계있는 설정으로 묶이는 과정에서 변

경된 부분들이다.

다음은 WEBMain.xml 변경 목록에 대한 예이다.

● JEUS 5 WEBMain.xml

<web-container>

<context-group>

<print-error-to-browser> true </print-error-to-browser> <!-- (1)변경 -->

<encoding>

<postdata-encoding> ... </postdata-encoding> <!-- (2)변경 -->

</encoding>

<response-header>

<session-id-cookie> ... </session-id-cookie> <!-- (3)변경 -->

</response-header>

<session-config>

<persistent> ... </persistent> <!-- (4)변경 -->

</session-config>

</context-group>

</web-container>

제4장 JEUS 5에서 6로 업그레이드 43

Page 60: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

● JEUS 6 WEBMain.xml

<web-container>

<context-group>

<attach-stacktrace-on-error>true</attach-stacktrace-on-error> <!-- (1)변경

-->

<encoding>

<request-url-encoding> ... </request-url-encoding> <!-- (2)변경 -->

</encoding>

<session-config>

<session-id-cookie> ... </session-id-cookie> <!-- (3)변경 -->

<reload-persistent> ... </reload-persistent> <!-- (4)변경 -->

</session-config>

</context-group>

</web-container>

(1) JEUS 5의 <print-error-to-browser>는 <attatch-stacktrace-on-error>로 변경되었다.

(2) JEUS 5의 <postdata-encoding>는 <request-url-encoding>로 변경되었다.

(3) JEUS 5의 <session-id-cookie>는 <response-header>하위의 <session-config>의 하위 element로

변경되었다.

(4) JEUS 5의 <persistent>는 <reload-persistent>로 변경되었다.

4.3.7. 삭제된 요소

JEUS 5의 설정에는 있었지만 JEUS 6에서는 삭제된 요소들이 있다. 이들을 그대로 남겨둘 경우 SAXParse

Exception이 발생할 수 있다. 실행에 지장이 없을 수도 있지만 로그 분석시 문제가 될 수 있으므로 삭제하

기를 권장한다.

● JEUSMain.xml 삭제 목록

<jeus-system>

<node>

<remote-webtob-list> ... </remote-webtob-list> <!-- 삭제 -->

<session-router-config>

<use-nio> true </use-nio> <!-- 삭제 -->

</session-router-config>

<enable-jnlp>true</enable-jnlp> <!-- 삭제 -->

</node>

<resource>

<external-source>

<tmax-source> ... </tmax-source> <!-- 삭제 -->

</external-source>

</resource>

</jeus-system>

44 JEUS 업그레이드 안내서

Page 61: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

● WEBMain.xml 삭제 목록

<web-container>

<context-group>

<webserver-connection>

<udp-listener> ... </udp-listener> <!-- 삭제 -->

<xxx-listener>

<compression> true </compression> <!-- 삭제 -->

<thread-pool>

<thread-state-notify>

<notifier-id> ... </notifier-id> <!-- 삭제 -->

</thread-state-notify>

</thread-pool>

</xxx-listener>

<tcp-listener>

<read-timeout>...</read-timeout> <!-- 삭제 -->

<thread-pool>

<thread-state-notify>

<notifyer-threshold> ... </notifyer-threshold> <!-- 삭제

-->

</thread-state-notify>

</thread-pool>

</tcp-listener>

<ajp13-listener>

<busy-notify-page>...</busy-notify-page> <!-- 삭제 -->

</ajp13-listener>

<tmax-listener>

<backup-server-group-name>...</backup-server-group-name> <!-- 삭제

-->

<read-timeout> ... </read-timeout> <!-- 삭제 -->

</tmax-listener>

</webserver-connection>

</context-group>

</web-container>

4.4. 애플리케이션 이전애플리케이션 이전은 JEUS 구버전에서 동작하던 애플리케이션들을 JEUS 6로 이전하는 동작을 말한다.

이때 jeus-ejb-dd.xml이나 jeus-web-dd.xml과 같은 애플리케이션 설정 Deploy Descriptor(DD)들이 모두

JEUS 6에서 배치될 수 있도록 수정되어야 한다.

애플리케이션 이전이 끝나면 이전된 애플리케이션들은 JEUS 6에서 성공적으로 배치될 수 있어야 한다.

제4장 JEUS 5에서 6로 업그레이드 45

Page 62: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

4.4.1. 웹(서블릿) 모듈

JEUS 5의 서블릿 모듈은 기본적으로 JEUS 6에서 그대로 배치하고 동작할 수 있다. 다만 JEUS 4.x의 서

블릿 모듈을 JEUS 5에서 그대로 사용했던 경우 JEUS 5에서 JEUS 4.x와의 호환성을 위해 남겨두었던

<doc-base>와 <jndi-properties>가 JEUS 6에서는 삭제되었으므로 이 요소들을 삭제해주어야 한다.

4.4.2. EJB 모듈

JEUS 5의 EJB 모듈은 기본적으로 JEUS 6에서 그대로 배치하고 동작할 수 있다. 다만 MDB를 사용할 경

우 <mdb-resource-adapter> 설정의 이름 변경이 있었고 <file-db-info> element가 삭제되었기 때문에 이에

대한 수정 작업을 수행해야 한다.

참고

JEUS 5에서 Fast-Deploy를 위해 Stub 파일과 Skeleton 파일을 생성해서 모듈에 포함되어 있을 경우

JEUS 6 배치 시에 에러가 발생한다. 때문에 JEUS 6의 appcompiler의 -deloldgen 옵션을 사용하여

이전 버전의 Stub 파일과 Skeleton 파일을 삭제하고 다시 생성하거나 혹은 업그레이드 툴의 app 명

령어의 옵션인 appcompile 옵션을 사용하여 삭제할 수 있다.

4.5. 스크립트 변경JEUS 5와 JEUS 6 모두 JEUS에서 제공하는 스크립트는 모두 JEUS_HOME\bin 디렉터리에 위치한다.

본 절에서는 JEUS 5에서 제공되었지만 JEUS 6에서는 제공되지 않는 스트립트 및 다른 스크립트의 기능

으로 통합된 스크립트가 어떤 것인지 있는지, 그리고 별도로 스크립트를 작성한 경우 어떤식으로 수정해

야 하는지 설명한다.

4.5.1. 제공하지 않는 스크립트

다음의 스크립트들은 JEUS 6에서 더 이상 제공하지 않는 스크립트들이다.

● clientcontainer

– JEUS 5에서 제공하는 애플리케이션 클라이언트 모듈을 사용하기 위해서 제공하는 스크립트이다.

– JEUS 6에서는 appclient가 이 역할을 대신한다.

● ejbcompiler

– JEUS 5에서 EJB 모듈의 Stub과 Skeleton을 디플로이 전에 생성해주는 스크립트이다.

– JEUS 6에서는 appcompiler로 통합되었다.

● jspc2

– JEUS 5에서는 jspc, jspc2가 별도로 제공되었지만 JEUS 6에서는 jspc 하나만 남겨졌다.

46 JEUS 업그레이드 안내서

Page 63: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

– 각 스크립트의 자세한 기능은 JEUS 5와 JEUS 6 안내서 중 "JEUS Web Container 안내서"를 참조한

다.

4.5.2. Admin 관련 스크립트들의 통합

JEUS 5에서는 JEUS에서 제공하는 엔진이나 기능별로 별도의 Admin 툴이 존재하였다. JEUS 6에서는 이

런 툴의 기능이 jeusadmin으로 통합되었으며 이에 따라 기존에 제공되는 admin 관련 스크립트들은 더 이

상 제공하지 않는다. 사용자는 jeusadmin을 이용하여 이전에 각 Admin 툴을 이용하여 수행하던 작업을

진행할 수 있다.

● 삭제된 Admin 툴의 목록

connectoradmin, dbpooladmin, ejbadmin, securityadmin, smadmin, tmadmin, webadmin, webtadmin

● jeusadmin에서 사용할 수 있는 명령들 (자세한 내용은 "JEUS Reference Book" 참조)

[ jeusadmin Commands ]_________________________________________________________

allenglist allnodelist applist boot conlist connect

deploy distribute down downcon dump englist

ftp gc jeusexit jndi jndilist loglevel

mbeanlist meminfo nodelist pidlist redeploy rftp

setcon start startcon stop undeploy

[ EJB ]________________________________________________________________________

beanlist compile moduleinfo

[ DB Pool ]____________________________________________________________________

controlcds createds disableds dsconinfo dsinfo enableds

reconfigds refreshds resyncds shrinkds testdsconfig

[ Transaction ]________________________________________________________________

tmresync txlist

[ Servlet ]____________________________________________________________________

cfg clrstat info setcfg stat ti webreload

webresume websuspend webtob

[ Security ]___________________________________________________________________

addcredential addgroup addprincipal

addsubject addusertogroup assignresource

assignrole authorizeresource authorizerole

checkresource checkrole clearsubjectexpiration

excluderesource excluderole getgroup

getgroupdescription getgroupnames getgroups

getmembersfromgroup getpolicy getpolicyids

getsubject getsubjectnames groupexist

includeresource includerole ismember

제4장 JEUS 5에서 6로 업그레이드 47

Page 64: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

locksubject removecredential removegroup

removeprincipal removesubject removeuserfromgroup

savepolicy savesubject setgroupdescription

setpassword setsubjectdescription setsubjectexpiration

unassignresource unassignrole uncheckresource

uncheckrole unlocksubject userexist

[ General ]____________________________________________________________________

exit help p setProperty unsetProperty

4.5.3. 스크립트 변경

● jeusadmin 스크립트

JEUS 5에서의 JEUS 콘솔 관리 툴인 jeusadmin, webadmin, dbpooladmin, ejbadmin, tmadmin 등이

JEUS 6에서는 jeusadmin으로 통합되었다. JEUS 5에서 다음과 같이 jeusadmin 스크립트를 사용했을

경우, JEUS 6에서 동일하게 적용하여 사용한다.

jeusadmin {nodename} -Uadministrator -P<admin_password>

48 JEUS 업그레이드 안내서

Page 65: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

Appendix A. 업그레이드 툴

본 부록에서는 JEUS 6에서 제공하는 업그레이드 툴의 기능과 옵션을 설명하고 실제 업그레이드 툴을 이

용하여 업그레이드 작업을 할 때 사용되는 설정들을 설명한다.

A.1. 업그레이드 툴 사용법업그레이드 툴은 다음과 같은 방식으로 사용한다.

● Jeus 4.x에서 6로 업그레이드

upgradetool4to6 [command] [options]

● Jeus 5에서 6로 업그레이드

upgradetool5to6 [command] [options]

A.2. 업그레이드 툴 설정본 장에서는 업그레이드 툴을 사용하기 전에 설정해야 할 사항들을 설명한다.

업그레이드 툴은 JEUS 구버전을 JEUS 6로 업그레이드하는 작업을 돕기 위한 자동화 툴이다. 업그레이

드 툴을 사용하기 위해 필요한 설정을 입력하는 방법은 다음과 같이 3가지가 존재한다.

● 옵션 입력

업그레이드 툴을 실행시킬 때 옵션으로 값을 설정한다. 우선 순위가 가장 높다. 즉, 3가지가 모두 설정

되었을 경우 이 값이 가장 우선한다.

● 환경 변수

set(Windows) 또는 export(UNIX)를 사용하여 OS의 환경변수에 값을 등록한다. 우선 순위는 프로퍼티

파일보다 높고 옵션보다 낮다. 주로 JEUS_HOME과 같이 실행때마다 변하지 않는 설정에 사용할 수 있

다.

● 프로퍼티 파일

필요한 설정을 프로퍼티 파일에 property key=value와 같은 방식으로 등록할 수 있다. 우선 순위는 가장

낮으며 옵션에서 -prop 옵션을 사용하여 프로퍼티 파일의 경로를 설정하면 사용할 수 있다.

Appendix A. 업그레이드 툴 49

Page 66: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

A.3. JEUS 4.x to 6 업그레이드 툴 CommandJEUS 4.x에서 JEUS 6로 업그레이드하는 업그레이드 툴은 다음과 같은 기능을 제공한다.

설명툴

JEUS 4.x의 모든 설정을 JEUS 6로 옮긴다.all

모든 설정은 JEUS 4.x의 서버 설정과 EJB_HOME, SERVLET_HOME, EAR_HOME

등에 있는 모든 애플리케이션을 포함한다.

JEUS 4.x의 서버 설정을 JEUS 6로 옮긴다. 서버 설정은 JEUSMain.xml, EJB

Main.xml, WEBMain.xml, JMSMain.xml과 보안(security) 설정을 모두 포함한다.

serverconf

서버를 설정할 때 -ejbhome이나 -servlethome과 같은 다른 옵션을 설정했을 경우

에는 그 설정을 reg-app 명령시에도 그대로 설정해야만 정상적인 동작을 보장할

수 있다.

JEUS 4.x의 EJB_HOME, SERVLET_HOME, EAR_HOME 등에 있는 애플리케이

션을 JEUS 6로 옮긴다. EJB 모듈의 경우는 JAR 모드만 지원하며, 웹(서블릿) 모

듈의 경우는 현재 컨텍스트 그룹에 포함되지 않은 것들만 지원한다.

regapp-all

서버를 설정할 때 -ejbhome이나 -servlethome과 같은 다른 옵션을 설정했을 경우

에는 그 설정을 reg-app 명령시에도 그대로 설정해야만 정상적인 동작을 보장할

수 있다.

JEUS 4.x의 EJB_HOME의 애플리케이션을 JEUS 6의 APP_HOME으로 옮긴다.

EJB 모듈의 경우는 JAR 모드만 지원한다.

regapp-ejb

서버를 설정할 때 EJB_HOME을 다르게 설정한 경우에는 reg-app 명령시에도 -

ejbhome을 서버 설정과 같도록 설정해야만 정상적인 동작을 보장할 수 있다.

JEUS 4.x의 SERVLET_HOME의 애플리케이션을 JEUS 6의 APP_HOME으로 옮

긴다. 웹(서블릿) 모듈의 경우는 현재 컨텍스트 그룹에 포함되지 않은 것들만 지원

regapp-web

한다. 서버를 설정할 때 SERVLET_HOME을 다르게 설정한 경우에는 reg-app 명

령시에도 -servlethome을 서버 설정과 같도록 설정해야만 정상적인 동작을 보장

할 수 있다.

JEUS 4.x의 EAR_HOME의 애플리케이션을 JEUS 6의 APP_HOME으로 옮긴다.regapp-ear

JEUS 4.x의 DEPLOY_HOME(JEUS_HOME\webhome\deploy_home)의 애플리

케이션을 JEUS 6의 autodeploy로 옮긴다. 이는 JEUS 4에서 autodeploy를 지원하

던 애플리케이션들을 그대로 JEUS 6에서 사용할 수 있도록 하기 위함이다.

regapp-misc

JEUS 4.x에서 사용된 개별 애플리케이션을 JEUS 6 형태로 변환할 때 사용한다.

이 경우에는 항상 src 옵션과 target 옵션이 반드시 필요하며 JEUS DD 파일이 외

부에 존재할 경우 -jeus-dd 옵션이 필요하다.

app

50 JEUS 업그레이드 안내서

Page 67: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

A.4. JEUS 4.x to 6 업그레이드 툴 옵션JEUS 4.x에서 JEUS 6로 업그레이드하는 업그레이드 툴에서 사용할 수 있는 옵션은 다음과 같다. 환경변

수와 Property Key가 있는 옵션들은 환경변수나 프로퍼티 파일에 설정해도 같은 값으로 사용할 수 있다.

다음 표는 업그레이드 툴의 옵션들을 정리한 것이다.

설명옵션

JEUS 4.x의 홈 디렉터리를 설정한다. app 명령어가 아닐 경우에는 반드시 설정

해야 한다.

-jeus4home

- 환경변수 : JEUS_OLD_HOME

- Property Key : jeus.previous.home

- 기본값 : 없음

JEUS 6의 홈 디렉터리를 설정한다. app 명령어가 아닐 경우에는 반드시 설정해

야 한다. JEUS 6를 인스톨하면 기본적으로 환경변수에 설정된다.

-jeus6home

- 환경변수 : JEUS_HOME

- Property Key : jeus.home

- 기본값 : JEUS 6가 설치된 디렉터리

JEUS 4.x에서 사용하던 SERVLET_HOME 디렉터리이다. 만약 servlet_home을

다른 디렉터리로 지정해서 사용하고 있었을 경우에만 설정해주면 된다.

-old-servlethome

- 환경변수 : JEUS_OLD_SERVLET_HOME

- Property Key : jeus.previous.servlet.home

- 기본값 : JEUS_OLD_HOME\webhome\servlet_home

JEUS 6에서 사용할 SERVLET_HOME 디렉터리이다. 이 설정은 컨텍스트 그룹

으로 사용하던 JEUS 4.x의 웹(서블릿) 모듈들을 그대로 사용할 경우에만 사용된

다.

-servlethome

- 환경변수 : JEUS_SERVLET_HOME

- Property Key : jeus.servlet.home

- 기본값 : JEUS_HOME\webhome\servlet_home

JEUS 4.x에서 사용되던 jeus-web-dd_{modulename}.xml이 저장되어있는 디렉

터리이다. 엔진의 JEUS DD 파일 대신 다른 디렉터리에 저장된 JEUS DD 파일

을 사용하려 할 때 사용한다.

-old-webddhome

- 환경변수 : JEUS_OLD_WEBDD_HOME

- Property Key : jeus.previous.webdd.home

- 기본값 : JEUS_OLD_HOME\config\{nodename}\{servlet_engine}

Appendix A. 업그레이드 툴 51

Page 68: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

설명옵션

JEUS 4.x에서 사용하던 EJB_HOME 디렉터리이다. 만약 ejb_home을 다른 디

렉터리로 지정해서 사용하고 있었을 경우에만 설정해주면 된다.

-old-ejbhome

- 환경변수 : JEUS_OLD_EJB_HOME

- Property Key : jeus.previous.ejb.home

- 기본값 : JEUS_OLD_HOME\webhome\ejb_home

JEUS 6에서 사용할 EJB_HOME 디렉터리이다. 이 설정은 ejbclassloading 모드

를 DIR로 사용하던 JEUS 6의 EJB 모듈들을 그대로 사용할 경우에만 사용된다.

-ejbhome

all이나 servercfg의 경우에는 JEUSMain.xml의 <engine-container><user-class

path> 항목의 값으로 추가되고, JEUS_OLD_HOME\webhome\ejb_home이 그

대로 복사된다.

- 환경변수 : JEUS_EJB_HOME

- Property Key : jeus.ejb.home

- 기본값 : JEUS_HOME\webhome\ejb_home

JEUS 4.x에서 사용되던 jeus-ejb-dd_{modulename}.xml이 저장되어 있는 디렉

터리이다. 엔진의 JEUS DD 파일 대신 다른 디렉터리에 저장된 JEUS DD 파일

을 사용하려 할 때 사용한다.

-old-ejbddhome

- 환경변수 : JEUS_OLD_EJBDD_HOME

- Property Key : jeus.previous.ejbdd.home

- 기본값 : JEUS_OLD_HOME\config\{nodename}/{ejb_engine}

JEUS 4.x에서 사용되던 EAR 모듈이 저장되어있는 디렉터리이다. EAR 모듈을

다른 곳에 놓고 사용하고 있었을 경우 사용한다.

-old-earhome

- 환경변수 : JEUS_OLD_EAR_HOME

- Property Key : jeus.previous.ear.home

- 기본값 : JEUS_OLD_HOME\webhome\ear_home

JEUS 6에서 사용할 EAR_HOME 디렉터리이다. 이 설정은 EAR 모듈을

APP_HOME이 아닌 다른 디렉터리에 저장하고 싶을 때 설정한다.

-earhome

- 환경변수 : JEUS_EAR_HOME

- Property Key : jeus.ear.home

- 기본값 : JEUS_HOME\webhome\app_home

JEUS 4.x에서 사용하던 DEPLOY_HOME 디렉터리이다. 다른 값을 사용하고 있

었을 경우 설정한다.

-old-deployhome

- 환경변수 : JEUS_OLD_DEPLOY_HOME

- Property Key : jeus.previous.deploy.home

52 JEUS 업그레이드 안내서

Page 69: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

설명옵션

- 기본값 : JEUS_OLD_HOME\webhome\deploy_home

JEUS 6에서 사용할 AUTODEPLOY 디렉터리이다. 기본값이 아닌 다른 값을 사

용하고 싶을 때 설정하면 JEUS 4.x의 JEUS_OLD_DEPLOY_HOME에 있던 모

듈들이 설정된 디렉터리로 옮겨진다.

-autodeploy

- 환경변수 : JEUS_AUTODEPLOY_HOME

- Property Key : jeus.deploy.home

- 기본값 : JEUS_HOME\webhome\autodeploy

이전할 노드의 이름이 컴퓨터 이름과 다를 경우 혹은 테스트를 위한 노드 설정을

먼저 변환할 경우 사용한다.

-nodename

- 환경변수 : 없음

- Property Key : 없음

- 기본값 : 컴퓨터 이름

애플리케이션 하나를 변환할 때 사용하는 옵션이다. 변환할 대상이 되는 파일의

절대 경로를 지정한다. app 명령어의 경우에만 사용되며 다른 명령어에 이 옵션

이 포함되었을 경우 무시된다.

-src

- 환경변수 : 없음

- Property Key : 없음

- 기본값 : 없음

애플리케이션 하나를 변환할 때 사용하는 옵션이다. 변환된 파일이 저장될 절대

경로를 지정한다. app 명령어의 경우에만 사용되며 다른 명령어에 이 옵션이 포

함되었을 경우 무시된다.

-target

- 환경변수 : 없음

- Property Key : 없음

- 기본값 : 없음

애플리케이션 하나를 변환할 때 사용하는 옵션이다. JEUS DD 파일이 모듈 외부

에 존재하는 경우 JEUS DD 파일의 경로를 지정해준다. 만약 JEUS DD 파일이

없으면 정상적으로 변환되지 않는다.

-jeus-dd

- 환경변수 : 없음

- Property Key : 없음

- 기본값 : 없음

업그레이드 툴의 프로퍼티들을 저장한 프로퍼티 파일의 경로를 지정한다. 이 옵

션을 사용하면 먼저 프로퍼티 파일에 설정된 프로퍼티들을 읽고 그 후에 환경변

수를 덮어쓴 후 다시 옵션을 덮어쓴다.

-prop

- 환경변수 : 없음

Appendix A. 업그레이드 툴 53

Page 70: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

설명옵션

- Property Key : 없음

- 기본값 : 없음

업그레이드 툴이 동작하여 변환하려는 파일이 이미 존재하는 파일일 경우 덮어

쓸지 여부를 결정한다. yes는 무조건 덮어쓰고 no는 백업 파일 이름 결정 정책에

따라 원본 파일을 백업하고 새 파일을 생성하며 ask는 매번 확인한다.

-overwrite

- 환경변수 : 없음

- Property Key : 없음

- 기본값 : ask

업그레이드 툴이 동작하여 변환하려는 파일이 이미 존재하는 노드일 경우 백업

여부를 결정한다. yes는 백업 디렉터리 이름 결정 정책에 따라 생성된 이름으로

백업하고 no는 백업하지 않고 삭제한다. ask는 매번 확인한다.

-backup-serverconf

- 환경변수 : 없음

- Property Key : 없음

- 기본값 : ask

업그레이드 툴의 로그 파일이 저장될 디렉터리를 지정한다. 로그 파일은 지정된

디렉터리에 upgradetool_{date}.log로 저장되며 이미 로그가 존재할 경우에는 이

-log

어 쓰게 설정되어 있다. JEUS_HOME을 사용하지 않는 app 명령어의 경우는 지

정되어있지 않으면 로그 파일을 만들지 않는다.

- 환경변수 : 없음

- Property Key : 없음

- 기본값 : JEUS_HOME\logs\

업그레이드 툴의 도움말을 출력한다. -h만 사용할 경우 전체에 대한 도움말을, -

h [옵션명]을 입력하면 해당 옵션에 대한 도움말을 제공한다.

-h

- 환경변수 : 없음

- Property Key : 없음

- 기본값 : 없음

A.5. JEUS 5 to 6 업그레이드 툴 CommandJEUS 5에서 JEUS 6로 업그레이드하는 업그레이드 툴은 다음과 같은 기능을 제공한다.

설명툴

JEUS 5의 모든 설정을 JEUS 6로 옮긴다. 모든 설정은 JEUS 5의 서버 설정과

APP_HOME, AUTODEPLOY, JEUSMain.xml에 등록된 애플리케이션을 포함한

다.

all

54 JEUS 업그레이드 안내서

Page 71: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

설명툴

JEUS 5의 서버 설정을 JEUS 6로 옮긴다. 서버 설정은 JEUSMain.xml, EJB

Main.xml, WEBMain.xml, JMSMain.xml과 security 설정, lib/application에 포함된

클래스들을 모두 포함한다.

serverconf

JEUS 5의 APP_HOME, AUTODEPLOY, JEUSMain.xml에 등록된 애플리케이션

을 JEUS 6로 옮긴다.

regapp-all

JEUSMain.xml에 등록된 애플리케이션의 경우는 APP_HOME에 있는 경우

APP_HOME으로 자동으로 옮겨지며 <absolute-path> 태그를 사용하거나 <path>

에 절대 경로를 입력한 다른 위치에 존재하는 애플리케이션은 그대로 남겨둔다.

이 Command를 사용할 경우 모듈들은 그대로 복사된다. 이는 대부분의 JEUS 5

모듈들은 JEUS 6에서 그대로 사용 가능하므로 작업 시간을 줄이기 위한 것이다.

Jeus 5의 모듈 중 설정이 변경된 MDB와 Jeus 4.x에서 그대로 사용되던 웹 모듈의

경우는 몇몇 태그가 삭제되었으므로 따로 app 명령어를 이용해 다시 변환해야 한

다.

JEUS 5에서 사용된 개별 애플리케이션을 JEUS 6 형태로 변환할 때 사용한다. 이

경우에는 항상 src 옵션과 target 옵션이 반드시 필요하다. src는 디렉터리로 지정

app

이 가능하며 이 경우 target은 항상 디렉터리 경로로 인식된다. app 명령으로 사용

할 경우는 appcompile을 제외한 다른 옵션들은 모두 무시된다.

app 명령은 regapp-all 명령어에서 설명한 MDB와 Jeus 4.x의 웹 모듈을 변환할 경

우 사용하며 Fast-Deploy를 설정한 EJB도 -appcompile 옵션을 사용하여 다시 변

환해야만 구버전의 Stub과 Skeleton으로 인한 배치 오류가 발생하지 않는다.

A.6. JEUS 5 to 6 업그레이드 툴 옵션JEUS 5에서 JEUS 6로 업그레이드하는 업그레이드 툴에서 사용할 수 있는 옵션은 다음과 같다. 환경변수

와 Property Key가 있는 옵션들은 환경변수나 프로퍼티 파일에 설정해도 같은 값으로 사용할 수 있다.

다음 표는 업그레이드 툴의 옵션들을 정리한 것이다.

설명옵션

JEUS 5의 홈 디렉터리를 설정한다. app 명령어가 아닐 경우에는 반드시 설정해

야 한다.

-jeus5home

- 환경변수 : JEUS_OLD_HOME

- Property Key : jeus.previous.home

- 기본값 : 없음

JEUS 6의 홈 디렉터리를 설정한다. app 명령어가 아닐 경우에는 반드시 설정해

야 한다. JEUS 6를 설치하면 기본적으로 환경변수에 설정된다.

-jeus6home

- 환경변수 : JEUS_HOME

Appendix A. 업그레이드 툴 55

Page 72: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

설명옵션

- Property Key : jeus.home

- 기본값 : JEUS 6가 설치된 디렉터리

JEUS 5에서 사용하던 DEPLOY_HOME 디렉터리이다. 다른 값을 사용하고 있

었을 경우 설정한다.

-old-deployhome

- 환경변수 : JEUS_OLD_DEPLOY_HOME

- Property Key : jeus.previous.deploy.home

- 기본값 : JEUS_OLD_HOME\webhome\deploy_home

JEUS 6에서 사용할 AUTODEPLOY 디렉터리이다. 기본값이 아닌 다른 값을 사

용하고 싶을 때 설정하면 JEUS 5의 JEUS_OLD_DEPLOY_HOME에 있던 모듈

들이 설정된 디렉터리로 옮겨진다.

-autodeploy

- 환경변수 : JEUS_AUTODEPLOY_HOME

- Property Key : jeus.deploy.home

- 기본값 : JEUS_HOME\webhome\autodeploy

이전할 노드의 이름이 컴퓨터 이름과 다를 경우 혹은 테스트를 위한 노드 설정을

먼저 변환할 경우 사용한다.

-nodename

- 환경변수 : 없음

- Property Key : 없음

- 기본값 : 컴퓨터 이름

애플리케이션 하나를 변환할 때 사용하는 옵션이다. 변환할 대상이 되는 파일의

절대 경로를 지정한다. app 명령어의 경우에만 사용되며 다른 명령어에 이 옵션

이 포함되었을 경우 무시된다.

-src

- 환경변수 : 없음

- Property Key : 없음

- 기본값 : 없음

애플리케이션 하나를 변환할 때 사용하는 옵션이다. 변환된 파일이 저장될 절대

경로를 지정한다. app 명령어의 경우에만 사용되며 다른 명령어에 이 옵션이 포

-target

함되었을 경우 무시된다. exploded module의 경우 target은 디렉터리여야 하며,

이 경우 지정된 디렉터리가 모듈로 변환된다. 만약, 지정된 디렉터리 아래에 다

른 파일이 있을 경우 모두 삭제되므로 주의해야 한다.

- 환경변수 : 없음

- Property Key : 없음

- 기본값 : 없음

app 명령어를 사용하여 애플리케이션 하나를 변환할 때 appcompiler의 작업을

함께 진행한다. app 명령어에서만 사용되며 다른 명령어에 이 옵션이 포함되었

-appcompile

56 JEUS 업그레이드 안내서

Page 73: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

설명옵션

을 경우 무시된다. 이 옵션은 값이 없이 선언만 하면 동작한다. EJB 모듈에 fast-

deploy가 설정되어 있을 경우 사용한다.

- 환경변수 : 없음

- Property Key : 없음

- 기본값 : 없음

업그레이드 툴의 도움말을 출력한다. -h만 사용할 경우 전체에 대한 도움말을, -

h [옵션명]을 입력하면 해당 옵션에 대한 도움말을 제공한다.

-h

- 환경변수 : 없음

- Property Key : 없음

- 기본값 : 없음

A.7. 알려진 문제본 장에서는 현재 업그레이드 툴에서 지원하지 않거나 오동작을 하는 항목에 대해서 설명한다.

● JEUS 4.x to JEUS 6 업그레이드 툴

– EJB 모듈을 이전할 때 이전 Stub과 Skeleton으로 인해 배치가 실패하는 문제

이전 버전의 Stub과 Skeleton이 모듈에 포함되어 있을 경우 배치가 실패하는 문제가 있다. 이는 JEUS

4.x와 JEUS 6의 Stub, Skeleton 생성 방식과 클래스 로딩 방식이 변경되었기 때문에 발생하는 문제

로 현재는 appcompiler -deloldgen 옵션을 사용하여 이전된 EJB를 다시 한번 컴파일하여 해결할 수

있다.

– 컨텍스트 그룹 단위로 사용하던 웹(서블릿) 모듈 이전이 JEUSMain.xml 이전과 함께 동작하는 문제

JEUS 4.x와 JEUS 6의 웹(서블릿) 정책 변경으로 인해 JEUS 6에서는 컨텍스트 그룹 단위로 서블릿

을 저장할 필요가 없다. 그렇기 때문에 JEUS 4.x에서 사용하던 컨텍스트 그룹 단위 웹(서블릿) 모듈

을 동작하기 위해서는 JEUS 6의 JEUSMain.xml에 저장되는 정보를 사용하기 때문에 함께 이전된다.

추후 버전에서는 이 부분을 분리하여 단계별 변환을 더 잘 지원할 예정이다.

컨텍스트 그룹 단위가 아닌 웹(서블릿) 모듈의 경우에는 regapp-web 명령을 사용하면 정상적으로 이

전된다.

– CMP의 경우 ejb-jar.xml의 CMP 버전 문제

JEUS 4.x의 자체 버그로 인해 ejb-jar.xml에 CMP 버전이 정상적인 값 2.x가 아닌 2.0으로 입력해도

동작하던 문제가 있었다. 이는 JEUS 6부터 스키마를 사용하기 때문에 자동으로 유효성 검사(validation)

를 하게 된다. 따라서, 이전할 때 이 부분을 수동으로 수정해야 한다.

– CMP 1.1의 경우 ejb-jar.xml의 EJBQL 문제

CMP 1.1에서는 사용할 수 없는 EJBQL을 설정해 놓을 경우 JEUS 4.x에서는 그냥 무시했지만 JEUS

6에서는 유효성 에러가 발생하여 배치가 되지 않는다. 이 부분은 수동으로 삭제해 주어야 한다.

Appendix A. 업그레이드 툴 57

Page 74: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

● JEUS 5 to JEUS 6 업그레이드 툴

– <res-auth>의 validation 문제

web.xml 파일의 <res-auth>에 설정되는 항목이 JEUS 5에서 이전 버전의 dtd와 호환을 위해 Application,

Container, APPLICATION, CONTAINER 등 4가지로 설정이 가능했지만 JEUS 6.0 에서는 Application,

Container 두 항목에 대해서만 적용되고 (APPLICATION, CONTAINER 을 입력시엔 유효성 에러가

발생하여 배치가 되지 않는다. 이 부분은 수동으로 수정해야 한다.

58 JEUS 업그레이드 안내서

Page 75: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

Appendix B. 주요 변경 사항(4.x to 6)

본 부록에서는 JEUS 4.x 환경에서 JEUS 6 환경으로 업그레이드할 때 참고해야 할 주요 변경 사항에 대해

서 설명한다.

B.1. 웹 컨테이너JEUS 4.x에서 사용하던 웹 모듈의 경우 web.xml, jeus-web-dd.xml 파일에 대해서만 주의하면 JEUS 6에

서 그대로 사용할 수 있다.

이 과정에서 몇 가지 주의할 점은 다음과 같다.

● JEUS 6에서 추가된 Annotation 등의 기능을 이용하기 위해서는 web.xml 파일에서 <web-app>의 버전

속성을 2.5로 설정해야 한다.

● JSP 파일을 컴파일하기 위한 기본 컴파일러가 sun.tools.javac에서 com.sun.tools.javac로 변경되었다.

B.2. EJBJEUS 6에서는 EJB 2.x와 함께 EJB 3.0도 지원하며, 웹 모듈과 마찬가지로 설정 파일에 대해서만 주의하

면 별다른 어려움 없이 JEUS 4.x에서 사용하던 모듈을 JEUS 6에서 그대로 사용할 수 있다.

● EJB 3.0에서도 ejb-jar.xml, jeus-ejb-dd.xml을 사용할 경우 Annotation을 사용하지 않고도 EJB 모듈을

생성할 수 있다. 단, 이 경우 ejb-jar.xml 파일과 jeus-ejb-dd.xml 파일에서 사용해야 하는 태그의 목록이

EJB 2.x의 경우와 다르므로 주의해야 한다.

● EJB 3.0의 경우 Dynamic Proxy를 이용하여 Stub, Skeleton을 동적으로 생성하기 때문에 모듈을 Deploy

하는 과정에서는 이것과 관련된 컴파일 메시지가 출력되지 않는다.

B.3. JDBCWEBMain.xml에 설정하는 db-connection-pool은 JEUS 6에서는 더이상 제공하지 않기 때문에, 데이터 소

스를 사용할 때 애플리케이션 수정이 필요하다. 자세한 설명은 “3.3.5. 데이터 소스 Connection Pool 설정”

의 내용을 참고한다. 그 외에는 JEUS 4.x의 데이터 소스 설정도 JEUS 6와 많이 다르지 않기 때문에 크게

주의해야 할 사항은 없다.

● operation-to 설정은 deprecated 되었으므로 사용하지 않는다. 또한 operation-to를 대신하여 delegation-

dba의 dba-timeout 기능을 사용하기 보다는 stmt-query-timeout 설정을 이용하기를 권장한다.

● getConnection 실행할 때 드라이버 커넥션 객체가 아닌 JEUS wrapper 커넥션 객체가 리턴되도록 변경

되었다. 따라서 JEUS 4.x에서 드라이버 커넥션 객체가 리턴되는 것을 예상하고 작성된 애플리케이션에

서 ClassCastException 등이 발생할 수 있다. 이를 피하기 위해서는 다음과 같은 방법을 이용한다.

Appendix B. 주요 변경 사항(4.x to 6) 59

Page 76: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

Connection conn = datasource.getConnection();

DatabaseMetaData metaData = conn.getMetaData();

OracleConnection oraConn = (OracleConnection)metaData.getConnection();

B.4. JMSJMS의 경우 JEUS 4.x에서 JEUS 6로 변경할 때, 설정상의 이슈 이외에는 특별히 고려할 것이 없다. 이 과

정을 처음부터 직접 파일을 변환하는 것보다 JEUS 6에서 제공하는 업그레이드 툴 스크립트를 이용하여

우선 변환한 후, 제대로 동작하는지를 점검하면서 확인해가는 과정을 추천한다.

B.5. 그 외 변경 사항

B.5.1. 모듈 컴파일 도구 변경 및 기능 향상

JEUS 4.x에서 제공하는 모듈 컴파일 관련 툴은 ejbcomiler 뿐이다. JEUS 6에서는 appcompiler를 이용하

여 EJB뿐 아니라 웹 서비스 관련 작업도 제공하여, 서비스를 Deploy할 때의 속도 및 편의성을 향상시켰다.

B.5.2. 모듈 관련 디렉터리의 통합

JEUS 4.x에서는 Web, EJB 및 EAR 모듈이 각각 별도의 디렉터리를 이용했지만 JEUS 6에서는

JEUS_HOME\web_home\app_home 디렉터리 하나만을 이용한다. 사용자는 이 디렉터리에 자신이 Deploy

하려는 모듈을 복사해 놓고 JEUSMain.xml 파일과 jeusadmin을 이용하여 사용할 수 있다.

B.5.3. Deploy 방식의 변경

JEUS 4.x에서는 사용자가 EJB 모듈을 디플로이할 때 jeus.ejb.classloadingmode를 이용하여 JAR 방식으

로 디플로이할 것인 DIR 방식으로 디플로이할 것인지를 결정하게 하였다. JEUS 6에서는 이 방식을 사용

하지 않고 기본적으로 모듈 파일을 생성하여 디플로이하는 방식을 고려한다. 단 사용자의 편의성을 위해

서 디렉터리 형태의 디플로이를 사용할 수 있지만 이것은 EJB 이외에 다른 형태의 모듈에서도 사용할 수

있는 방식이며, 클래스 로딩 모드와는 관련이 없다.

B.5.4. 시스템 프로퍼티의 변경

JEUS 4.x와 JEUS 6에서는 여러 시스템 프로퍼티들이 추가, 삭제가 되었다.(예. jeus.ejb.classloadingmode)

사용자는 JEUS 6로 업그레이드할 경우 자신이 특정 목적으로 사용하던 시스템 프로퍼티가 어떻게 변했

는지 직접 확인해보고 만약 삭제되거나 기능의 변경이 있을 경우에는 '“JEUS Reference Book”의 “Part I,

시스템 프로퍼티”를 참조하여 목적에 맞는 설정을 사용해야 한다. 이 경우 시스템 프로퍼티를 이용하던 기

능이 다른 방식으로 변경되었을 경우도 있으니 주의해야 한다.

60 JEUS 업그레이드 안내서

Page 77: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

B.5.5. JEUS_HOME의 제거

기존에는 jeus.properties에 지정된 JEUS_HOME 변수를 각 스크립트들이 읽어와서 작업을 실행하는 구

조였으나 JEUS 6에서는 모든 스크립트들이 자신이 위치한 디렉터리를 알아내는 부분을 가지고 있어

JEUS_HOME을 반드시 등록해야 할 이유가 없다. 즉 UNIX나 Windows 환경의 Path에 JEUS_HOME\bin

만 등록되어 있으면 사용자가 JEUS의 모든 스크립트들을 사용할 수 있다. 만약 사용자가 JEUS_HOME

변수를 쉘의 환경변수로 등록해 놓았다면 그것을 우선해서 사용한다.

Appendix B. 주요 변경 사항(4.x to 6) 61

Page 78: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의
Page 79: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

Appendix C. 주요 변경 사항(5 to 6)

본 부록에서는 JEUS 5 환경에서 JEUS 6 환경으로 업그레이드할 때 참고해야 할 주요 변경 사항에 대해

서 설명한다.

C.1. 웹 컨테이너JEUS 5에서 사용하던 웹 모듈의 경우 web.xml, jeus-web-dd.xml 파일에 대해서만 주의하면, JEUS 6에서

그대로 사용할 수 있다. 이 과정에서 몇 가지 주의할 점은 다음과 같다.

● JEUS 6에서 추가된 Annotation 등의 기능을 이용하기 위해서는 web.xml 파일에서 <web-app> 태그의

버전 속성을 2.5로 설정해야 한다.

● <?> JSP 파일을 컴파일하기 위한 기본 컴파일러가 sun.tools.javac에서 com.sun.tools.javac로 변경되

었다.

C.2. EJBJEUS 6에서는 EJB 2.x와 함께 EJB 3.0도 지원하며, 웹 모듈과 마찬가지로 설정 파일에 대해서만 주의하

면 별다른 어려움 없이 JEUS 5에서 사용하던 모듈을 JEUS 6에서 그대로 사용할 수 있다.

● EJB 3.0에서도 ejb-jar.xml, jeus-ejb-dd.xml을 사용할 경우 Annotation을 사용하지 않고도 EJB 모듈을

생성할 수 있다. 단, 이 경우 ejb-jar.xml 파일과 jeus-ejb-dd.xml 파일에서 사용해야 하는 태그의 목록이

EJB 2.x의 경우와 다르므로 주의해야 한다.

● EJB 3.0의 경우 Dynamic Proxy를 이용하여 Stub, Skeleton을 동적으로 생성하기 때문에 모듈을 디플로

이하는 과정에서는 이것과 관련된 컴파일 메시지가 출력되지 않는다.

C.3. JDBCJEUS 5의 데이터 소스 설정도 JEUS 6와 많이 다르지 않기 때문에 크게 주의해야 할 사항은 없다.

C.4. JMSJEUS 6 에서 변경된 몇 가지 설정들만 주의하면 JEUS 5.0 의 JMSMain.xml 설정을 JEUS 6에서 그대로

사용할 수 있다. 주의할 점은 다음과 같다.

● JEUS 6.0 Fix#6 에서 Persistence Store 설정이 변경되었는데 이 부분에 대한 설명은 “제4장 JEUS 5에

서 6로 업그레이드” 부분을 참고한다.

Appendix C. 주요 변경 사항(5 to 6) 63

Page 80: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

● JEUS 6.0 Fix#6 에서 JMS 클러스터링과 관련된 설정은 deprecated 되었기 때문에 JEUS 5.0 의 JMS

Main.xml에 클러스터와 관련된 설정이 되어 있더라도 변환되지 않는다.

C.5. 그 외 변경 사항

C.5.1. 시스템 프로퍼티의 변경

JEUS 4.x와 JEUS 6에서는 여러 시스템 프로퍼티들이 추가, 삭제가 되었다.(예. jeus.ejb.classloadingmode)

사용자는 JEUS 6로 업그레이드할 경우 자신이 특정 목적으로 사용하던 시스템 프로퍼티가 어떻게 변했

는지 직접 확인해보고 만약 삭제되거나 기능의 변경이 있을 경우에는 “JEUS Reference Book”의 “Part I,

시스템 프로퍼티”를 참조하여 목적에 맞는 설정을 사용해야 한다. 이 경우 시스템 프로퍼티를 이용하던 기

능이 다른 방식으로 변경되었을 경우도 있으니 주의해야 한다.

C.5.2. JEUS_HOME의 제거

기존에는 jeus.properties에 지정된 JEUS_HOME 변수를 각 스크립트들이 읽어와서 작업을 실행하는 구

조였으나 JEUS 6에서는 모든 스크립트들이 자신이 위치한 디렉터리를 알아내는 부분을 가지고 있어

JEUS_HOME을 반드시 등록해야할 이유가 없다. 즉 UNIX나 Windows 환경의 Path에 JEUS_HOME\bin

만 등록되어 있으면 사용자가 JEUS의 모든 스크립트들을 사용할 수 있다. 만약 사용자가 JEUS_HOME

변수를 쉘의 환경변수로 등록해 놓았다면 그것을 우선해서 사용한다.

64 JEUS 업그레이드 안내서

Page 81: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

Appendix D. 호환성(Compatibility) 노트

본 부록에서는 호환성과 관련된 중요한 사항에 대해 설명한다.

D.1. 웹 컨테이너● GET 방식 호출시 한글 깨짐

다음과 같은 request를 GET 방식으로 호출할 때, 한글이 깨지는 현상이 발생할 수 있다.

http://xx.xx.xx.xx:8080/app/redirect.jsp?url=http://xx.xx.xx.xx:8080/app/test.jsp?param=

한글

이는 HttpServletRequest.getQueryString()을 통해서 String을 가지고 올 때, JEUS 4.x와 JEUS 5,6의 처

리 방식이 다음과 같이 다르기 때문에 발생할 수 있는 문제이다.

– JEUS 4.x : WEBMain.xml의 encoding에 따라 decoding된 값을 리턴

– JEUS 5, 6 : 스펙에 정의된 대로 아무런 decoding 작업을 하지 않고 값을 리턴

이는 다음과 같은 서블릿 스펙(2.3, 2.4)에 따른 것이다.

public java.lang.String getQueryString()

Returns the query string that is contained in the request URL after the path. This method returns null

if the URL does not have a query string. Same as the value of the CGI variable QUERY_STRING.

Returns: a String containing the query string or null if the URL contains no query string. The value is

not decoded by the container.

이를 해결하기 위해서는 다음과 같이 직접 decoding을 처리하면 된다.

//String queryString = request.getQueryString(); // JEUS 4.x

String queryString =

new String(request.getQueryString().getBytes("8859_1"),"EUC-KR");

● jsp:include 에서 expression과 String조합

JEUS 4.x에서는 확장 기능으로 다음과 같이 expression과 String의 조합을 허용했지만 JEUS 5, 6에서

는 허용하지 않는다.

<%

String extName = "jsp";

%>

<jsp:include page="include_test.<%=extName%>"/>

이를 해결하기 위해서는 다음과 같이 expression 내에서 직접 조합하는 방법이 가능하며, 소스의 수정

은 불가피하다.

Appendix D. 호환성(Compatibility) 노트 65

Page 82: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

<%

String extName = "jsp";

%>

<jsp:include page="<%="include_test." + extName%>"/>

● JSP에서 디폴트로 java.io.*를 import

JEUS 4.x와 JEUS 5의 JSP에서는 확장지원을 위해 디폴트로 import를 했었으나, JEUS 6에서부터는

이를 제거하였다. JEUS 6부터는 소스에서 직접 IO 관련 패키지를 import하지 않고 사용한 소스는 에러

가 발생하게 되므로 import를 해주어야 한다.

● String 변수가 null인 경우 처리 방식 변경

String 변수의 값이 null을 가질 경우 JEUS 4.x에서는 null character를 출력하도록 하였는데, JEUS 5부

터는 JSP에서 null을 가지는 String 변수를 화면에 출력할 때 "null"이라고 출력한다. JEUS 4.x의 방식처

럼 출력하게 하기 위해서는 다음의 옵션을 사용한다.

-Djeus.servlet.jsp.print.null.as.emptystring=true

● JSP Parser 변경에 따른 엄격한 문법 체크

JEUS 6는 외부의 웹 프레임워크 사용에 대한 지원 및 이들을 사용할 때 발생할 수 있는 호환성 문제를

방지하기 위해서 Tomcat Jasper 기반의 JSP Parser를 사용한다. 이 Parser는 JSP 스펙과 동일한 수준

에서 엄격하게 문법 체크를 해서 기존에 JSP Parser에서 체크하지 못한 문법을 사용한 JSP 파일을 그

대로 사용할 경우 에러가 발생할 수 있으며, 이로 인하여 JEUS 5 및 이전 버전에서 사용하던 JSP를 그

대로 사용하려고 할 때 문제가 발생할 수 있다.

가장 권장하는 방법은 JSP 파일의 내용 중 스펙과 차이가 나는 부분을 스펙에 맞게 수정을 권고하며,

이 방법을 적용하기가 힘들 경우, 다음의 옵션을 사용하여 JEUS 5 및 이전 버전에서 사용하는 방식으

로 JSP를 우회하여 사용할 수 있다.

-Djeus.servlet.jsp.modern=false

D.2. EJB● EJB 클러스터링 환경에서 클라이언트가 호스트 이름 대신 IP 주소를 이용

JEUS 4.x에서는 클러스터링시에 IP로 서비스를 하지만 JEUS 5부터는 HostName으로 EJB lookup하게

된다. 따라서 클라이언트가 JEUS 6의 EJB를 호출할 때, 서버의 HostName이 DNS에 등록 되어 있지 않

거나, /etc/host파일에 등록되어 있지 않은 경우는 클라이언트가 호스트명을 찾지 못하고 UnknowHos

tException을 출력한다. 이때 다음의 옵션을 사용하면 클라이언트가 호스트 이름 대신 IP 주소를 이용하

여 서버를 찾기 때문에 UnknownHostException 메시지를 출력하지 않는다.

-Djeus.ejb.cluster.useip=true

● 서버의 JDK 버전보다 이전 버전의 JDK을 사용하는 클라이언트에서 EJB를 호출하는 방법

JEUS 6 Fix5부터는 클라이언트에서 사용하는 JDK 버전이 서버의 JDK 버전보다 이전 버전일 경우에도

EJB를 호출할 수 있도록 Stub, Skeleton을 생성한다. 이와 관련하여 클라이언트가 사용하는 JDK의 버

66 JEUS 업그레이드 안내서

Page 83: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

전에 따라서 Stub, Skeleton을 생성할 수 있도록 jeus.ejb.compiler.class.version 이라는 시스템 프로퍼

티를 서버에 지정할 수 있다. 기본값은 1.4이다.

D.3. JDBC● close된 ResultSet을 이용하는 경우 에러 발생

JEUS 4.x에서는 Connection.close()를 호출한 이후에도 ResultSet을 이용할 수 있었다. 하지만 이것은

스펙에 어긋난 부분으로 이런 방식의 코드가 호출 될 경우 JEUS 5, 6에서는 다음과 같은 에러 메시지를

출력한다.

java.sql.SQLException:

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)

at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:186)

at jeus_jspwork.xxx._biz._cp._srt._jsp._500_gramudtjw_5fjsp._jspService

(_500_gramudtjw_5fjsp.java:147)

at jeus.servlet.jsp.HttpJspBase.service(HttpJspBase.java:53)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)

at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:214)

at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:140)

at jeus.servlet.engine.WebtobRequestProcessor.run(WebtobRequestProcessor.java:180)

위의 메시지가 로그상에 나타날 경우 코드를 수정하여 close된 ResultSet을 사용하지 않도록 해야 한다.

이런 방식의 예시 중 한 가지는 ResultSet을 직접 리턴하는 경우가 있다면 이를 List에 넣어서 리턴하도

록 코드 수정해서 해결하는 방법이 있다.

D.4. JVM 버전 변경 영향도

D.4.1. SUN JVM, HP JVM

일반적으로 JEUS 성능 향상을 위해 적절한 JVM 튜닝옵션이 JEUS의 <command-option>에 설정되어 있

기 마련이다.

JEUS 업그레이드를 위해 불가피하게 JVM 버전을 올려서 사용해야 한다면, 각 버전의 변경에 따른 영향

요소를 검토해야 한다. 예를 들면, Hotspot계열의 JVM 1.4는 GC 정책으로 Default Serial Garbage Collector

를 사용하였지만, JVM 1.5 이상에서는 자동으로 서버의 시스템 사양(예, CPU 수 등)을 판단하여 Parallel

Garbage Collector를 기본 GC정책으로 사용하는 등의 내용이다.

또한 JavaSE 신규 버전에서 제공되는 획기적인 개선사항이나 deprecate된 주요 내용들도 검토하여야 한

다. 자세한 사항은 SUN의 홈페이지에서 확인할 수 있다.

http://java.sun.com/j2se/1.5.0/compatibility.html

Appendix D. 호환성(Compatibility) 노트 67

Page 84: 업그레이드 안내서 - TmaxSoft...“제4장 JEUS 5에서 6로 업그레이드” JEUS 5 버전을 6으로 업그레이드할 때 주의해야 할 설정들과 해당 설정들의

D.4.2. IBM JVM

전통적으로 No-Generation Heap(Single Heap Space) 구조를 고수하던 IBM 진영도 JVM 1.5에서는 -

Xgcpolicy:gencon이라는 GC Collector를 추가하여 Hotspot 계열의 JVM이 Heap을 Generation기반으로

나누어 관리하던 기법을 사용할 수 있도록 유연성을 제공하고 있다.

또한 JavaSE 신규 버전에서 제공되는 획기적인 개선사항이나 deprecate된 주요 내용들도 검토해야 한다.

68 JEUS 업그레이드 안내서