jeus release note - tmaxsoft · 2019. 4. 9. · 6.2.1. server ..... 93 6.2.2. webcontainer ..... 94

166
JEUS Release Note JEUS v6.0 Fix#8 Copyright © 2011 TmaxSoft Co., Ltd. All Rights Reserved.

Upload: others

Post on 03-Sep-2020

39 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

JEUS

Release Note

JEUS v6.0 Fix#8

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

Page 2: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

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 Release Note

발행일: 2011-11-04

소프트웨어 버전: JEUS v6.0 Fix #8

안내서 버전: v2.1.3

Page 3: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

내용 목차

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

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

1.1. 릴리즈 이력 ................................................................................................................. 1

제2장 JEUS 6.0 Fix#8 ................................................................................................................ 3

2.1. 버그패치 ...................................................................................................................... 3

2.1.1. Server .............................................................................................................. 3

2.1.2. EJB .................................................................................................................. 3

2.1.3. WebContainer ................................................................................................... 5

2.1.4. JNDI ................................................................................................................. 6

2.1.5. JDBC ................................................................................................................ 7

2.1.6. Transaction ....................................................................................................... 7

2.1.7. Session Server .................................................................................................. 8

2.1.8. Deployment ....................................................................................................... 8

2.1.9. Tool .................................................................................................................. 8

2.1.10. WebAdmin ...................................................................................................... 9

2.1.11. WebService .................................................................................................... 9

2.1.12. Installer ........................................................................................................... 9

2.2. 기능추가 .................................................................................................................... 10

2.2.1. Server ............................................................................................................. 10

2.2.2. WebContainer ................................................................................................. 10

2.2.3. JMS ................................................................................................................ 11

2.2.4. JDBC .............................................................................................................. 13

2.2.5. WebAdmin ...................................................................................................... 13

2.2.6. Installer ........................................................................................................... 14

2.3. 변경사항 .................................................................................................................... 14

2.3.1. EJB ................................................................................................................ 14

2.3.2. WebContainer ................................................................................................. 14

2.3.3. JDBC .............................................................................................................. 15

2.3.4. Session Server ................................................................................................ 15

2.3.5. Tool ................................................................................................................ 15

2.3.6. Installer ........................................................................................................... 16

제3장 JEUS 6.0 Fix#7 ............................................................................................................... 17

3.1. 버그패치 .................................................................................................................... 17

3.1.1. Server ............................................................................................................. 17

3.1.2. EJB ................................................................................................................ 17

3.1.3. WebContainer ................................................................................................. 19

3.1.4. JMS ................................................................................................................ 20

3.1.5. JNDI ............................................................................................................... 20

3.1.6. JDBC .............................................................................................................. 21

JEUS iii

Page 4: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

3.1.7. Transaction ..................................................................................................... 21

3.1.8. Session Server ................................................................................................ 22

3.1.9. Deployment ..................................................................................................... 22

3.1.10. Tool .............................................................................................................. 22

3.1.11. WebAdmin .................................................................................................... 23

3.1.12. WebService ................................................................................................... 23

3.1.13. Security ........................................................................................................ 23

3.2. 기능추가 .................................................................................................................... 23

3.2.1. Server ............................................................................................................. 23

3.2.2. WebContainer ................................................................................................. 24

3.2.3. JMS ................................................................................................................ 25

3.2.4. JNDI ............................................................................................................... 27

3.2.5. JDBC .............................................................................................................. 28

3.2.6. Transaction ..................................................................................................... 29

3.2.7. Session Server ................................................................................................ 30

3.2.8. Deployment ..................................................................................................... 30

3.2.9. Tool ................................................................................................................ 30

3.2.10. WebAdmin .................................................................................................... 31

3.2.11. WebService ................................................................................................... 32

3.2.12. JPA ............................................................................................................... 32

3.2.13. JCA .............................................................................................................. 32

3.3. 변경사항 .................................................................................................................... 33

3.3.1. Server ............................................................................................................. 33

3.3.2. EJB ................................................................................................................ 35

3.3.3. WebContainer ................................................................................................. 36

3.3.4. JMS ................................................................................................................ 36

3.3.5. JDBC .............................................................................................................. 36

3.3.6. Session Server ................................................................................................ 36

3.3.7. Deployment ..................................................................................................... 37

3.3.8. Tool ................................................................................................................ 37

3.3.9. WebAdmin ...................................................................................................... 37

3.3.10. WebService ................................................................................................... 39

3.3.11. JMX .............................................................................................................. 39

3.3.12. JCA .............................................................................................................. 39

3.3.13. Installer ......................................................................................................... 40

제4장 JEUS 6.0 Fix#6 ............................................................................................................... 43

4.1. 버그패치 .................................................................................................................... 43

4.1.1. Server ............................................................................................................. 43

4.1.2. EJB ................................................................................................................ 43

4.1.3. WebContainer ................................................................................................. 44

4.1.4. JNDI ............................................................................................................... 46

4.1.5. JDBC .............................................................................................................. 46

iv JEUS Release Note

Page 5: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

4.1.6. Transaction ..................................................................................................... 47

4.1.7. Session Server ................................................................................................ 47

4.1.8. Deployment ..................................................................................................... 48

4.1.9. Tool ................................................................................................................ 48

4.1.10. WebAdmin .................................................................................................... 49

4.1.11. WebService ................................................................................................... 49

4.1.12. JMX .............................................................................................................. 49

4.1.13. Security ........................................................................................................ 50

4.1.14. Installer ......................................................................................................... 50

4.2. 기능추가 .................................................................................................................... 51

4.2.1. Server ............................................................................................................. 51

4.2.2. EJB ................................................................................................................ 53

4.2.3. WebContainer ................................................................................................. 55

4.2.4. JMS ................................................................................................................ 55

4.2.5. JDBC .............................................................................................................. 56

4.2.6. Deployment ..................................................................................................... 56

4.2.7. Tool ................................................................................................................ 57

4.2.8. WebAdmin ...................................................................................................... 59

4.2.9. WebService .................................................................................................... 60

4.2.10. Installer ......................................................................................................... 60

4.3. 변경사항 .................................................................................................................... 61

4.3.1. Server ............................................................................................................. 61

4.3.2. WebContainer ................................................................................................. 62

4.3.3. JMS ................................................................................................................ 63

4.3.4. JDBC .............................................................................................................. 65

4.3.5. Transaction ..................................................................................................... 66

4.3.6. Session Server ................................................................................................ 66

4.3.7. Client Container ............................................................................................... 66

4.3.8. Deployment ..................................................................................................... 67

4.3.9. Tool ................................................................................................................ 67

4.3.10. WebAdmin .................................................................................................... 67

4.3.11. WebService ................................................................................................... 68

4.3.12. JMX .............................................................................................................. 69

4.3.13. Installer ......................................................................................................... 69

제5장 JEUS 6.0 Fix#5 ............................................................................................................... 71

5.1. 버그패치 .................................................................................................................... 71

5.1.1. Server ............................................................................................................. 71

5.1.2. EJB ................................................................................................................ 71

5.1.3. WebContainer ................................................................................................. 72

5.1.4. JNDI ............................................................................................................... 74

5.1.5. JMS ................................................................................................................ 74

5.1.6. JDBC .............................................................................................................. 75

JEUS v

Page 6: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

5.1.7. Transaction ..................................................................................................... 75

5.1.8. Session Server ................................................................................................ 75

5.1.9. Deployment ..................................................................................................... 75

5.1.10. Tool .............................................................................................................. 76

5.1.11. WebAdmin .................................................................................................... 76

5.1.12. Security ........................................................................................................ 76

5.1.13. WebService ................................................................................................... 76

5.1.14. UDDI ............................................................................................................ 77

5.2. 기능추가 .................................................................................................................... 77

5.2.1. Server ............................................................................................................. 77

5.2.2. EJB ................................................................................................................ 78

5.2.3. WebContainer ................................................................................................. 79

5.2.4. JMS ................................................................................................................ 80

5.2.5. JDBC .............................................................................................................. 81

5.2.6. Session Server ................................................................................................ 82

5.2.7. Deployment ..................................................................................................... 83

5.2.8. Tool ................................................................................................................ 83

5.2.9. WebAdmin ...................................................................................................... 84

5.2.10. Security ........................................................................................................ 85

5.2.11. WebService ................................................................................................... 85

5.2.12. Installer ......................................................................................................... 85

5.3. 변경사항 .................................................................................................................... 86

5.3.1. EJB ................................................................................................................ 86

5.3.2. JNDI ............................................................................................................... 86

5.3.3. JDBC .............................................................................................................. 86

5.3.4. Transaction ..................................................................................................... 87

5.3.5. Session Server ................................................................................................ 87

5.3.6. Deployment ..................................................................................................... 88

5.3.7. Tool ................................................................................................................ 88

5.3.8. WebAdmin ...................................................................................................... 88

5.3.9. Security .......................................................................................................... 89

5.3.10. Installer ......................................................................................................... 89

제6장 JEUS 6.0 Fix#4 ............................................................................................................... 91

6.1. 버그패치 .................................................................................................................... 91

6.1.1. EJB ................................................................................................................ 91

6.1.2. Webcontainer .................................................................................................. 91

6.1.3. JMS ................................................................................................................ 92

6.1.4. Session Server ................................................................................................ 92

6.1.5. JDBC .............................................................................................................. 92

6.1.6. JPA ................................................................................................................. 93

6.1.7. Windows Service ............................................................................................. 93

6.2. 기능추가 .................................................................................................................... 93

vi JEUS Release Note

Page 7: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

6.2.1. Server ............................................................................................................. 93

6.2.2. Webcontainer .................................................................................................. 94

6.2.3. JDBC .............................................................................................................. 94

6.2.4. Tool ................................................................................................................ 94

6.2.5. WebAdmin ...................................................................................................... 96

6.2.6. Security .......................................................................................................... 96

6.2.7. WebService .................................................................................................... 96

6.2.8. Network Layer ................................................................................................. 96

6.3. 변경사항 .................................................................................................................... 97

6.3.1. EJB ................................................................................................................ 97

6.3.2. Webcontainer .................................................................................................. 97

6.3.3. JMS ................................................................................................................ 97

6.3.4. JDBC .............................................................................................................. 98

6.3.5. WebAdmin ...................................................................................................... 98

6.3.6. WebService .................................................................................................... 98

제7장 JEUS 6.0 Fix#3 ............................................................................................................... 99

7.1. 버그패치 .................................................................................................................... 99

7.1.1. EJB ................................................................................................................ 99

7.1.2. JMS ................................................................................................................ 99

7.1.3. Server ............................................................................................................. 99

7.1.4. Session Server .............................................................................................. 100

7.1.5. JDBC ............................................................................................................ 100

7.1.6. Tool .............................................................................................................. 100

7.1.7. JNDI ............................................................................................................. 100

7.1.8. WebService ................................................................................................... 100

7.2. 기능추가 .................................................................................................................. 101

7.2.1. EJB .............................................................................................................. 101

7.2.2. Server ........................................................................................................... 101

7.2.3. JDBC ............................................................................................................ 101

7.2.4. Tool .............................................................................................................. 102

7.2.5. WebAdmin .................................................................................................... 102

7.2.6. Security ........................................................................................................ 102

7.2.7. WebService ................................................................................................... 103

7.2.8. JNDI ............................................................................................................. 105

7.3. 변경사항 .................................................................................................................. 105

7.3.1. EJB .............................................................................................................. 105

7.3.2. JDBC ............................................................................................................ 105

7.3.3. Tool .............................................................................................................. 106

7.3.4. WebAdmin .................................................................................................... 106

7.3.5. UDDI ............................................................................................................ 107

7.3.6. License ......................................................................................................... 107

제8장 JEUS 6.0 Fix#2 ............................................................................................................. 109

JEUS vii

Page 8: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

8.1. 버그패치 .................................................................................................................. 109

8.1.1. EJB .............................................................................................................. 109

8.1.2. WebContainer ............................................................................................... 110

8.1.3. Session Server .............................................................................................. 111

8.1.4. WebService ................................................................................................... 111

8.1.5. JDBC ............................................................................................................ 112

8.1.6. Transaction .................................................................................................... 112

8.1.7. Deployment ................................................................................................... 113

8.1.8. Tool .............................................................................................................. 113

8.1.9. WebAdmin .................................................................................................... 113

8.1.10. Security ....................................................................................................... 114

8.1.11. JNDI ........................................................................................................... 114

8.2. 기능추가 .................................................................................................................. 114

8.2.1. JMS .............................................................................................................. 114

8.2.2. WebConatiner ............................................................................................... 115

8.2.3. Session Server .............................................................................................. 115

8.2.4. WebService ................................................................................................... 116

8.2.5. JDBC ............................................................................................................ 116

8.2.6. Transaction .................................................................................................... 118

8.2.7. Tool .............................................................................................................. 118

8.2.8. WebAdmin .................................................................................................... 120

8.3. 변경사항 .................................................................................................................. 120

8.3.1. EJB .............................................................................................................. 120

8.3.2. WebContainer ............................................................................................... 121

8.3.3. Server ........................................................................................................... 121

8.3.4. WebService ................................................................................................... 122

8.3.5. JDBC ............................................................................................................ 122

8.3.6. Deployment ................................................................................................... 122

8.3.7. Tool .............................................................................................................. 124

8.3.8. WebAdmin .................................................................................................... 124

제9장 JEUS 6.0 Fix#1 ............................................................................................................ 125

9.1. 버그패치 .................................................................................................................. 125

9.1.1. WebContainer ............................................................................................... 125

9.1.2. JDBC ............................................................................................................ 125

9.1.3. JMS .............................................................................................................. 126

9.1.4. WebService ................................................................................................... 126

9.1.5. UDDI ............................................................................................................ 127

9.1.6. EJB .............................................................................................................. 127

9.1.7. Deployment ................................................................................................... 127

9.1.8. Tool .............................................................................................................. 128

9.2. 기능추가 .................................................................................................................. 128

9.2.1. WebContainer ............................................................................................... 128

viii JEUS Release Note

Page 9: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

9.2.2. JMS .............................................................................................................. 129

9.2.3. WebService ................................................................................................... 129

9.2.4. WebAdmin .................................................................................................... 129

9.2.5. EJB .............................................................................................................. 130

9.2.6. Tool .............................................................................................................. 130

9.2.7. JDBC ............................................................................................................ 130

9.3. 변경사항 .................................................................................................................. 130

9.3.1. JMS .............................................................................................................. 130

9.3.2. WebContainer ............................................................................................... 131

9.3.3. Deployment ................................................................................................... 131

9.3.4. WebAdmin .................................................................................................... 131

9.3.5. Server ........................................................................................................... 131

제10장 JEUS 6.0 ................................................................................................................... 133

10.1. 주요 기능 사항들 .................................................................................................... 133

10.1.1. 개요 ............................................................................................................ 133

10.1.2. Specification 변경 ........................................................................................ 133

10.1.3. JEUS Server ............................................................................................... 135

10.1.4. EJB ............................................................................................................. 137

10.1.5. Web Container ............................................................................................. 137

10.1.6. Web Service ................................................................................................ 138

10.1.7. JMS ............................................................................................................ 139

10.1.8. Session Server ............................................................................................ 139

10.1.9. JDBC .......................................................................................................... 140

10.1.10. Security ..................................................................................................... 140

10.1.11. WebAdmin ................................................................................................. 141

10.2. 변경 사항 ............................................................................................................... 141

10.2.1. JEUS Server ............................................................................................... 141

10.2.2. EJB ............................................................................................................. 142

10.2.3. Web Container ............................................................................................. 143

10.2.4. Session Server ............................................................................................ 144

10.2.5. JDBC .......................................................................................................... 144

10.2.6. Tool ............................................................................................................. 144

10.2.7. 디렉터리 변경 사항 ...................................................................................... 145

10.2.8. 기타 변경 사항 ............................................................................................. 146

10.3. 모듈별 설정 변경 사항 ............................................................................................. 146

10.3.1. EJB ............................................................................................................. 146

10.3.2. WebContainer .............................................................................................. 147

10.3.3. Security ....................................................................................................... 147

JEUS ix

Page 10: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94
Page 11: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

표 목차

[표 10.1] JEUS에서 지원하는 Specification ............................................................................... 133

JEUS xi

Page 12: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94
Page 13: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

안내서에 대하여

안내서의 대상

본 안내서는 JEUS 6의 새로운 기능과 이전 버전에 대한 변경 사항에 대해서 설명한다. 주요 대상은 이전

버전의 JEUS를 사용한 개발자나 관리자를 대상으로 한다.

안내서의 전제 조건

본 안내서를 읽기 위해서는 이전 버전의 JEUS에 대해서 충분히 알고 있다고 전제한다. JEUS를 처음 접

하는 사용자는 본 안내서 대신에, JEUS 소개를 읽어보길 권한다.

JEUS 6는 기존 버전에 비해서 다양한 실사용 환경에 적용하기 위한 기능이 추가되었다. 본 안내서에서는

변경된 기능에 대해서 간단히 언급하며, 자세한 내용은 해당 안내서를 참고한다.

안내서의 제한 조건

본 안내서는 JEUS 6의 전체 내용을 다루기 어려우므로, 반드시 해당 안내서를 참조하기 바란다.

안내서 구성

JEUS 릴리즈노트는 다음과 같이 구성되어 있다.

● “제2장 JEUS 6.0 Fix#8”

● “제3장 JEUS 6.0 Fix#7”

● “제4장 JEUS 6.0 Fix#6”

● “제5장 JEUS 6.0 Fix#5”

● “제6장 JEUS 6.0 Fix#4”

● “제7장 JEUS 6.0 Fix#3”

● “제8장 JEUS 6.0 Fix#2”

● “제9장 JEUS 6.0 Fix#1 ”

● “제10장 JEUS 6.0 ”

안내서에 대하여 xiii

Page 14: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

안내서 규약

의미표기

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

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

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

강조진하게

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

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

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

메뉴의 진행 순서>

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

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

참고 또는 주의사항참고

주의할 사항주의

그림 이름[그림 1.1]

표 이름[표 1.1]

Java 코드, XML 문서AaBbCc123

옵션 파라미터[ command argument ]

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

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

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

xiv JEUS Release Note

Page 15: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

시스템 사용 환경

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

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

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

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

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

관련 안내서

본 문서를 읽은 후에는 다음 안내서를 읽어보기를 권한다.

설명안내서

JEUS 6 서버에 대한 전반적인 소개와 JEUS의 아키텍처를 포함하

여 각 구성 요소들에 대해 설명한 안내서이다.

JEUS 소개

JEUS에 대한 소개와 설치 및 시작 방법에 대해 기술한 안내서이다.JEUS 설치 및 시작하기

JEUS의 웹 관리 툴인 WebAdmin을 사용한 JEUS 의 설정 및 제어,

모니터링, 클러스터링, 리소스 설정 및 관리에 대해 기술한 안내서이

다.

JEUS WebAdmin 안내서

JEUS 시스템과 서버의 개요와 시스템 관리를 위한 안내서이다.JEUS Server 안내서

JEUS EJB 엔진과 EJB 모듈의 Deploy에 대해 기술한 안내서이다.JEUS EJB 안내서

JEUS 웹 컨테이너의 관리에 대해 내용과 Java EE WAR Archive, 서

블릿/JSP의 관리 및 Deploy하는 방법에 대해 기술한 안내서이다.

JEUS Web Container 안내서

JEUS 메시지 기반 시스템(JMS)에 대해 기술한 안내서이다.JEUS MQ 안내서

JEUS 내의 웹 서비스에 대해 기술한 안내서이다.JEUS Web Service 안내서

JMX를 사용하여 JEUS를 관리하기 위한 내용을 기술한 안내서이다.JEUS JMX 안내서

산업 표준인 SNMP 프로토콜을 이용한 JEUS 모니터링에 대해 설명

한 안내서이다.

JEUS SNMP 안내서

JEUS와 Legacy 시스템과의 연결을 위한 Connector에 대해 기술한

안내서이다.

JEUS JCA 안내서

JEUS에 통합된 TopLink Essential의 사용 방법에 대해 기술한 안내

서이다.

JEUS JPA 안내서

JEUS의 Scheduler 기능에 대해 기술한 안내서이다.JEUS Scheduler 안내서

Java EE 애플리케이션을 JEUS에 Deploy하기 위한 여러 가지 방법

과 툴에 대해 기술한 안내서이다.

JEUS Application & Deployment

안내서

Java EE 클라이언트와 JEUS 사이의 상호 운용에 대해 기술한 안내

서이다.

JEUS Application Client 안내서

안내서에 대하여 xv

Page 16: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

설명안내서

JEUS에서 Security 시스템의 설정 및 운용 방법과 Security 관련 프

로그래밍에 대해 기술한 안내서이다.

JEUS Security 안내서

JEUS를 사용할 때 도움이 되는 Reference를 기술한 안내서이다.JEUS Reference Book

참고 자료

● 문서 내에 언급되는 스펙들

xvi JEUS Release Note

Page 17: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

연락처

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

안내서에 대하여 xvii

Page 18: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

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

xviii JEUS Release Note

Page 19: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

제1장 소개

JEUS 릴리즈 노트는 JEUS 6.0의 새로운 기능과 이전 버전에서부터 변경된 사항을 정리한 매뉴얼이다.

JEUS 6.0는 기존 버전에 비해서 다양한 실사용 환경에 적용하기 위한 기능이 추가되었다. 그러나 본 매뉴

얼은 JEUS 6.0의 전체 내용을 다루기 어려우므로, 반드시 해당 매뉴얼을 참조하기 바란다.

1.1. 릴리즈 이력

버전일자

JEUS 6.02007-06-07

JEUS 6.0 FIX#12007-08-11

JEUS 6.0 FIX#22007-12-14

JEUS 6.0 FIX#32008-03-20

JEUS 6.0 FIX#42008-06-12

JEUS 6.0 FIX#52008-11-25

JEUS 6.0 FIX#62009-04-30

JEUS 6.0 FIX#72010-03-31

JEUS 6.0 FIX#82011-11-04

제1장 소개 1

Page 20: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94
Page 21: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

제2장 JEUS 6.0 Fix#8

본 장에서는 JEUS 6.0 Fix#8에서의 버그패치, 기능추가, 변경사항에 대해서 설명한다.

2.1. 버그패치

2.1.1. Server

● Manager에서 엔진 컨테이너를 기동하기 위한 command를 생성할 때 JEUS 스크립트에 설정한 시스

템 프로퍼티가 제대로 전달되지 않을 수 있는 문제 수정

Manager에서 엔진 컨테이너의 command를 생성할 때 JEUS 스크립트에 설정한 시스템 프로퍼티가 제

대로 전달되지 않을 수 있다.

예를 들면, JEUS 스크립트에 -Djeus.aaa.bbb=ccc와 -Djeus.aaa.bbb-ccc=ddd를 주었을 때 -

Djeus.aaa.bbb=ccc는 무시되고 -Djeus.aaa.bbb-ccc=ddd만 전달되는 경우가 있다. 이는 startsWith 연

산을 하여 발생한 문제였으며, equals 연산을 하도록 하여 프로퍼티가 둘 다 적용이 되도록 수정하였다.

● 로그 메시지가 거의 없는 경우 Log Rotation이 오동작하는 경우에 대한 문제 수정

로그가 거의 없을 때 로그 파일이 삭제되었는지 여부를 확인하는 시간과 로그를 기록하는 시간이 겹쳐

져서 삭제 여부만 확인하고 넘어가기 때문에 버퍼에 있는 로그 메시지들이 이전 파일에 찍히는 문제가

있었는데 이를 수정하였다.

● IBM JDK1.6을 사용할 때 Throwable.printStackTrace()가 불리면 trace가 한 줄로 출력되는 문제 수정

IBM JDK1.6을 사용할 때 Throwable.printStackTrace()가 불리면 trace가 한 줄로 출력되어서 stack trace

를 보기 힘든 문제가 있었으나 이를 수정하여 한 줄로 출력되지 않도록 하였다.

2.1.2. EJB

● Stateful Session Bean에서의 concurrent access 문제 수정

Stateful Session Bean을 여러 사용자가 lookup → create → business method → remove를 반복하면

다음과 같은 Exception이 발생한다.

java.rmi.NoSuchObjectException: no such object in table

java.rmi.RemoteException: concurrent access of same stateful session bean method

is not allowed

제2장 JEUS 6.0 Fix#8 3

Page 22: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

java.rmi.NoSuchObjectException: unexported object

javax.ejb.NoSuchEJBException: No such EJB, it may be removed due to timeout

하나의 Session ID를 사용하지 않고 EJBObjectHandler의 Session ID를 사용하다가 context의 Session

ID를 사용해서 발생하는 문제이다.

이를 해결하기 위해 Stateful Session Bean의 <connect-pool>의 <max>의 기본값을 0으로 변경하고, 서

버 로그에는 다음과 같은 경고 메시지를 출력한다.

[2011.10.19 11:42:03][1][b283] [container1-129] [EJB-8154] WARNING: jeus-ejb-dd.xml

of EJB module[xmldd2] contains DEPRECATED <connect-pool> element for EJB[counter].

<connect-pool> setting is ignored.

● ejb-jar.xml에서 <env-entry>의 <env-entry-type>이 없을 경우 <injection-target>의 field나 메소드를

보고 반영되지 않는 문제를 수정

<env-entry>의 <env-entry-type> 이 없는 경우 디플로이가 되지 않았지만, 이를 수정하여 <injection-target>

의 field나 메소드를 보고 반영되도록 하였다.

● EJB Timer Service를 사용할 때 <durable-setting>에 XADataSource를 사용하면 엔진 부팅이 안되

는 문제를 수정

EJB Timer Service를 사용하기 위해 EJBMain.xml 설정에서 <durable-setting>의 <data-source-name>

에 XADataSource를 사용하여 JeusTimerBean을 디플로이하면 엔진 부팅이 되지 않는 현상을 수정하

였다.

● EAR, EJB ClassLoader(ArchiveArrayClassLoader)의 리소스를 slash('/')로 시작하는 이름으로 ge

tResource()를 통해 접근할 경우, 잘못된 리소스가 반환되는 문제 수정

ArchiveArrayClassLoader의 리소스를 slash('/')를 통해 gerResource()를 할 경우 기본 URL이 무시되고

slash('/')로 시작되는 이름만 반환되는 문제를 수정하였다.

● precompile한 EJB를 source만 수정한 후 다시 appcompiler를 수행하지 않고 fast-deploy=false,

keep-generated=false로 디플로이한 경우 새로운 source가 반영되지 않는 문제 수정

fast-deploy=false인 경우 impl, skel(stub)을 새로 generate한다. impl 컴파일이 끝나고 skel(stub)을 컴파

일할 때 impl class를 참조하게 되는데 애플리케이션 내에 프리컴파일(precompile)되어 있는 이전 impl

을 참조하게 되어 컴파일 에러가 발생하는 문제를 수정하였다.

● Entity Bean의 <subengine-type>의 설정이 default인 ReadLocking으로 수행되는 문제 수정

jeus-ejb-dd.xml에 <cm-persistence-optimize>의 <subengine-type>를 설정하여도 적용되지 않고 default

인 ReadLocking으로 수행되지 않도록 수정하였다.

● 서로 다른 트랜잭션에서 하나의 EntityBean을 동시에 접근하는 경우에 reentrant invocation is not

allowed...가 발생되는 문제 수정

한 트랜잭션에서 하나의 entity bean이 동시에 호출되는 경우만 reentrant인데 서로 다른 트랜잭션이 하

나의 entity bean을 호출하는 경우에 발생하지 않도록 수정하였다.

● EJB 3.x에서 DLR의 link를 선택하는 policy를 round-robin으로 설정했을 때 제대로 동작하지 않는 문

제 수정

4 JEUS Release Note

Page 23: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

ThreadLocal에 index를 두어 같은 스레드로 요청할 경우 index를 증가시키는 방법이 아닌, DLR 객체에

round-robin을 위한 index를 두어서 해당 클라이언트에서 같은 DLR을 다시 lookup할 때 index를 증가시

켜서 사용하도록 하였다. EJB 3.x에서 일부 DLR link에서만 round-robin이 동작하는 것을 수정하였다.

단, 캐시(cache)를 사용할 때만 round-robin 방식이 적용된다.

2.1.3. WebContainer

● Context-group 밖에 Access log를 생성되지 않도록 설정해도 Access log가 생성되는 현상 수정

WEBMain.xml의 Context-group 밖에 <accesslogging><enable>을 false로 설정하여도 적용되지 않던

문제를 수정하였다.

● Static file(css, png등)에 대한 요청을 수행할 경우 FileDescriptor(FD)가 계속 증가하는 오류 수정

Static file(css, png등)에 대한 요청을 수행할 경우 FileInputStream을 close하도록 수정하여

FileDescriptor가 계속 증가하지 않도록 수정하였다.

● 컴파일된 JSP Servlet Class가 있는 폴더를 심볼릭 링크로 공유하여 사용할 때 변경된 내용이 먼저 호

출된 컨테이너에만 반영되는 문제 수정

컴파일된 JSP Servlet Class가 서로 다른 컨테이너에서 공유될 때 컴파일을 시도한 컨테이너 외에 참조

하는 다른 컨테이너에서도 클래스의 변경을 감지하여 반영되도록 수정하였다.

● WebtoB와 pipe로 연결되어 있어도 jsvport 번호(9900)가 보이는 오류 수정

JEUS와 WebtoB를 연결할 때 pipe로 연결 되었음에도 9900 포트로 연결되었다는 로그 대신, 포트 번호

를 출력하지 않아 pipe로 연결되었음을 보여주도록 다음과 같이 수정하였다.

[2011.10.24 20:32:23][2][b283] [container1-39] [WEB-3384] WebtoB

connection[unix(hth-0:9900:152)] established

● Shared library를 사용하는 애플리케이션 디플로이의 경우, libraries.xml에 명시한 .jar파일이 없을 때

파일명으로 폴더가 생성되는 현상 수정

Shared library를 사용하는 애플리케이션 디플로이의 경우 libraries.xml에 명시한 .jar파일이 없을 때 파

일명으로 폴더가 생성되는 현상을 수정하였다. 또한, 해당 jar파일이 없다는 로그 메시지를 출력하도록

수정하였다.

● request header에 content-type 값이 null로 설정되어 있으면 파일이 다운로드되는 문제를 수정

request header에 content-type이 null로 설정되어 있으면 content-type에 잘못된 값이 설정되어 파일이

다운로드 되는 문제를 수정하였다.

● jeus-web-dd.xml에 webinf-first의 속성값이 true이면 false일 때에 비해 성능이 떨어지는 문제를 수정

jeus-web-dd.xml에 webinf-first의 속성값이 true이면 리소스에 대한 url이 캐싱되지 않아 성능이 false일

때에 비해 성능이 저하되는 문제를 수정하였다.

● Servlet에서 forward로 한글 파라미터를 전송할 경우 한글이 깨지는 문제를 수정

Servlet에서 forward로 한글 파라미터를 전송하는 경우 한글이 깨지는 문제를 수정하였다.

제2장 JEUS 6.0 Fix#8 5

Page 24: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● SpringFramework과 JEUS의 WorkerServlet을 동시에 설정하면 default-servlet-handler가 동작하

지 않는 문제를 수정

SpringFramework 3.X 버전에서 JEUS의 WorkerServlet을 동시에 설정하면 default-servlet-handler가

동작하지 않은 문제를 수정하였다.

● web.xml에 설정된 사용자 정의 필터에서 doFilter()를 실행하면 out.write()가 실행되지 않는 문제를 수

web.xml에 설정된 사용자 정의 필터에서 doFilter()를 실행하면 out.write()가 실행되지 않는 문제를 수정

하였다.

● Windows에서 ear파일이 수정되지 않는 문제를 수정

Windows에서 디플로이된 ear 모듈이 제거 및 수정되지 않아 Redeploy할 수 없는 문제를 수정하였다.

● web.xml에 정의된 DOCTYPE을 http connection으로 동작하려는 문제를 수정

web.xml에 정의된 DOCTYPE을 http connection으로 동작하여 인터넷이 되지 않는 환경에서 동작하지

않는 문제를 JEUS 내부의 dtd로 인식할 수 있도록 문제를 수정하였다.

● jspServlet을 사용할 경우 init param이 설정되지 않는 문제를 수정

jspServlet을 사용할 경우 설정 된 init param이 설정되지 않는 문제를 수정하였다.

● WEBMain.xml에 인코딩 설정이 되어 있지 않은 경우, Resource Servlet에서 한글이 깨지는 문제를 수

WEBMain.xml에 인코딩 설정이 되어 있지 않은 경우, Resource Servlet에서 한글이 깨지는 문제를 수

정하였다

2.1.4. JNDI

● 클라이언트의 security principal이 anonymous인 경우 모든 operation이 되는 문제 수정

clientAuthorize()인 경우 anonymous는 OP_AUTHENTICATE 메시지를 보내지 않아 모든 operation이

수행 가능한 문제가 발생하여 anonymous인 경우에도 서버로 OP_AUTHENTICATE 메시지를 보내도

록 수정하였다.

● DLR의 link를 선택하는 policy를 round-robin으로 설정할 때 IndexOutOfBoundsException이 발생

하는 문제 수정

round-robin을 수행할 때 available link list의 마지막 link에서 fail이 발생하면 IndexOutOfBoundsException

이 발생하는 문제를 수정하였다.

● JNDI InitialContext 설정에서 security를 사용할 경우 fail-over가 안되는 현상

stand-alone 방식의 클라이언트에서 security를 사용하고 클러스터링을 할 경우 fail-over가 안되는 문제

를 수정하였다.

6 JEUS Release Note

Page 25: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

2.1.5. JDBC

● Cluster DataSource를 사용할 때 fail-back 후 primary의 Connection 개수가 min에 미치지 못하는

상태에서 시작하는 문제 수정

Cluster DataSource를 사용 할 때 fail-back 후 primary의 Connection 개수에 대한 조정 작업이 없어서

min보다 적은 상태에서 시작하는 문제가 있었다. 이를 fail-back 중에 Connection Pool의 current 수를

최소 min으로 보장 받을 수 있도록 수정하였다.

● jeus.jdbc.check-connection-closed 옵션 추가

기본적으로 Connection.close()를 호출한 뒤에 다른 API(prepareStatement(), getAutoCommit(), setAu

toCommit() 등)를 호출하는 것은 잘못된 동작이며 javadoc에도 명시적으로 추가되어 있기 때문에 JEUS

6.0에서는 항상 Exception을 발생시켰다. 하지만 JEUS 4.x 버전과 JEUS 5.x 마이너 버전(fix#18 이하)

에서는 connection의 close 상태를 체크하지 않고 사용자의 API 호출을 그대로 JDBC 드라이버에 전달

하기 때문에 하위 호환성을 위하여 옵션을 추가하였다.

이 하위 호환성을 위한 옵션은 jeus.jdbc.check-connection-closed이며 default 값은 true 이다.

● Cluster DataSource를 lookup할 때 잘못된 객체가 리턴되어 Exception이 발생하는 문제 수정

Cluster DataSource를 lookup할 때 잘못된 객체가 리턴되어 애플리케이션에서 ClassCastException이

발생하는 문제가 있어 이를 수정하였다.

● 툴을 이용하여 Connection Pool을 생성할 때 설정한 DataSource Target이 올바르게 적용되지 않는

문제 수정

jeusadmin의 createds 명령이나 WebAdmin에서 [생성] 버튼을 이용하여 connection pool을 생성할 때,

datasource에 지정된 datasource target과 상관 없이 모든 컨테이너에 pool이 생성되는 문제가 있었으

나, datasource target이 설정되어 있을 때에 이를 가려서 지정된 target의 컨테이너에만 pool이 생성될

수 있도록 수정하였다.

● <keep-connection-handle-open>이나 <stmt-caching-size>를 설정했을 때 Connection.close()를

호출할 경우 auto-commit 값이 복구되지 않는 문제 수정

<keep-connection-handle-open>이나 <stmt-caching-size>를 설정했을 때 Connection.close()를 호출해

도 auto-commit 값이 계속 유지되는 문제가 있었다. 이를 auto-commit 값이 default 값으로 복구되도록

수정하였다.

2.1.6. Transaction

● <tm-config>/<pooling>/<max>를 4미만으로 설정하면 JEUS의 기동이 실패하는 문제 수정

pooing step의 default가 4인데 <max>가 그것보다 작은 경우 JeusException을 발생시켜 JEUS의 기동

이 실패하는 문제가 발생하여 step 관련 validation checking logic을 삭제하였다.

제2장 JEUS 6.0 Fix#8 7

Page 26: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

2.1.7. Session Server

● 애플리케이션을 Redeploy할 때 ConcurrentModificationException이 발생하는 문제를 수정

애플리케이션을 Redeploy할 때 세션 서버에서 기존의 세션을 복원하면서 ConcurrentModificationExcep

tion이 발생하는 문제를 수정하였다.

● 분산식 세션 서버에서 <default-file-db><path> 설정이 있는 경우에도 기본 경로에 파일이 생기는 문제

를 수정

분산식 세션 서버에서 $JEUS_HOME/logs/sessiondb/distributed에 기본적으로 파일 테이터베이스가

생성되는데, <default-file-db><path>를 설정해도 기본 경로에 파일이 생기는 현상을 수정하였다.

● Primary Session Server에서 Backup Session Server로 Dumpbackup할 때 존재하지 않는 세션도

업데이트하는 문제를 수정

세션 서버의 <recovery-mode>가 active, none일 경우 Primary Session Server에서 Backup Session

Server로 Dumpbackup할 때 존재하지 않는 세션을 업데이트하는 문제를 수정하였다.

2.1.8. Deployment

● Jant 명령을 이용하여 디플로이할 때 exploded 형태의 애플리케이션이 디플로이되지 않는 현상을 수

Jant 명령을 이용하여 디플로이할 때 exploded 형태의 애플리케이션이 디플로이되지 않는 문제를 애플

리케이션이 packaging된 상태로 디플로이되도록 수정하였다.

2.1.9. Tool

● upgrade4to6에서 EJB 모듈이 정상적으로 변환되지 않는 문제 수정

JEUS 4에 사용되던 EJB 모듈이 내부에 '_moduleName' 이 붙은 DD 파일(ejb-jar_moduleName.xml,

jeus-ejb-dd_moduleName.xml)이 존재하는 경우, 정상적으로 변환되지 않는 문제를 수정하였다.

● upgrade4to6에서 app, regapp-all 옵션을 사용할 때 애플리케이션이 정상적으로 이전되지 않는 문제

수정

upgrade4to6에서 app, regapp-all 옵션을 사용할 때 애플리케이션이 정상적으로 이전되지 않는 문제를

수정하였다.

● jeusadmin의 ti 명령어에서 -il, -con 옵션이 동작하지 않는 문제 수정

jeusadmin의 ti 명령어에서 -il, -con 옵션이 동작하지 않는 문제를 수정하였다.

● 노드 클러스터링이 설정된 경우 jeusadmin에서 pidlist -a 명령을 실행하면 하나의 노드 정보만 출력되

는 문제 수정

노드 클러스터링이 설경된 경우 jeusadmin에서 pidlist -a를 명령을 실행했을 때 하나의 노드 정보를 클

러스터링된 수만큼 보여주는 문제를 수정하였다.

8 JEUS Release Note

Page 27: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

2.1.10. WebAdmin

● EJB Statistic 페이지에서 ClassCastException 발생하는 문제 수정

다른 타입의 EJB(Stateless, Stateful, Entity, MDB) 모듈을 디플로이한 경우 최초 요청한 타입으로 고정

되어 ClassCastException이 발생하는 문제를 수정하였다.

● JDBC 데이터 소스의 바인드 동작이 정상적으로 수행되지 않는 현상 수정

데이터 소스가 이미 바인드된 경우 바인드 버튼이 disable되지 않는 문제와 바인드되지 않은 데이터 소

스를 바인드 할 경우 바인드 동작은 수행되지만 바인드 실패 메시지가 출력되는 문제를 수정하였다.

● JMS 클라이언트 리소스 페이지의 호스트와 포트 정보가 표시 되지 않는 문제 수정

JMS 클라이언트 리소스 페이지의 호스트와 포트로 표시되는 부분을 원격 주소로 표시하도록 수정하였

다.

2.1.11. WebService

● 여러 개의 WebService가 서로 다른 WSDL 파일을 사용하는 경우 발생하는 오류 수정

webservices.xml에 명시된 둘 이상의 WebService가 서로 다른 WSDL 파일을 사용할 때 targetNamespace

가 동일한 경우 발생하는 오류를 수정하였다.

● Jant 명령을 이용하여 java2wsdl 및 wsdl2java 툴을 실행할 때 발생하는 오류 수정

Jant 명령을 이용하여 java2wsdl 및 wsdl2java 툴을 실행할 때 정상적으로 동작하지 않던 버그를 수정

하였다.

● Java2wsdl 툴을 사용하여 -d 옵션으로 경로를 지정할 때 발생하는 오류 수정

Java2wsdl 툴을 사용하여 -d 옵션으로 경로를 지정할 때 디렉터리 끝에 file separator가 있는 경우(D:\,

D:\src\)에는 정상적으로 동작하지 않던 버그를 수정하였다.

2.1.12. Installer

● WebService 예제 중 JAX-RPC WebService 호출 부분 오류 수정

WebService 예제 중 JAX-RPC 방식의 WebService 호출 중 RPC Style과 Encoded Style을 사용하는 예

제에서 OPERATION_STYLE과 ENCODINGSTYLE을 설정하도록 예제 소스 코드에 다음과 같이 추가

하였다.

call.setProperty(Call.OPERATION_STYLE_PROPERTY, "rpc");

call.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY,

"http://schemas.xmlsoap.org/soap/encoding/");

제2장 JEUS 6.0 Fix#8 9

Page 28: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

2.2. 기능추가

2.2.1. Server

● IPv6 지원기능 추가

JEUS 6.0 Fix#8부터 JEUS 및 내장 WebtoB가 IPv6를 지원한다. 제품 설치 후 몇 가지 옵션을 통하여

IPv6를 사용할 수 있으며, 자세한 내용은 "JEUS 설치 및 시작하기"를 참고한다.

IPv6는 Windows를 제외한 JEUS가 지원하는 모든 플랫폼에서 사용할 수 있다.

참고

Windows의 경우, IPv6는 JDK 7 이후에서 지원하기 때문에 Java EE 5/6를 지원하는 JEUS 6.0 Fix#8

에서는 IPv6를 지원하지 않는다. 자세한 내용은 다음을 참고한다.

- http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6230761

- http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6936010

2.2.2. WebContainer

● Trial 라이선스를 사용할 때 6번째 사용자부터 403오류가 발생하는데 이때 라이선스 문제라고 보여지

는 로그 추가

사용자수가 최대 5명인 trial 라이선스를 사용할 때 6번째 사용자부터 403오류가 발생한다. 이때 라이선

스 문제라고 보여지는 다음과 같은 로그가 추가되었다.

This request is denied. Because this license restricts the number of allowed clients.

LICENSE EDITION: ENTERPRISE (Trial License), Max number of clients: 5

● response header에 connection 타입을 설정할 수 있는 옵션 추가

기존에는 WebtoB의 KeepAlive 설정에 따라 response header의 connection 타입이 설정되었는데 이를

WebtoB와 상관 없이 설정할 수 있도록 기능이 추가되었다.

WEBMain.xml

<webtob-listener>

<connection-type></connection-type>

</webtob-listener>

● modjk 1.2.27에 추가 된 ping_mode, ping_timeout 옵션 지원

modjk 1.2.27의 설정 중 workers.properties에 추가 된 ping_mode, ping_timeout 기능을 추가 지원한다.

기능에 대한 설명은 다음의 매뉴얼을 참고한다.

– workers.properties

10 JEUS Release Note

Page 29: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

http://tomcat.apache.org/connectors-doc/reference/workers.html

– 프로토콜

http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html

● 사용자 정의 accesslog 필터 기능 추가

JEUS에서 제공하고 있는 AccessLoggerFilter interface를 통해 클라이언트 Address, 요청 메소드, 요청

uri, 상태, 처리시간별로 선택하여 원하는 accesslog에 로그를 남기도록 하는 기능을 추가하였다. 자세

한 내용은 “JEUS Web Container 안내서”의 절 2.4.2. “Access log 필터 설정”을 참고한다.

2.2.3. JMS

● WebAdmin에서 JMS 메시지 관리 기능 추가

Queue나 Durable Subscriber에 쌓여 있는 메시지에 대해 다음과 같은 관리 기능을 제공한다.

– 쌓여 있는 메시지의 목록 보기 기능

– 개별 메시지에 대한 Header 정보, 프로퍼티 정보, Text Body 보기 기능

– 개별 메시지에 대한 삭제 기능

● Message Sorting 기능 추가

JMS Message Sorting 기능이 추가되었다.

다음은 Message Sorting 기능에 대한 설정 예이다.

<jms-server>

...

<message-sort>

<name>example</name>

<key>TEST</key>

<direction>ascending</direction>

<type>Integer</type>

</message-sort>

...

<destination>

<type>queue</type>

<name>ExamplesQueue</name>

<message-sort>example</message-sort>

</destination>

...

</jms-server>

● Message Bridge 기능 추가

JEUS JMS 간의 혹은 타 MQ와의 Message Bridge 기능이 추가되었다.

제2장 JEUS 6.0 Fix#8 11

Page 30: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

다음은 Message Bridge 기능에 대한 설정 예이다(JEUS 6.0의 ExamplesQueue에서 WebLogic 10.3의

ExamplesQueue로의 Bridge).

<resources>

<message-bridge>

<bridge-connections>

<connection>

<name>jeus6</name>

<classpath>

file:///home/tmaxsoft/workspace/jeus6/lib/client/clientcontainer.jar

</classpath>

<jndi-provider-url>127.0.0.1:19736</jndi-provider-url>

<jndi-initial-context-factory>

jeus.jndi.JNSContextFactory

</jndi-initial-context-factory>

<connection-factory>

XAQueueConnectionFactory

</connection-factory>

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

</connection>

<connection>

<name>weblogic103</name>

<classpath>

file:///home/tmaxsoft/bea/wlserver_10.3/server/lib/wljmsclient.jar

</classpath>

<jndi-provider-url>t3://localhost:7001</jndi-provider-url>

<jndi-initial-context-factory>

weblogic.jndi.WLInitialContextFactory

</jndi-initial-context-factory>

<connection-factory>

QueueConnectionFactory

</connection-factory>

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

</connection>

</bridge-connections>

<bridges>

<bridge>

<name>bridge1</name>

<source>

<connection-name>jeus6</connection-name>

<destination>ExamplesQueue</destination>

<type>queue</type>

</source>

<target>

<connection-name>weblogic103</connection-name>

<destination>ExamplesQueue</destination>

<type>queue</type>

12 JEUS Release Note

Page 31: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

</target>

</bridge>

</bridges>

</message-bridge>

</resources>

● JeusConnectionFactoryCreator가 JMS Failover를 지원

JMS 클라이언트가 JNDI 서비스를 이용하기 어려운 환경일 경우에 사용할 수 있는 JeusConnectionFac

toryCreator가 JEUS 6 Fix#7에 추가된 기능인 JMS failover에 대해서도 지원하게 되었다.

2.2.4. JDBC

● 데이터 소스 설정에서 사용자 및 패스워드를 별도로 관리하는 프로퍼티 파일(properties file)을 사용하

는 기능 추가

데이터 소스 사용자 및 패스워드를 별도로 관리하는 프로퍼티 파일(properties file)을 제공한다. 프로퍼

티 설정은 JEUSMain.xml의 설정보다 우선한다.

프로퍼티 파일의 패스는 -Djeus.jdbc.ds-accounts-properties-path로 설정 가능하며

$JEUS_HOME/config/ds-accounts.properties.template을 통해 properties template file을 제공한다.

ds-accounts.properties.template 파일의 내용은 다음과 같다.

# Another way to configure username and password for data sources.

# Configurations here are prior to JEUSMain.xml.

#

# [EXAMPLE]

#

# <database>

# ...

# <data-source-id>myds</data-source-id>

# ...

# <user>user1</user>

# <password>passwor1</user>

# ...

#

# Username and password for data source myds above are overwritten by

#

# myds.user=use2

# myds.password=password2

2.2.5. WebAdmin

● JMS Message Sorting 스키마 적용

JMS Message Sorting 기능을 구현하여 다음의 페이지에 스키마를 적용하였다.

제2장 JEUS 6.0 Fix#8 13

Page 32: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– 엔진 컨테이너 > 엔진 > JMS 엔진 > Message Sort

– 엔진 컨테이너 > 엔진 > JMS 엔진 > Durable Subscriber > Messege Sort

– 엔진 컨테이너 > 리소스 > 데스티네이션 > Message Sort

2.2.6. Installer

● 플랫폼 추가 지원

Installer에서 AIX 6.x 플랫폼을 추가 지원한다. 플랫폼 선택 화면에서 AIX 5.x PowerPC 부분이 AIX 5.x,

6.x PowerPC로 변경되었다.

● JMS 예제 추가

이전 버전에 없었던 JMS 예제가 추가되었다. 추가된 예제은 JMS Queue, Topic에 대한 기본적인 Send,

Receive 예제이다. 추가된 위치는 다음과 같다.

$JEUS_HOME\samples\jms

2.3. 변경사항

2.3.1. EJB

● EJB 엔진 관련 jeusadmin 명령인 moduleinfo의 regular expression 옵션 변경

이전 버전에서는 moduleinfo –r –rb [module_name] [bean_name]을 사용하여 각각 regular expression

에 대한 옵션(module_name은 -r 옵션, bean_name은 -rb 옵션)이 존재하였다.

JEUS 6.0 Fix#8에서는 beanlist와 동일하게 –r 옵션으로 module_name과 bean_name을 동시에 regular

expression으로 동작하도록 변경하였다. 변경된 moduleinfo의 사용법은 다음과 같다.

moduleinfo -con jeus6_container1 -r [module_name] [bean_name]

2.3.2. WebContainer

● jsp를 컴파일할 때 global JSP Engine 단위로 lock을 설정하는 것을 jsp 단위로 변경

하나의 JSP를 컴파일하는 동안 불필요하게 global JSP Engine lock을 잡고 있어서 컴파일과 관계 없는

JSP도 사용자의 요청을 처리하지 못하였으나 이를 컴파일 하려는 jsp만 lock을 잡아 컴파일과 관계없는

jsp는 요청을 처리할 수 있도록 변경하였다.

● context-group 밖에 남는 Access log가 rotation 되어서 남도록 정책 변경

access log를 설정하지 않으면 context-group 밖에 access-log가 하나의 파일로 남도록 되어 있던 것을

1일 단위로 rotation하도록 기본값을 변경하였다.

14 JEUS Release Note

Page 33: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● WEBMain.xml의 기본 연결값 변경

WEBMain.xml에서 사용되는 <webtob-address>, <tmax-address>, <tmax-backup-address>의 기본값

을 127.0.0.1에서 'localhost'로 변경하였다.

● JEUS와 WebtoB가 연결되어 있지 않을 때 연결되지 않았다는 로그가 스레드 개수만큼 출력되는 현상

수정

초기 thread pool을 생성할 때, 설정한 thread pool의 min값만큼의 스레드들이 한 번에 WebtoB로 연결

을 시도하여 스레드 개수만큼 로그가 출력되었지만, 우선 스레드 하나만 연결을 시도하여 연결되지 않

았다는 로그가 한 번만 출력되도록 수정하였다.

2.3.3. JDBC

● data-source의 export-name을 사용하던 JDBC 관련 명령어를 data-source-id를 사용하도록 변경

data-source-id가 도입되었지만 여전히 data-source의 export-name을 사용하는 JDBC 관련 명령어들이

있어서 사용자에게 혼란을 줄 수 있다. 따라서 기존의 data-source의 export-name을 사용하던 JDBC 관

련 명령어들을 data-source-id를 사용하도록 변경하였다.

2.3.4. Session Server

● Session Server의 Memory 변화량을 모니터링하는 로직 변경

Session Server의 Memoroy 변화량을 모니터링할 때, 세션의 메모리 변화량을 1분, 5분, 15분에 한 번

씩 체크하여 보여주도록 되어 있었으나 이를 1분, 5분, 15분의 누적 메모리 변화량으로 보여주도록 변

경하였다.

2.3.5. Tool

● jeusadmin에서 command가 대소문자를 구분하지 않고 실행되도록 변경

jeusadmin에서 command가 대소문자를 구분하지 않고 실행되도록 변경하였다.

● upgradetool과 appcompiler의 도움말을 옵션별로 보여주도록 변경

upgradetool과 appcompiler의 도움말을 옵션별로 보여주도록 변경하였다.

C:\>appcompiler -h

appcompiler make EJB interface impl, skel and stub classes, jsp servlets

and webservice endpoint for application

Usage:

appcompiler [-h argument] [-verbose] [-keep] [-jspmap] [-batch] [-q]

[-dir directory_name(path)] [-client clientview_filename]

[-donotadd] [-deloldgen] [-ejb-jar ejb-jar.xml_path]

[-jeus-ejb-dd jeus-ejb-dd.xml_path] [-D<property=value>]

제2장 JEUS 6.0 Fix#8 15

Page 34: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

[-properties filename] [app_name]

arguments:

-h argument: show help for each argument

-verbose: set verbose mode (loglevel: FINEST)

-keep: keep the generated impl, skel and stub sources to the

application file(directory)

-jspmap: generate servlet-mapping table (jeus_jspmap.xml)

-batch: compile applications in batch mode. Without this option,

compile applications in each mode

-q: stop compilation on compile error

-dir directory_name(path): set the target to all applications in

specified directory

● 노드 클러스터링 환경에서 nodelist -a를 실행하면 결과가 노드별로 출력되도록 변경

노드 클러스터링 환경에서 nodelist -a를 실행하면 결과가 노드별로 출력되도록 변경하였다.

nodelist -a

[ was1 ] was1 was2 was3

[ was2 ] was1 was2 was3

[ was3 ] was1 was2 was3

2.3.6. Installer

● 내장 WebtoB 버전 변경

JEUS 내장 WebtoB 버전을 4.1.2.0에서 4.1.4.0으로 변경하였다(IPv6 지원).

16 JEUS Release Note

Page 35: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

제3장 JEUS 6.0 Fix#7

본 장에서는 JEUS 6.0 Fix#7에서의 버그패치, 기능추가, 변경사항에 대해서 설명한다.

3.1. 버그패치

3.1.1. Server

● Log level OFF 가 적용되지 않는 문제

로그를 남기지 않기 위해서 log level을 OFF로 설정해도 INFO 레벨로 로그가 출력되는 문제를 수정하

였다.

3.1.2. EJB

● jeus-ejb-dd.xml 에 prim-key-field 설정이 없을 경우 Auto -Key-generation을 사용할 때 발생하는 문

제를 수정

ejb-jar.xml에 primkey-field가 설정되어 있음에도 불구하고, jeus-ejb-dd.xml에 prim-key-field를 설정하

지 않으면 Auto Key Generation을 지정한 CMP를 디플로이 및 create, find, remove 등의 작업이 불가능

한 버그를 수정하였다.

● CMP2.0에서, CMR을 사용하는 경우 Foreign Key를 DB에서 Load하는 과정에서 column index 계산

의 오류 수정

CMP 2.0에서 CMR을 사용할 때, Foreign key를 DB에서 읽어 오면서 column index를 잘못 계산하는 문

제를 수정하였다. 이는 사용자가 정의한 key class를 사용하는 경우에만 발생한다.

● Transaction attribute가 SUPPORTS인 Session Bean에서 EJBContext.getRollbackOnly, setRoll

backOnly 호출시 IllegalStateException을 던지도록 수정

이전에는 CMT가 시작된 상황에서 Transaction attribute가 SUPPORTS인 Session Bean을 호출하고,

그 안에서 EJBContext.getRollbackOnly, setRollbackOnly를 호출할 경우 별도의 Exception이 발생하지

않았으나, 이를 수정하여 IllegalStateException이 발생하도록 하였다. 이때 다음과 같은 메시지가 발생

한다.

[2010.03.10 11:13:26][1][b240] [container1-204] [EJB-4536] [module name : ejb1,

bean name : CallerBean, session id : PYOvSI17B3ZhBhTk1CPQzk3yH5bTUillQyaie7OZ

KhrQ5VcvRrpmPLpfYHRGGkMR.jeus6_ejb_engine1] will be discard because an exception

is occured in business method.

제3장 JEUS 6.0 Fix#7 17

Page 36: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

<<__Exception__>>

javax.ejb.EJBTransactionRolledbackException

at jeus.ejb.container3.ExceptionMapper.mapSystemException

(ExceptionMapper.java:99)

......

Caused by: javax.ejb.TransactionRolledbackLocalException: Exception thrown from

bean java.lang.IllegalStateException: Session Bean of which tx attribute is

NOT_SUPPORTED, SUPPORTS or NEVER should not call

at jeus.ejb.container3.SessionTxInterceptor.processExceptionInClientTx

(SessionTxInterceptor.java:405)

at jeus.ejb.container3.SessionTxInterceptor.postInvokeTx

(SessionTxInterceptor.java:342)

......

Root Exception stack trace :

java.lang.IllegalStateException: Session Bean of which tx attribute is

NOT_SUPPORTED, SUPPORTS or NEVER should not call

at jeus.ejb.baseimpl.SessionContextImpl.checkOperationsAllowed

(SessionContextImpl.java:437)

at jeus.ejb.baseimpl.EJBContextImpl.setRollbackOnly(EJBContextImpl.java:212)

● Annotation, XML descriptor에 class 혹은 method level의 interceptor가 같이 지정되어 있을 때

merge가 되는 현상을 수정

Annotation, XML descriptor에 class 혹은 method levle의 interceptor가 같이 지정되어 있을 때 merge가

되는 문제가 있었다. 스펙에 따라서 descriptor의 내용으로 Override 되도록 수정하였다.

● ejb-jar.xml에서 <method-name> 태그를 사용할 때, name만 입력한 경우에 일치하는 method 중 처

음 하나만 적용하는 현상을 수정

ejb-jar.xml에서 <method-name> 태그를 사용할 때, 기존에는 name만 적으면 일치하는 method 중 처음

하나만 적용하였다. 그러나 스펙에서는 method name이 일치하는 모든 method에 적용하도록 하고 있

으므로, <method-param>에 * 를 지정한 경우와 동일하게 동작하도록 수정하였다.

● 같은 EJB를 2번 deploy를 시도하면 첫 번째 ejb가 bind한 것을 unbind하는 문제 수정

같은 EJB를 2번 deploy를 시도하면 두 번째 ejb가 deploy를 실패하여 undeploy되면서 자신이 bind하지

않은 것을 unbind하는 문제가 있었는데 자신이 bind한 list를 가지고 있다가 unbind하도록 수정하였다.

18 JEUS Release Note

Page 37: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

3.1.3. WebContainer

● WEB-INF/.warjspwork폴더에 컴파일 된 jsp 클래스들이 존재할 경우 jsp를 수정하여도 반영되지 않는

문제 수정

WEB-INF/.warjspwork 폴더에 컴파일된 jsp 클래스들이 존재할 경우 jsp를 수정하여 디플로이할 경우

이전 jsp 파일이 보이는 문제가 있었는데, 최근 변경된 시각을 기준으로 최신 파일을 판단하도록 수정하

였다.

● jsp-engine의 compile-encoding 설정이 적용되지 않는 문제 수정

jsp-engine의 compile-encoding의 설정에 상관 없이 항상 UTF-8로 컴파일 되던 문제를 수정하였다.

● web.xml의 web-app_2_5 스키마에 http-mothod-Type element가 동작하지 않는 문제 수정

web-app_2_5의 사용을 제공하지 않아서 web.xml에 <http-method>를 작성할 경우 SAXParseException

이 발생하였으나 정상 동작하도록 문제를 수정하였다.

● Filter, Servlet, Listener의 init과정에 오류 발생시 정상적으로 deploy되는 문제 수정

application-deploy할 때 이루어지는 initialization 과정(Servlet, Filter, Listener)이 실패하여도, 정상 Deploy

가 되는 문제를 수정하였다.

● jsf 라이브러리를 공유하여 사용할 경우 NullPointerException 발생하는 문제 수정

JEUS_HOME/lib/shared/jsf_ri_1.2/ 폴더에 있는 jsf 라이브러리를 2개 이상의 애플리케이션에서 사용할

경우, 하나의 애플리케이션을 undeploy 하면 다른 애플리케이션에서 NullPointerException이 발생하는

문제를 수정하였다.

● response.setDateHeader()을 반복하여 호출할 경우 ArrayIndexOutOfBoundsException이 발생하

는 문제 수정

response.setDateHeader()를 반복하여 호출할 경우 ArrayIndexOutOfBoundsException이 발생하는 문

제를 수정하였다.

● tmax와의 연결이 끊겼을 경우 무한히 reconnect 시도하는 문제 수정

tmax와의 연결이 끊겼을 경우 reconnect를 시도하다가 reconnect가 실패하였을 경우 backup server로

다시 reconnect를 시도한다. 이때 tmax backup server의 설정이 없을 경우 local로 backup server를 설

정하는 버그로 인해 reconnect를 무한히 시도하는 문제를 수정하였다.

● ejb, web application 등의 여러 모듈이 각각의 파일로 deploy되었을 경우 SHARED옵션이 적용되지

않는 문제 수정

ejb, web 등의 모듈이 ear로 deploy되지 않고 각각의 파일로 deploy되었을 경우 SHARED옵션을 지정

해도 클래스가 공유되지 않는 문제를 수정하였다.

● web.xml에 401코드에 대해 <error-code>가 적용되지 않는 문제 수정

web.xml에 401코드에 대해 <error-code>가 적용되지 않는 문제를 수정하였다.

제3장 JEUS 6.0 Fix#7 19

Page 38: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

3.1.4. JMS

● 2개 이상의 service channel이 원포트로 설정된 경우, 클라이언트가 접속되지 않는 문제 수정

2개 이상의 service channel이 원포트로 설정되어 있을 경우, 클라이언트가 접속할 때 ConnectorException

이 발생하는 문제를 수정하였다.

● reconnect를 시도하는 클라이언트 프로세스가 <CTRL> + C로 종료되지 않는 문제 수정

JEUS가 종료되어 접속 중인 클라이언트가 reconnect를 시도할 경우, 해당 클라이언트가 <CTRL> + C

로 프로세스 종료가 되지 않는 문제를 수정하였다. 해당 현상은 JEUS 6.0 Fix#6 버전에서만 발생하는

현상이다.

● Tibero Storage 사용하여 64K 이상의 Message를 송신할 때 TbSQLException 발생하는 문제 수정

(Tibero 드라이버 문제)

Tibero 3.0 sp2 r38551 하위 버전을 사용하여 64K 이상의 Message를 송신할 때 TbSQLException이 발

생하는 문제를 수정하였다. 해당 현상은 Tibero 드라이버 문제로 Tibero 3.0 sp2 r38551 상위 버전에서

수정되었으며, r38551 하위 버전에 대해 workaround로 제공하기 위함이다.

3.1.5. JNDI

● JEUS내부적으로 JNDI context를 생성할 때 JNSContextFactory가 아닌 다른 InitialContextFactory

를 사용하는 문제 수정

JEUS내부적으로 정의한 JNSContextFactory가 아닌 다른 InitialContextFactory를 시스템 프로퍼티로

설정한 애플리케이션을 수행 한 경우, 이후에 jeus container에서 context를 생성하여 jndi operation을

수행할 때 JNSContextFactory가 아닌 다른 시스템의 context를 생성하려고 하는 문제가 수정되었다.

● 연결이 끊어진 JNSSLocal 아닌 다른 JNSLocal이 지워지는 문제 수정

클라이언트에서 여러 JEUS에 JNDI 연결을 맺었을 때, 연결이 끊어진 JEUS에 대한 JNSLocal이 아니라

다른 JNSLocal의 정보가 지워지는 문제를 수정하였다.

● JNDI에서 lookup 해온 Reference에서 objectfactory를 통해 object를 생성하는 과정에서 JNDI와 관

련없는 exception이 발생할 경우에도 JNDI failover를 시도하는 문제 수정

lookup 해온 Reference에서 objectfactory를 통해 object를 생성하는 과정에서 JNDI와 관련없는 exception

이 발생할 경우에는 JNDI failover(connection을 끊고 cache를 삭제하고 다시 connection을 맺어서 lookup

을 retry)를 해줄 필요가 없지만 failover를 해주는 문제를 수정하였다.

● servlet이나 ejb에서 thread를 생성하여 java:comp/env namespace에 접근하려고 할 때 NameNot

FoundException이 발생하는 현상 수정

servlet이나 ejb에서 thread를 생성하여 java:comp/env namespace에 접근하려고 할 때 NameNotFoundEx

ception이 발생하는 현상이 있었다. 이를 수정하여 servlet이나 ejb에서 생성한 thread에서도 java:comp

namespace에 접근할 수 있도록 하였다.

20 JEUS Release Note

Page 39: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

3.1.6. JDBC

● getConnection할 때 getAutoCommit에서 exception이 발생하면 invalid Connection이 active 상태

로 pool에 영원히 남게 되는 현상 수정

getConnection할 때 getAutoCommit에서 exception이 발생하면 invalid Connection이 active 상태로 pool

에 영원히 남게 되는 현상을 수정하였다. 이 문제로 인하여 dsinfo, dsconinfo 명령을 실행할 때 결과가

다른 현상이 있었다.

● <db-vendor>에 지정한 vendor 이외의 값이 입력될 경우, 무조건 Exception이 발생하는 현상 수정

db-vendor 에서 지정한 Vendor와 실제 db vendor가 다를 경우, 좀 더 defensive하게 체크해서 캐스팅하

도록 수정하였다.

● non-validation-interval이 check-query-period 보다 긴 경우, check-query가 실행되지 않는 문제 수

non-validation-interval이 check-query-period 보다 긴 경우, check-query가 실행되지 않아 유효하지 않

은 connection을 사용할 수 있는 문제를 수정하였다.

3.1.7. Transaction

● 트랜잭션의 unique성을 판단할 때, format id + gtid의 형태로 판단하도록 수정

외부에서 시작된 Transaction의 unique여부를 판단할 때 기존에는 format id를 무시하였다. 이를 변경하

여 format을 함께 고려하도록 변경하였다.

● RootCoordinator, SubCoordinator 사이의 동작 수정

RootCoordinator와 SubCoordinator 사이에 발생할 수 있는 문제에 대처하기 위하여 다음의 사항들을

수정하였다.

– RootCoordinator에 registration 메시지를 전송하지 못했다면 기다리지 않고(원래는 120초 기다림) 바

로 종료한다.

– checkRegistration이 실패한 뒤 transaction이 Rollback된 다음, SubCoordinator를 destroy한다.

– ServerContextSenderReceiver.checkRegistration() method 이름을 checkTransaction으로 변경하고,

EJB에서 call했을 때 트랜잭션과 관련해서 문제가 있으면 exception을 던지고 그렇지 않으면 정상적

으로 진행한다.

– SubCoordinator.checkRegistration()에서 결국 registration이 실패하여 트랜잭션을 rollback 했다면

TMException을 던진다.

● 다른 WAS제품과 트랜잭션 연동이 정상적으로 이루어지지 않는 문제 수정

OTS 설정을 이용하여 다른 WAS와 트랜잭션을 연동할 경우, 트랜잭션 전파가 제대로 되지 않아 연동이

정상적으로 이루어지지않는 문제가 있어서 이를 수정하였다.

제3장 JEUS 6.0 Fix#7 21

Page 40: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

3.1.8. Session Server

● 중앙식 세션 서버에서 세션을 passivation을 했음에도 메모리가 감소하지 않는 문제 수정

중앙식 세션 서버를 사용할 때 세션을 passivation 했음에도 메모리에서 세션정보가 없어지지 않는 문

제를 수정하였다.

3.1.9. Deployment

● jeus-application-dd.xml에 <path>가 없는 경우, deploy할 때 NullPointerException이 발생하는 문

제 수정

jeus-application-dd.xml에 <path>가 없는 경우에도 정상적으로 deploy 되도록 수정하였다.

3.1.10. Tool

● ti -con 정보를 확인할 때 The ObjectName object is null 발생하는 문제 수정

하나의 엔진 컨테이너에 하나의 서블릿 엔진만 존재할 경우, ti -con 정보를 확인할 때 The ObjectName

object is null이 발생하는 문제를 수정하였다.

● upgradetool5to6에서 jeus-web-dd.xml의 잘못 변환되는 문제 수정

upgradetool5to6에서 jeus-web-dd.xml의 <url-rewriting>, <enable-default-login>, <jndi-properties>이

잘못 변환되는 문제를 수정하였다.

– <url-rewriting>은 <session-config><url-rewriting>으로 변환되도록 수정하였다.

– <enable-default-login>, <jndi-properties>는 삭제되도록 수정하였다.

● upgradeTool5to6에서 node backup 기능이 반대로 동작하는 문제 수정

upgradeTool5to6에서 node backup 동작의 overwrite와 backup 기능이 반대로 동작하는 문제를 수정하

였다.

또한 node backup을 할 때 혼란을 예방하기 위해 "overwrite( y) or rename( n)?" 라는 물음을 "overwrite(

y) or backup( n)?"으로 수정하였다.

● upgradetool5to6에서 app 명령어를 사용할 때 NullPointerException이 발생하는 문제 수정

upgradetool5to6에서 app 명령어를 사용할 때 필수 옵션인 src와 target을 설정하지 않으면 NullPoint

erException이 발생하는 문제를 수정하였다.

이에 따라 upgradetool5to6 의 툴 도움말에 src와 target 옵션이 필수 옵션임을 명시하였다.

● appcompiler를 수행할 때 컴파일을 실패할 경우 NullPointerException이 발생하는 문제 수정

appcompiler을 수행할 때 컴파일을 실패할 경우 NullPointerException이 발생하는 문제를 수정하였다.

해당 현상은 JEUS 6.0 Fix#6 버전에서만 발생하는 현상이다.

22 JEUS Release Note

Page 41: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

3.1.11. WebAdmin

● 세션을 모니터링할 때 갱신이 안 되는 현상을 수정

웹 관리자에서 Session 개수를 모니터링할 때 새로고침 버튼을 클릭해도 갱신이 안 되는 문제를 수정하

였다.

3.1.12. WebService

● wsdl2java 콘솔툴에서 -nowrapped 옵션과 -ns2pkg 옵션이 동작하지 않던 문제 수정

wsdl2java 콘솔툴에서 -nowrapped 옵션과 -ns2pkg 옵션이 동작하지 않던 버그를 수정하였다.

● Array argument를 가진 SEI에 대하여 java2wsdl 수행후 deploy되지 않던 문제 수정

Array에 대한 namespace가 정의되지 않아 deploy할 때 발생하던 오류를 namespace를 업데이트하여

수정하였다.

● Standalone 클라이언트에서는 getHandlerRegistry 메소드를 사용할 수 없었던 문제 수정

jsr109 enterprise webservice 1.2 사항을 Standalone 클라이언트에 적용하지 않고 getHandlerRegistry

메소드를 사용할 수 있도록 수정하였다.

3.1.13. Security

● Security Repository로 DB를 사용할 때 templet 내의 값의 순서가 잘못되어 있는 문제 수정

dbrealm.sql에서 jeus_group_members table의 값의 순서가 잘못되어 있는 버그를 수정하였다.

● jeusadmin에서 password file을 통해 로그인을 시도했을 때 로그인 실패하는 문제 수정

접속하려는 노드가 virtual host로 매핑되어 있을 때 jeusadmin에서 password file을 통해 로그인을 시도

하려 하면 로그인에 실패하는 버그를 수정하였다.

● webcommon.xml에 설정된 security-constraint가 적용되지 않는 문제 수정

webcommon.xml에 설정된 security-constraint가 전체 애플리케이션에 적용되지 않는 문제를 수정하였

다.

3.2. 기능추가

3.2.1. Server

● container JVM option 지정 방법을 개선

Container JVM option을 좀 더 상세하게 받을 수 있도록 개선하였다.

– 공백이 있는 옵션도 지정할 수 있도록 하였다(e.g. IBM JDK -XX:OnError="dbx %p" option).

제3장 JEUS 6.0 Fix#7 23

Page 42: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– <command-option>에 묶어서 적용하던 JVM 옵션을 다음과 같이 의미 단위로 분류해서 적용할 수 있

다.

<jvm-config>

<jvm-option>-XX:MaxPermSize=128M</jvm-option>

<jvm-option>-Xmx256M</jvm-option>

</jvm-config>

– <jvm-option>은 기존의 <command-option>와 동일하게 동작한다. 즉, <command-option>의 내용을

그대로 <jvm-option>으로 옮겨서 사용해도 된다.

– JVM 옵션 우선 순위의 경우 기존에 제공하던 <command-option>을 먼저 적용하며, <jvm-option>에

있는 것들은 XML에 나열한 순서로 적용한다.

● 패치 파일 적용 방법 개선

기존의 $JEUS_HOME/lib/system/jext.jar 외 패치 파일 적용을 위한 디렉터리를 별도로 사용할 수 있도

록 한다($JEUS_HOME/lib/jext/). 단, $JEUS_HOME/lib/jext/는 필요할 경우 사용자가 직접 생성해야 한

다.

JEUS root class loader의 classpath 설정의 적용 순서는 다음과 같다.

– prepend classpath

– $JEUS_HOME/lib/jext/jext*.jar

– $JEUS_HOME/lib/system/jext.jar

상기 classpath 에서 동일한 클래스에 대해 상이한 패치가 발견되면 warning 메시지를 출력한다.

3.2.2. WebContainer

● interrupt에 해당 thread의 stack trace가 로그에 출력되는 기능 추가

Active Management 기능에 의해 worker thread들이 max-thread-active-time을 넘게 되면 interrupt가 걸

린다. 이때 해당 thread의 stack trace가 출력되는 기능을 추가하였다.

[2010.03.24 19:31:31][2][b240] [container1-43] [WEB-3972] http1:29:1 notifying

long active thread (http1-w43), active time = 1599, uri = /examples/index.jsp

● accesslog에 특정 확장자를 가진 파일의 기록을 남기지 않는 기능 추가

accesslog에 특정 확장자를 가진 파일의 기록을 남기지 않는 기능이 추가되었다.

[ WEBMain.xml 설정 예 ]

<logging>

<access-log>

<exclude-ext>

bmp,jpg,jsp

</exclude-ext>

24 JEUS Release Note

Page 43: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

</access-log>

</logging>

● 애플리케이션별로 적용된 세션 타임아웃을 출력하는 기능 추가

st -s 명령을 통해서 세션 정보를 확인할 때 애플리케이션별로 세션 타임아웃을 출력하는 기능이 추가되

었다.

3.2.3. JMS

● WebAdmin에서 JMS 메시지 관리 기능 추가

WebAdmin을 통해 Destination에 쌓여 있는 메시지의 정보를 확인하고 삭제할 수 있는 기능이 추가되었

다.

– Destination에 쌓여 있는 메시지의 정보를 확인할 수 있다(Header / Property / Body 정보).

– Destination에 쌓여 있는 메시지를 모두 또는 개별적으로 삭제할 수 있다.

● Altibase persistence store 지원

JEUS MQ에서 지원하는 persistence store는 journal store와 jdbc store가 있다. 이 중에서 Oracle, Tibero

를 지원하던 jdbc store에 Altibase도 지원하도록 하였다. 지원 가능한 버전은 Altibase4 이다.

설정 방법은 기존 방식과 동일하게 JEUSMain.xml에 설정한 Altibase data source의 이름을 다음과 같

이 JMSMain.xml에 설정한다.

[ JMSMain.xml 설정 예 ]

<persistence-store>

<jdbc>

<data-source>altibaseds</data-source>

</jdbc>

</persistence-store>

자세한 설명은 “JEUS MQ 안내서”의 “5.3. 기본 설정(JMSMain.xml)” 부분을 참조한다.

● JMS Clustering 지원

JEUS MQ에서 JMS Clustering으로 ConnectionFactory Clustering과 Destination Clustering을 지원한

다.

ConnectionFactory Clustering은 JMS 클라이언트가 JEUS MQ 서버로의 connection을 맺을 때 부하를

분산시키는 기능이다.

Destination Clustering은 ConnectionFactory Clustering에 의해서 적절하게 분산된 JMS 클라이언트들

이 메시지 서비스를 받을 수 있도록 JEUS MQ 서버 간의 메시지 이동을 조정하는 기능을 말한다.

Clustering에 참여하는 JEUS MQ 서버들의 ConnectionFactory, Destination, Durable Subscriber 설정

은 모두 동일해야 하며 다음과 같이 <jms-cluster-server>에 Cluster 설정을 한다.

제3장 JEUS 6.0 Fix#7 25

Page 44: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

[ JMSMain.xml 설정 예 ] - A서버

<?xml version="1.0" encoding="UTF-8"?>

<jms-server xmlns="http://www.tmaxsoft.com/xml/ns/jeus">

<broker-name>jmscluster1</broker-name>

. . .

<jms-server-cluster>

<jms-server-info>

<broker-name>jmscluster1</broker-name>

<jms-server-info>

<jms-server-info>

<broker-name>jmscluster2</broker-name>

<jms-server-info>

</jms-server-cluster>

</jms-server>

[ JMSMain.xml 설정 예 ] - B서버

<?xml version="1.0" encoding="UTF-8"?>

<jms-server xmlns="http://www.tmaxsoft.com/xml/ns/jeus">

<broker-name>jmscluster2</broker-name>

. . .

<jms-server-cluster>

<jms-server-info>

<broker-name>jmscluster1</broker-name>

<jms-server-info>

<jms-server-info>

<broker-name>jmscluster2</broker-name>

<jms-server-info>

</jms-server-cluster>

</jms-server>

자세한 설명은 “JEUS MQ 안내서”의 “제4장 JEUS MQ 클러스터링” 부분을 참조한다.

● JMS FailOver 지원

장애(네트워크 장애, 서버 장애)로 인해 메시징 서비스를 할 수 없을 때, 대기 중이던 백업 서버가 장애

극복을 하는 기능을 지원한다.

Active 서버와 Standby 서버가 위치하는 JEUS 노드들이 JEUSMain.xml에 Clustering 설정이 되어야 한

다. 또한 ConnectionFactory, Destination, Durable Subscriber 설정은 모두 동일해야 하며 다음과 같이

<fail-over>에 Failover 설정을 한다.

Active 서버는 <active>의 <listen-transport-url>에 gms를 설정한다.

Standby 서버는 <standby>의 <active-transport-url>에 Active 서버의 broker-name을 설정한다.

[ JMSMain.xml 설정 예 ] - Active 서버

<?xml version="1.0" encoding="UTF-8"?>

<jms-server xmlns="http://www.tmaxsoft.com/xml/ns/jeus">

<broker-name>active</brocker-name>

26 JEUS Release Note

Page 45: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

. . .

<fail-over>

<active>

<listen-transport-url>gms</listen-transport-url>

</active>

</fail-over>

</jms-server>

[ JMSMain.xml 설정 예 ] - Standby 서버

<?xml version="1.0" encoding="UTF-8"?>

<jms-server xmlns="http://www.tmaxsoft.com/xml/ns/jeus">

<broker-name>standby</brocker-name>

. . .

<fail-over>

<standby>

<active-transport-url>gms://active</active-transport-url>

</standby>

</fail-over>

</jms-server>

자세한 설명은 “JEUS MQ 안내서”의 “제3장 JEUS MQ 장애 극복” 부분을 참조한다.

3.2.4. JNDI

● JNDI의 DynamicLinkRef를 사용하는 객체(EJB, JMS)에 대해서 사용자가 link policy를 설정할 수 있

는 기능 추가

클러스터링된 ejb나 jms connection factory, destination과 같은 리소스를 lookup할 때, 사용자가 지정한

설정에 따라 어떤 JEUS 노드에서 가져올지 선택할 수 있다. 이때 사용하는 프로퍼티는 jeus.jndi.cluster

link.selection-policy 이다. 클라이언트에서 InitialContext를 생성할 때 사용하는 environment로 설정이

가능하고, 시스템 프로퍼티로 설정할 수도 있다. 기본값은 로컬 노드에서 가져오도록 한다. 단, jeus.jn

di.clusterlink.prefer-local-node가 false로 설정되어 있으면 선택되는 노드는 랜덤으로 변경된다.

– jeus.jndi.clusterlink.selection-policy=locallinkPreference(기본값)

– jeus.jndi.clusterlink.selection-policy=roundrobin

– jeus.jndi.clusterlink.selection-policy=random

이 값이 설정되어 있지 않은 경우에는 jeus.jndi.clusterlink.prefer-local-node에 설정된 값의 영향을 받는

다. jeus.jndi.clusterlink.prefer-local-node는 manager나 container에 설정하는 프로퍼티이며, 기본값은

true 이다.

– jeus.jndi.clusterlink.prefer-local-node=true

Local 노드의 링크를 우선 선택한다( jeus.jndi.clusterlink.selection-policy=locallinkPreference).

– jeus.jndi.clusterlink.prefer-local-node=false

제3장 JEUS 6.0 Fix#7 27

Page 46: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

랜덤으로 선택한다(jeus.jndi.clusterlink.selection-policy=random).

3.2.5. JDBC

● DataSource를 engine-container별로 지정할 수 있는 기능 추가

JEUSMain.xml에서 <database>를 정의할 때 target를 지정하여, 지정된 container에서만 DataSource

를 사용할 수 있게 하는 기능을 추가하였다. 이와 관련하여 기존의 <database> 태그 하위에 다음의 설

정이 추가되었다

<data-source-id>

<data-source-target>

이 설정들을 사용할 때, 다음과 같은 사항을 알고 있어야 한다.

– <data-source-target>에는 JEUSMain.xml의 <engine-container><name>의 값을 사용한다

– <data-source-target>를 지정한 경우에는 지정된 container에서만 DataSource를 사용할 수 있다

– <data-source-target>를 지정하지 않은 경우에는 모든 container에서 DataSource를 사용할 수 있다

– <data-source-id>, <export-name> 둘 중 하나는 반드시 사용해야 한다

– <export-name>을 사용하지 않고 <data-source-id>만 사용한 경우, DataSource의 JNDI 등록 이름은

<data-source-id>이며 사용자는 이 이름을 사용해야 한다

– <data-source-id>, <export-name>을 모두 사용한 경우, 사용자는 <export-name>에 지정된 값을 사용

해야 한다

자세한 설명은 “JEUS Server 안내서”의 “제8장 DB Connection Pool과 JDBC” 부분을 참조한다.

● Cluster datasource 설정에서 load balancing 기능 지원

다음과 같이 <load-balance>태그를 사용하여 cluster datasource에서 load balancing 기능을 사용할 수

있도록 하였다.

<cluster-ds>

<export-name>tac_loadbalance</export-name>

<load-balance>true</load-balance>

<data-source>tibero1</data-source>

<data-source>tibero2</data-source>

</cluster-ds>

자세한 설명은 “JEUS Server 안내서”의 “제8장 DB Connection Pool과 JDBC” 부분을 참조한다.

● data-source 설정에서 java.util.Properties의 'value'에 쉼표(,)의 입력이 불가능한 문제 수정

data-source 설정에서 java.util.Properties에 대한 value는 'key'='value','key'='value' 형식으로 사용되는

데 이것을 'key'='value' ,'value','value'와 같은 형식으로 표현하려는 경우에 쉼표(,)의 입력이 불가능한

문제를 개선하여 ","가 value에 포함된 경우에도 제대로 parsing하도록 수정하였다.

28 JEUS Release Note

Page 47: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● setAutoCommit, getConnection 호출할 때 trace를 조회할 수 있는 기능을 추가

다음과 같이 JEUSMain.xml에서 auto-commit-trace를 true로 설정하고 jeus.jdbc.connection-trace 로거

의 log level을 FINE 이상으로 설정할 경우, setAutoCommit을 호출할 때 서버 로그에서 해당 trace를 조

회할 수 있는 기능을 추가하였다. 또한 get-connection-trace를 true로 설정한 경우, jeusadmin에서

dsconinfo 명령을 사용할 때 -id 옵션을 사용하여 connection의 id를 지정하면 getConnection을 사용하

고 있을 때 해당 Connection의 trace를 jeusadmin에서 조회할 수 있는 기능도 추가하였다.

<database>

....

<connection-pool>

....

<connection-trace>

<enabled>true</enabled>

<get-connection-trace>true</get-connection-trace>

<auto-commit-trace>true</auto-commit-trace>

</connection-trace>

</connection-pool>

</database>

● onnectionPool에서 얻어온 Connection의 auto-commit이 false로 설정된 경우, 로그를 출력하는 기

능 추가

ConnectionPool에서 얻어온 JDBC Connection의 auto-commit이 false로 설정된 경우 다음과 같은 로그

를 출력하도록 하였다. 이때 Connection은 JDBC 드라이버의 Connection 객체이며, auto-commit 기본

설정값은 JDBC 드라이버에 따라 다르다.

[2009.09.24 20:29:40][4][b240] [container1-13] [JDBC-0382] auto-commit value of

Connection is False. this may cause unintended result. dataSourceId : [datasource1]

● 물리적 커넥션을 생성할 때 timeout하는 기능 추가

물리적 커넥션을 생성할 때 계속 대기하게 될 경우 이를 끊을 수 있는 <login-timeout> 기능이 추가되었

다. 단위는 second 이다.

3.2.6. Transaction

● SubCoordinator에서 RootCoordinator로의 연결이 실패할 경우, RootCoordinator의 IP 주소를 로그

에 남기는 기능 추가

SubCoordinator가 RootCoordinator로 연결을 시도하다가 실패하여 TMException이 발생할 경우, 다음

과 같이 RootCoordinator의 IP 정보를 함께 출력하도록 하였다.

jeus.transaction.TMException: SubCoordinator associated with transaction

[JEUS GTID=007F000001048D730F2490F60000000000000015] failed to register

to RootCoordinator[127.0.0.1]; transaction must be rolled back

또한 INFO 이상의 로그 레벨에서 다음과 같은 로그가 남도록 하였다.

제3장 JEUS 6.0 Fix#7 29

Page 48: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

please check your network interfaces and their IP configurations of

RootCoordinator[127.0.0.1]

3.2.7. Session Server

● 중앙식 세션 서버에서 maxInactiveInterval이 되지 않았음에도 removal-to로 세션을 제거하는 경우,

이에 대한 정보를 출력하는 로그 추가

중앙식 세션 서버에서 maxInactiveInterval이 되지 않았음에도 removal-to로 세션을 제거하는 경우, 이

에 대한 정보를 출력하는 로그를 추가하였다.

<SessionManager>this session will be removed according to <removal-to> even

though time is remained until maxInactiveInterval. id: sesid lastAccessedTime:

3000 removal-to: 5000 millisecs maxInactiveInterval: 3000 secs

3.2.8. Deployment

● 모듈의 MANIFEST.MF의 ClassPath에서 디렉터리 지원

EJB 모듈에서 MANIFEST.MF의 Class-Path 설정을 이용하여 모듈 내의 library jar파일을 참조하는 기

능을 디렉터리도 지원하게 확장하였다.

3.2.9. Tool

● ti -con 명령에 대한 모니터링 로그를 파일로 남기는 기능 추가

jeusadmin을 실행할 때마다 리소스가 낭비되는 현상을 개선하고자 jeusadmin의 모니터링 명령에 대해

서 console 로그를 파일로 남기는 기능이 추가되었다.

사용법은 다음과 같다.

jeusadmin>ti -con tmaxh4_container1 -i 간격 -k 반복횟수 -o 파일명

로그 파일은 jeusadmin 파일이 존재하는 위치의 monitor 디렉터리 하위에 생성된 jeusadmin을 종료하

면 로그 생성도 중지된다.

● ejbddinit 툴을 사용할 때, ejb의 export-name을 생성하는 규칙을 모듈 파일 단위로 지정할 수 있는 기

능 추가

ejbddinit 툴을 사용할 때 모듈 파일 단위로 export name을 생성하는 규칙을 지정할 수 있는 기능을 추가

하였다. 다음과 같은 패턴을 사용할 수 있으며, ejbddinit 툴을 이용한 경우 ejbddinit ant task를 사용한

경우 모두 사용이 가능하다.

– %{module-name} : EJB 모듈 이름. jar 파일인 경우 .jar 확장자를 제거한 파일 이름

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

30 JEUS Release Note

Page 49: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– %{ejb-fqn} : EJB 컴포넌트의 EJB 클래스의 fully qualified name. ejb-jar.xml에 정의된 해당 EJB 컴포

넌트의 <ejb-class> 태그의 값

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

사용예는 다음과 같다.

– ejb.properties 파일에 다음과 같이 지정한다.

export-name=%{ejb-fqn}

– ejbddinit 툴을 사용할 때 -property 옵션에 앞에서 생성한 파일을 지정한다.

– ejbddinit 툴을 사용한다.

자세한 설명은 “JEUS Reference Book”의 “4.5. ejbddinit” 부분을 참조한다.

3.2.10. WebAdmin

● JCA 리소스 모니터링 페이지 변경

엔진 컨테이너 > 리소스 > JCA 리소스 > Connection Pool 모니터링 페이지를 다음과 같이 수정하였다.

– 리소스 명을 클릭했을 때 재구성/비활성화/Pool 크기 재조정/XA 트랜잭션 재시작 기능 제공

– connection을 클릭했을 때 통계/연결 페이지를 통해 모니터링과 제어 가능

– 연결-리스트 페이지에서 특정 connection을 클릭했을 때 get-connection trace기능 제공

● logger name 입력할 때 선택 가능한 이름을 가이드하는 기능 제공

에러 로그 > 로거 추가 Name 항목의 text box 옆의 "?"를 클릭한 경우 입력 가능한 logger name을 tree

dialog로 표시한다.

– tree의 각 노드를 선택했을 때 logger name에 해당 이름이 입력된다.

– tree dialog는 포커스가 dialog에서 벗어나거나 "?"를 다시 클릭하면 닫힌다.

● ContextMenu를 통해 command-option과 jvm-option에 GC / Memory Option을 추가하는 기능 제공

gc관련 옵션, 메모리 설정은 사용자들이 많이 변경하는 옵션이므로, 사용자 편의성 강화 측면에서

ContextMenu를 통해 입력할 수 있도록 수정하였다.

– command-option / jvm-option에서 마우스 오른쪽 버튼을 클릭한 후 ContextMenu를 선택하면 해당

값을 마지막에 추가한다.

– LOG_FILE_NAME은 사용자가 적당한 값으로 변경해야 한다.

– 기본값을 ContextMenu로 입력하고 사용자가 세부적으로 변경한다.

제3장 JEUS 6.0 Fix#7 31

Page 50: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

3.2.11. WebService

● jaxws, jaxrpc(sun-ri) 기반의 WebService 모니터링 기능 제공

jaxws, jaxrpc(sun-ri) 기반의 WebService 또한 모니터링 기능이 정상적으로 동작하도록 개선하였다.

3.2.12. JPA

● EcliseLink 지원

엔진 컨테이너에 시스템 프로퍼티로 jeus.persistence.defaultProvider=org.eclipse.persistence.jpa.Per

sistenceProvider로 설정하면 EclipseLink를 default로 사용하게 된다. 이와 관련하여 eclipselink.jar, jeus-

eclipselink.jar 파일이 추가되었다.

3.2.13. JCA

● JCA Pool을 모니터링, 관리하기 위한 명령을 추가

JCA Pool을 모니터링, 관리하기 위하여 control-connection-pool(controlcp 또는 clcp), list-connection-

pool(lscp)을 추가하였다.

– list-connection-pool(혹은 lscp)

지정한 조건에 따라서 jca, jdbc connection pool의 목록을 출력한다.

lscp : JDBC 풀도 포함하여 모든 리스트를 보여줌

lscp -jdbc : JDBC 풀만 보여줌.

lscp -jca : JCA 풀만 보여줌

lscp -jca -active : JCA 풀 중 active 상태인 것만 보여줌.

– control-connection-pool(controlcp 또는 clcp)

container를 지정하여 JCA Pool을 생성하거나 갱신한다.

controlcp -con dvt_container1 -create jdbc/DB1

controlcp -con dvt_container1 -refresh jca/resource1

자세한 설명은 “JEUS Reference Book”의 “4.2.6. Connection Pool 모니터링과 제어 명령어” 부분을 참

조한다.

● 리소스 어댑터 undeploy의 경우 Connection Pool을 닫을 때, 일정 시간만큼 기다리고 이후에는 무조

건 undeploy를 진행하는 기능 추가

jeus-connector-dd.xml에 <pool-destroy-timeout> 설정을 추가하여, 리소스 모듈을 Undeploy하면서 Pool

을 destroy할 때 일정 시간 동안 기다리고 이후에는 무조건 undeploy를 진행하도록 하는 기능을 추가하

였다.

<jeus-connector-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus">

<module-name>ra-cpds</module-name>

32 JEUS Release Note

Page 51: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

<connection-pool>

<export-name>jca/oracle</export-name>

<pool-management>

<pool-destroy-timeout>20000</pool-destroy-timeout>

</pool-management>

</connection-pool>

</jeus-connector-dd

3.3. 변경사항

3.3.1. Server

● deprecated된 시스템 프로퍼티를 설정할 경우, 부팅 과정에서 관련 로그를 출력하도록 수정

deprecated된 시스템 프로퍼티를 설정할 경우, 부팅 과정에서 관련 로그를 출력하도록 수정하였다. 프

로퍼티가 삭제된 경우 혹은 설정 방법이 달라진 경우에 대해서도 로그를 통해서 알 수 있도록 하였다.

[2010.03.04 14:11:08][0][b240] [jeus6-1] [MGR-0003] The system property

[jeus.container.autorestart] is deprecated, please set <auto-restart> below

<node> or <engine-container> in JEUSMain.xml

● jeus.container.autorestart 삭제 및 <auto-restart> 설정 추가

jeus.container.autorestart 시스템 프로퍼티를 삭제하고, <node>와 <engine-container>설정에 <auto-

restart>를 추가하였다.

– <auto-restart>의 기본값은 true이다.

– <engine-container>에 설정이 없을 경우에는 <node>의 설정을 따른다.

– <auto-restart>가 true이면 컨테이너를 재부팅하고, false일 경우에는 재부팅하지 않는다. 재부팅하지

않을 때는 다음과 같은 로그가 출력된다.

[2010.03.15 14:57:00][0][b239] [jeus6-68] [MGR-0307] Container

jeus6_container2 is dead unexpectedly. Restarting it ...

[2010.03.15 14:57:00][2][b239] [jeus6-68] [MGR-0567] trying to start

engine container[jeus6_container2]

[2010.03.15 14:57:00][2][b239] [jeus6-68] [MGR-0571] container

jeus6_container2 cannot restart because <auto-restart> is false

● jeus 스크립트에 jeus.log.home 프로퍼티 추가

사용자가 로그 위치를 쉽게 변경할 수 있도록 jeus 스크립트에 jeus.log.home 프로퍼티를 다음과 같이

추가하였다.

-Djeus.log.home="${JEUS_HOME}/logs"

제3장 JEUS 6.0 Fix#7 33

Page 52: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● JEUS 로그 매니저를 java.util.logging.manager로 변경

기존의 JEUS 로그 매니저는 JVM 에서 제공하는 디폴트 로그 매니저를 사용하고 있었다. jeus 실행 스

크립트에 다음과 같이 명시하여 JEUS 로그 매니저를 사용하도록 수정하였다.

-Djava.util.logging.manager=jeus.util.logging.JeusLogManager

● Engine Container Process의 thread dump가 engine container에 별도로 설정한 파일 로그에 나오

지 않는 문제를 수정

– engine container를 실행하기 위한 <jvm option>을 설정하는 부분에 다음과 같이 옵션을 추가한다.

<jvm-config>

<jvm-option>-XX:+UnlockDiagnosticVMOptions</jvm-option>

<jvm-option>-XX:+LogVMOutput</jvm-option>

<jvm-option>-XX:LogFile=${jeus.log.home}/logs/container1/jvm.log</jvm-option>

</jvm-config>

– 이 파일은 jvm을 새로 실행할 때마다 기존 정보는 삭제되고 덮어쓰기 때문에 간단한 rotation지원한다

(only time),

• file size가 20KB보다 작으면 파일을 덮어씀

• file size가 20KB보다 크면 다음과 같이 기존 파일 이름에 last modified time을 붙여주도록 변경

jvm.log -> jvm_20100315143423.log

• JEUSMain.xml의 <command-option>이나 <jvm-option>에 이 설정이 있다면 설정한 파일 이름으로

동작

● EngineContainer를 실행할 때 -client 옵션을 설정하면 적용되도록 수정

hotspot의 경우 JEUS 내부에서 자동으로 붙여주던 -server나 -classic은 붙여주지 않도록 하고 <command-

option> 또는 <jvm-option>에 -client 옵션을 설정하면 적용되도록 수정하였다.

– <command-option>-client</command-option>

– <jvm-config>

<jvm-option>-client</jvm-option>

</jvm-config>

● <sequential-start>의 기본값을 true로 변경

<node>하위에 존재하는 <sequential-start>의 기본값을 false에서 true로 변경하였다.

● 부팅할 때 JVM 정보, 매니저의 포트, 프로세스 ID, 시스템 타임존 정보를 남기도록 변경

JEUS를 부팅할 때, 다음과 같이 JVM 정보, 매니저의 포트, 프로세스 ID, 시스템 타임존 정보를 출력하

도록 하였다

[2009.12.07 10:44:03][0][b240] [jeus6-1] [MGR-0000] JEUS Server is starting -

JEUS 6.0 (Fix#7) (6.0.0.7-b240)

34 JEUS Release Note

Page 53: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

[2009.12.22 21:27:18][0][b240] [jeus6-1] [MGR-0001] java.specification.version=

[1.5], java.runtime.version=[pxi32dev-20090707 (SR10 )], vendor=[IBM Corporation]

[2009.12.07 10:44:03][2][b240] [jeus6-1] [MGR-0534] JEUS Manager=[cts], baseport=

[9736], pid=[3273]

[2009.12.07 10:44:03][2][b240] [jeus6-1] [MGR-0259] current system time zone :

sun.util.calendar.ZoneInfo[id="ROK",offset=32400000,dstSavings=0,useDaylight=false,

transitions=14,lastRule=null]

● Native library가 glibc 2.3을 지원하도록 변경

JEUS Native library를 glibc 2.3에서도 사용할 수 있도록 하였다.

3.3.2. EJB

● RMI/IIOP Interop. 설정에 따라 IIOP Export 설정된 EJB Bean 디플로이 처리 방식 개선

jeus-ejb-dd.xml에서 expot-iiop 설정을 사용한 bean deploy할 때, cos-naming-server 존재 여부에 따라

디플로이 방법을 다음과 같이 변경한다.

– <export-iiop><only-iiop>가 true인 bean은 cos-naming-server가 기동되지 않은 경우에는 디플로이 자

체를 시도하지 않도록 한다.

– <export-iiop><only-iiop>가 false인 bean은 cos-naming-server가 기동되지 않은 경우에는 JNDI 에만

디플로이한다

– <enable-interop> 설정이 사용된 Engine container를 시작할 때, cos-namgin-server가 없으면 Waring

메시지를 출력하고 container는 그대로 부팅한다.

● EJB 호환성 및 Local call 관련 기능 정리

EJB 2.x 의 하위 호환성 및 Local call 관련 기능의 개선점 적용 및 문제점 개선을 위한 작업을 진행하고,

이와 관련하여 다음과 같이 옵션들을 정리하였다.

– 시스템 프로퍼티 중 jeus.ejb.client.latest.version과 jeus-ejb-dd.xml의 <lates-client>를 제거하고 EJB

Main.xml과 jeus-ejb-dd.xml에 <use-dynamic-proxy-for-ejb2>를 추가하였다. 기본값은 true이며, 하위

버전과의 호환성을 보장하기 위해서는 이 값을 false로 설정해야 한다. 또한 EJBMain.xml에 <use-

dynamic-proxy-for-ejb2>이 false로 설정된 경우에는 jeus-ejb-dd.xml에 설정된 내용에 우선한다.

– jeus-ejb-dd.xml에서 <local-invoke-optimize>, <local-invoke-only>를 삭제하고, EJB의 클래스로딩 모

드에 상관없이 local invoke optimization을 지원하도록 하였다.

– jeus-ejb-dd.xml의 <jeus-ejb-dd><beanlist><jeus-bean><call-by- value>를 <preferred-call-by-reference>

로 이름을 변경하였다. 기본값은 false이며, 이 설정을 true로 설정하여도 경우에 따라(isolated class

loading mode, EJB2.x dynamic proxy 방식이 사용되지 않는 경우) call-by-value로 동작할 수 있으므

로 이를 가정하고 애플리케이션을 개발해서는 안 된다.

제3장 JEUS 6.0 Fix#7 35

Page 54: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

3.3.3. WebContainer

● thread의 상태를 남기는 로그 기능 개선

– Active Management 기능에 의해 worker thread들이 max-thread-active-time을 넘게 되면 interrupt가

걸리게 된다. 이때 해당 thread의 stack trace가 나오도록 하는 기능을 추가하였다.

– thread pool을 체크할 때 thread 로그 변경 : active ->long active 로 수정하였으며 thread의 변경 사항

이 있을 때만 로그를 남기도록 하였다. 로그 레벨은 info->warning으로 변경되었다.

[2010.03.24 19:31:31][2][b240] [container1-43] [WEB-3972] http1:29:1 notifying

long active thread (http1-w43), active time = 1599, uri = /examples/index.jsp

3.3.4. JMS

● destination별 high-mark와 limit의 디폴트값 변경

JMS의 destination별 high-mark와 limit의 디폴트값이 변경되었다(high-mark 는 0.75G 로, limit 는 1G

로 변경).

3.3.5. JDBC

● 트랜잭션을 사용할 때, Connection에 이상이 있을 경우 트랜잭션 종료 후 close 처리하도록 변경

트랜잭션을 사용할 때 Connection에 이상이 생기면 기존에는 즉시 Connection을 close하였다. 이를 변

경하여 문제점이 발생한 시점에서는 close 대상이라는 표시만 하고, 트랜잭션이 종료된 후 해당 Connec

tion의 close작업을 처리하도록 변경하였다.

● ResourceLeakManager logger 이름을 "jeus"에서 "jeus.service.resourceleak"로 변경

invocation-manager 설정 후에 Connection 누수가 발생했을 때 로거의 이름을 "jeus"에서 "jeus.service.re

sourceleak"로 변경하였다.

3.3.6. Session Server

● removal-to의 기본값 변경

중앙식 세션 서버에서 세션 timeout의 경우에 세션을 제거하는 방법을 다음과 같이 변경하였다.

– removal-to값과 관계없이 maxInactiveInterval을 비교해서 작은 값을 가지고 제거

– passivation의 설정 여부와 관계없이 timeout이 되면 메모리에서 세션을 제거

기존에는 passivation이 발생하고 removal-to 시점에서 제거가 되었으며, removal-to가 -1인 경우 제거

되지 않았다.

36 JEUS Release Note

Page 55: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

3.3.7. Deployment

● deploy ant task에 classloading mode를 지정할 수 있도록 변경

ant task에 classloading mode를 shared, isolated로 지정하여 디플로이할 수 있도록 변경되었다. 기존

에는 지정할 수 없이 shared mode로 디플로이되었다.

build.xml의 <target>, <deploy>에 classloading을 다음과 같이 설정한다.

– ISOLATED 인 경우

classloading="isolated"

– SHARED 인 경우

classloading="shared"

● application.xml에서 <library-directory> 가 절대 경로일 경우, EAR 애플리케이션의 상대 경로로 인

식하도록 변경

application.xml에서 <library-directory>가 절대 경로로 작성된 경우, 시스템의 절대 경로로 인식하여 디

플로이가 실패하는 현상을 수정하였다. 즉, <library-directory>의 설정값이 '/'로 시작하는 경우에 '/'가 없

을 때와 똑같이 동작하게 된다.

3.3.8. Tool

● ti 명령어 수행할 때, thread pool명이 알파벳순으로 정렬되도록 변경

jeusadmin에서 ti (Thread Info) 명령을 수행할 때마다 정렬 순서가 일정하지 않기 때문에 사용적 측면에

서의 불편함을 개선하고자 thread pool명이 알파벳순으로 정렬되도록 변경하였다.

● applist 사용할 때 EAR 애플리케이션에 포함된 모듈 정보가 출력되도록 변경

jeusadmin에서 applist 사용할 때, EAR 애플리케이션의 경우에도 EAR 애플리케이션에 포함된 모듈 정

보가 출력되도록 변경하였다.

● EAR 애플리케이션에 포함된 ejb 모듈에 대해 moduleinfo가 실행되도록 변경

jeusadmin에서 EAR 애플리케이션에 포함된 ejb 모듈에 대해서도 moduleinfo가 실행되도록 변경하였

다.

3.3.9. WebAdmin

● MS-SQL datasource명 변경

새 JDBC 데이터 소스 생성 - 데이터 소스 목록의 MS-SQL을 MSSQL 2000 Datasource에 대해 MS-SQL

2000 DataSource, MSSQL 2005 및 상위 버전에 대해 MS-SQL 2005 and above DataSource와 같이 변

경하였다.

제3장 JEUS 6.0 Fix#7 37

Page 56: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● webservice 모니터링이 정상적으로 동작하도록 변경

과거 axis 기반의 webservice만을 지원하였으나 jaxws, jaxrpc(sun-ri) 기반의 webservice 모니터링 기능

이 정상적으로 동작하도록 개선되었다.

● WebAdmin의 공식 브라우저 대상 변경

– 공식 브라우저로 추가 : IE8, Firefox 3.5

– 비공식 브라우저로 변경 : IE6, Firefox 2

● WebAdmin에서 Container의 상태를 jeusadmin과 동일하도록 수정

WebAdmin에서 Container의 상태는 SHUTDOWN, STOPPING, STARTING, READY의 4가지로 표현

한다.

● Container의 상태에 따라 시작/종료 명령 버튼의 활성/비활성 수정

각각의 버튼은 다음의 경우 활성화된다.

– 시작 : SHUTDOWN

– 종료 : READY

– 모두 시작 : SHUTDOWN 상태가 존재할 경우

– 모두 종료 : READY 상태가 존재할 경우

– 모두 시작/모두 종료 : SHUTDOWN ,READY 모두 존재 할 경우

● 온라인 도움말 검색 기능 강화

기존의 온라인 도움말 검색 기능을 강화하여 한글 검색 지원 및 조사, 띄어쓰기를 고려하여 검색어를 다

양하게 입력하여도 정상적으로 검색되도록 수정하였다.

● 디플로이된 모듈은 다시 디플로이할 수 없었던 기능 제거

디플로이 된 모듈의 체크박스를 비활성화하여 더 이상 디플로이가 불가능하던 것을 수정하여 이미 디

플로이 된 모듈도 다른 container에 디플로이할 수 있도록 수정하였다.

● 스키마 추가

– 세션 서버 기능에 대한 누락된 스키마 추가

• 엔진 컨테이너 > 서블릿 엔진-세션 화면(WEBMain.xml)에 세션 서버 페이지 추가

• 엔진 컨테이너 > 서블릿 엔진-세션 > 기본 설정 화면에 [재설정] 버튼 추가

• 엔진 컨테이너 > 컨텍스트 그룹-세션 > 기본 설정 화면에 [재설정] 버튼 추가

• 엔진 컨테이너 > 중앙 세션 서버-기본 설정 > 기본 설정 화면(JEUSMain.xml)에 replicated-server

항목 추가

– JMS Cluster, Failover 추가 기능에 대한 스키마 추가

• 엔진 컨테이너 > JMS 엔진 - 클러스터 페이지에서 Cluster 관련 설정 추가

• 엔진 컨테이너 > JMS 엔진 - Fail Over 페이지에서 Failover 관련 설정 추가

38 JEUS Release Note

Page 57: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– JDBC 추가 기능에 대한 스키마 추가

• JEUS 매니저 리소스 > JDBC > 새 JDBC 데이터 소스 생성 - 속성 페이지에서 Login Timeout 항목

추가

• JEUS 매니저 리소스 > JDBC > 새 JDBC 데이터 소스 생성 - 연결 풀 페이지에서 Auto Commit

Trace 항목 추가

3.3.10. WebService

● wsdl2java 콘솔툴 default package name 변경

JEUS 5와의 일관성을 위해 변경 전에 생성되던 default package name인 [wsdl 파일명+"_pkg"] 을 wsdl

의 namespace를 detect 하여 생성하도록 수정하였다.

3.3.11. JMX

● disposable Connection 수를 얻어갈 수 있는 MBean 추가

javax.management.j2ee.statistics.JDBCConnectionPoolStats MBean을 통해서 현재 active한 disposable

Connection 수를 얻어갈 수 있는 MBean이 추가 되었다. 해당 샘플은 {JEUS_HOME}/samples/jmx/mon

itoring을 참고한다.

3.3.12. JCA

● jeus-connector-dd.xsd에 <connectionfactory-interface>추가

ra.xml에 <connection-definition> 설정이 2개 이상 있을 경우에는 반드시 <connectionfactory-interface>

값을 jeus-connector-dd.xml에 <connection-pool><connectionfactory-interface>로 설정해야만 디플로

이가 가능하다. 이것은 ra.xml에 <connection-definition> 설정에 맞춰서 JEUS에 Connection Pool을 설

정할 수 있도록 하기 위해서이다. 단, ra.xml에 <connection-definition>이 하나만 있을 경우에는 jeus-

connector-dd.xml에 <connectionfactory-interface> 값이 없어도 디플로이가 가능하다.

● webtJCA를 위한 JCA Connection Pool 개선

JEUS JCA Connection Pool을 다음과 같이 개선하였다.

– JCA 스펙에서 언급하는 connection sharing을 정식으로 지원한다.

– JCA 스펙의 여러 가지 optimization 중에서 현실성이 없다고 판단되는 lazy connection association을

제공하지 않으며, lazy transaction enlistment는 제공한다.

– local transaction optimization 제공하지 않는다.

– 기타 Connection Pool과 관련해서 부가적인 기능들을 지원한다.

자세한 설명은 “JEUS JCA 안내서”의 “제2장 아웃바운드 관리” 부분을 참조한다.

제3장 JEUS 6.0 Fix#7 39

Page 58: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– 디플로이할 때 필요한 jeus-connector-dd.xml의 경우, DB Connection Pool과 유사한 방향으로 조정

하였다. 그러므로 더 이상 사용하지 않는 설정값들이 있다.

3.3.13. Installer

● derby 버전 변경

– JEUS 6.0 릴리즈할 때 포함되는 Apache Derby의 버전이 10.4.2로 업그레이드 되었다.

● ant 버전 변경

– ant 버전이 1.6.5 에서 1.7.1로 업그레이드 되었다.

● 파일 변경 내역

– JEUS_HOME\lib\licenses

- 추가 : eclipselink-license.html, shoal.txt

– JEUS_HOME\lib\system

- 추가 : eclipselink.jar,grizzly-framework.jar, grizzly-utils.jar, jeus-eclipselink.jar, jeus-gms.jar, jxta.jar,

shoal.jar

– JEUS_HOME\endorsed

- 추가 : xml-apis.jar, xmlsec.jar

- 삭제 : jaxp-api.jar

● 환경설정 변경

– JEUSMain.xml 에 file-handler 설정 추가

JEUS_HOME/config/{vhost}/JEUSMain.xml 에 file-handler 설정을 다음과 같이 추가하였다.

<system-logging>

<level>INFO</level>

<handler>

<console-handler>

<name/>

</console-handler>

<file-handler>

<name>fileHandler</name>

<enable-rotation>true</enable-rotation>

<append>false</append>

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

</file-handler>

</handler>

</system-logging>

40 JEUS Release Note

Page 59: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– exploded 샘플 모듈에 WorkerServlet 예제 추가

JEUS_HOME/webhome/app_home/exploded 모듈의 web.xml에 WorkerServlet 예제를 다음과 같이

추가하였다.

<servlet>

<servlet-name>WorkerServlet</servlet-name>

<servlet-class>jeus.servlet.servlets.WorkerServlet</servlet-class>

<init-param>

<param-name>PackageSeparator</param-name>

<param-value>.</param-value>

</init-param>

<load-on-startup>-1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>WorkerServlet</servlet-name>

<url-pattern>/servlets/*</url-pattern>

</servlet-mapping>

제3장 JEUS 6.0 Fix#7 41

Page 60: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94
Page 61: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

제4장 JEUS 6.0 Fix#6

본 장에서는 JEUS 6.0 Fix#6에서의 버그패치, 기능추가, 변경사항에 대해서 설명한다.

4.1. 버그패치

4.1.1. Server

● AIX에서 IBM JDK 1.5 사용할 경우, JEUS를 종료할 때 멈추는 문제 수정

AIX에서 IBM JDK 1.5를 사용하여 JEUS를 사용할 때, web listener에서 nio를 설정하면 종료 과정에서

JEUS가 멈추는 현상이 있어 이를 수정하였다.

4.1.2. EJB

● EJB 디플로이 과정 중 생성된 Impl 클래스를 컴파일할 때, Shared로 디플로이된 다른 모듈을 참조하

지 못하는 문제 수정

EJB의 Bean 클래스가 특정 클래스를 extend해서 사용할 경우, 디플로이 과정에서 EJB impl 클래스를

컴파일할 때 extend한 클래스가 필요하다. 그런데 사용하려는 클래스가 이미 Shared로 디플로이된 다

른 모듈에 존재할 경우 이를 참조할 수 있어야 하는데, 기존에는 이것을 참조할 수가 없어서 EJB Impl

파일을 컴파일할 때 에러가 발생하는 문제를 수정하였다.

● MDB 디플로이 과정에서 ArrayIndexOutofBoundsException이 발생하는 문제 수정

MDB의 jeus-ejb-dd.xml 파일에서 <bean-pool> 설정이 pool-max < pool-min*2 로 설정된 경우, MDB를

deploy할 때 bean pool을 초기화하면서 ArrayIndexOutofBoundsException이 발생하는 문제를 수정하

였다.

● MDB bean-pool의 pool-min 값만큼의 요청까지 NullPointerException이 발생하는 문제 수정

부하 상황에서 MDB 수행 중에 bean-pool 의 pool-min 값만큼의 요청에 대해서 NullPointerException이

발생하는 현상을 수정하였다.

● BMT SF의 method가 completes되기 전에 commit이나 rollback이 되지 않으면 현재의 트랜잭션을

suspend 시키도록 수정

BMT SF의 method가 completes되기 전에 commit이나 rollback이 되지 않고 method request가 종료되

면 기존에는 그 처리를 TransactionManager에 일임하였기 때문에 강제로 RollBack되는 경우가 있었다.

이것을 변경하여 method request가 종료된 후에 Transaction suspend 시키도록 하였다. 그리고 강제로

RollBack이 발생할 경우, 다음과 같은 형태의 로그가 발생하도록 하였다.

제4장 JEUS 6.0 Fix#6 43

Page 62: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

[EJB-4264] [SF/BMT] marks rollback only for current transaction context

[Transaction(0:192.168.110.50:10941:119:0x2e753c78:0x0)]

because exception has been occured

● <export-iiop>태그를 사용한 Bean을 Fast deploy 하려고 할 때 NullPointerException이 발생하는 문

제 수정

jeus-ejb-dd.xml에서 <export-iiiop> 설정을 사용한 모듈을 Fast Deploy 하려고 할 때 디플로이 과정에서

NullPointerException이 발생하는 문제를 수정하였다.

● 클러스터링이 설정된 EJB를 lookup할 때 무한 루프가 발생하는 문제 수정

클라이언트가 클러스터링 설정이 지정된 EJB3.x의 인터페이스를 가지고 있지 않은 상태에서 해당 EJB

를 lookup할 때 무한 루프가 발생하는 문제를 수정하였다.

4.1.3. WebContainer

● URL의 디렉터리 뒤에 ";"가 붙을 경우 sendRedirect가 반복적으로 호출되는 문제 수정

URL의 중간 디렉터리명 뒤에 ";" 가 붙게 되면 ";" 이후를 parameter로 인식하게 되어 parameter 맨 뒤에

"/" 붙여서 sendredirect 하게 된다. 그리고 sendredirect된 페이지에서도 다시 URL마지막에 "/"를 붙여

계속 sendredirect 하게 되어 이 과정을 무한 반복하게 된다. 이를 해결하기 위해서 ";"앞, 즉 디렉터리명

뒤에 "/"붙이도록 하여 문제를 수정하였다.

● isErrorPage가 설정된 JSP page를 호출하는 경우 NullPointerException이 발생하는 문제 수정

isErrorPage가 true로 설정된 JSP page를 직접 호출할 경우 Exception이 발생한 page에서 받아야 할

error status가 설정되지 않고 null이 설정되어 NullPointerException이 발생하는 문제를 수정하였다.

● Default Encoding 설정으로 인한 Resource servlet의 한글이 깨지는 문제 수정

인코딩이 설정되지 않는 경우 디폴트로 인코딩을 ISO-8859-1로 설정하게 되어있는데, Resource servlet

인 경우에도 ISO-8859-1가 설정이 되어 한글이 깨지는 문제를 수정하였다. Resource servlet의 경우에

는 따로 인코딩을 설정하지 않는 것이 대부분이며, 브라우저에 설정된 인코딩을 사용한다.

● HTTP 1.0 사용할 경우 서비스가 지연되는 문제 수정

HTTP 1.0 일 때 content-length가 없을 경우 FullBufferedAdaptor로 응답을 보내던 것을 BufferedAdaptor

로 보내도록 수정하여 서비스(특히 대용량 파일 다운로드)가 지연되는 문제를 수정하였다. 다음의 옵션

을 true로 설정할 경우에는 기존과 같이 content-length가 없는 경우에 FullBufferedAdaptor가 사용된다.

-Djeus.servlet.ensure.contentlength=true/false (defalut : false)

● IBM JDK에서 JSP 파일을 컴파일할 때 발생되는 문제 수정

일반 JDK의 경우에는 classpath에 null이 포함되는 경우에도 컴파일은 정상적으로 되지만 IBM JDK에

서는 컴파일이 되지 않는다. 이를 해결하기 위해 classpath에 null을 추가하지 않도록 수정하였다.

44 JEUS Release Note

Page 63: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● welcome file 처리할 때 query string에 인코딩이 적용되지 않아 한글이 깨지는 문제 수정

welcome file을 forwarding 방식으로 처리할 때 query string에 대한 인코딩 처리가 되지 않아 한글이 깨

지는 문제를 수정하였다.

● web module deploy 과정 중에 exception이 발생해도 디플로이되는 문제 수정

web module deploy 과정 중에 web.xml에 설정되는 security 설정에 문제가 있어서 exception이 발생할

때에도 strack trace만 출력되고 디플로이가 되는 문제가 있었다. 이를 security에서 exception이 발생하

면 디플로이가 실패하도록 수정하였다.

● error response의 경우 connection이 keep-alive 하지 않는 문제 수정

error response의 경우 connection이 keep-alive 응답을 하지 않아서 서비스가 지연되는 현상을 해결하

기 위해, 특정 error status에 대해서 keep-alive하도록 문제를 수정하였다.

이런 현상이 발생하던 status는 400, 408, 411, 413, 414, 500, 503, 501 이다.

● locale에 의한 request의 encoding 문제 수정

request url은 content-type 이전에 결정되므로 content-type의 charset이 적용되지 않아야 함에도 불구

하고, request url encoding의 charset를 설정할 때 content-type 및 accept-language charset이 적용되

는 문제를 수정하였다.

● NIOHttpListener를 사용할 경우 request line을 읽을 때 ArrayIndexOutOfBoundsException 문제 수

NIOHttpListener를 사용할 경우 request line을 1byte씩 읽어 byte array에 넣을 때 byte array의 index가

1024를 넘어서 ArrayIndexOutOfBoundsException가 발생하였다. 이를 request를 모두 읽었을 경우 re

questLineCount를 초기화 함으로써 ArrayIndexOutOfBoundsException이 발생하지 않도록 수정하였다.

● JEUS에서 WebtoB에 연결할 때 잘못된 WebtoB reply로 인해 OutOfMemoryException이 발생하는

문제 수정

JEUS에서 WebtoB에 연결할 때 등록을 위해 WebtoB로부터 reply를 받게 된다. 이때 정상적이지 않은

reply를 받게 되는 경우 OutOfMemoryException이 발생할 수 있다. 이를 해결하기 위해 WebtoB로부터

잘못된 reply를 받으면 Exception 처리하여 문제를 수정하였다.

● JSF 2.0 구현체를 사용할 때 리소스 version 체크 기능 문제 수정

JEUS에서 JSF 2.0 구현체를 사용할 때 리소스 version을 체크하는 중에 호출하는 Method의 리턴값이

틀리면 "jsf.application.resource.unable_to_determine_resource_version." 경고를 보내고 리소스 찾을

수 없다고 출력되는 문제를 수정하였다.

● WebtoB 에서 보낸 요청이 처리 중일 때 JEUS가 SUSPEND를 보내지 못하는 문제 수정

WebtoB에서 JEUS로 보낸 요청이 처리 중일 경우에는 JEUS가 SUSPEND요청을 WebtoB에 보내지 못

하는데, 이 경우 WebtoB가 블록으로 처리되지 않아 요청을 추가로 보낼 수 있는 문제가 있다. 이를 해

결하기 위해서 요청 처리 중인 상태에서도 SUSPEND요청을 보내고 이 상태를 체크해서 RESUME이

될 때까지 대기하도록 수정하였다.

● web.xml에서 web-app version check 문제 수정

제4장 JEUS 6.0 Fix#6 45

Page 64: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

JSF library loading을 위해 web.xml의 web-app version을 check할 때, comment까지 체크하지 않아 library

loading하지 못하는 문제를 수정하였다.

● 클라이언트에서 Connection Close를 보낸 경우에도 Keep-Alive로 response를 보내는 문제 수정

클라이언트에서 header에 Connection close로 요청을 보낼 경우에도 JEUS에서는 항상 Keep-Alive로

response를 보내는 문제를 수정하였다.

4.1.4. JNDI

● jeus.ejb.cluster.useip 옵션이 반대로 적용되는 문제 수정

EJB stub을 생성할 때, 그리고 DynamicLinkReference를 이용하는 jms나 ejb에서 DynamicLinkReference

이름을 만들 때 별도의 설정이 없다면 호스트명을 이용해서 생성한다. 이것을 IP로 변경하려면 JEUS

Manager와 Container에 다음과 같이 설정한다. 기존에는 이 옵션이 반대로 적용되는 문제가 있어서 이

를 수정하였다.

-Djeus.ejb.cluster.useip=true

● jeusadmin의 jndilist 명령어를 실행할 때, DynamicLinkReference의 정보가 중복되어 출력되는 문제

수정

jeusadmin에서 jndilist 명령어로 JNDI 정보를 출력할 때, 클러스터링 기능과 관련된 정보들이 중복 출력

되는 문제를 수정하였다.

● 클러스터링 설정된 EJB 모듈을 Deploy하고 Undeploy 한 후에, 클러스터링 설정을 삭제하고 deploy

하면 NameAlreadyBoundException이 발생하는 현상 수정

클러스터링 설정된 EJB 모듈을 undeploy하는 과정에서 JNDI Tree에서 기존의 정보를 제대로 삭제하지

못하여, jeus-ejb-dd.xml에서 모듈의 클러스터링 설정을 삭제한 후 다시 디플로이할 때 NameAlready

BoundException이 발생하는 문제를 수정하였다.

● jeusadmin에서 jndilist -con [container name]을 실행할 때, container local binding된 object를 확

인할 수 없는 문제 수정

Local EJB처럼 JNSLocal인 Container에만 binding되는 object는 jeusadmin에서 jndlist 명령만 입력한

경우에는 확인할 수 없다. 그러나 jndilist 뒤에 -con [container name] 옵션만을 사용하는 경우, 혹은 -con

[container name] [objectName] 옵션을 사용하는 경우에는 해당 object를 확인할 수 있어야 한다. 이 2가

지 방법 중 -con [container name] 옵션만 사용하는 경우에 object를 확인할 수 없는 문제를 수정하였다.

4.1.5. JDBC

● check-query-period가 풀에 있는 모든 커넥션을 검사하지 않는 문제 수정

주기적으로 connection validation check가 이루어질 때, 풀에 있는 모든 커넥션이 검사가 되는 것이 정

상동작이다. 하지만 기존에는 검사한 커넥션이 invalid할 때 validation check가 종료되어 결과적으로 하

나의 커넥션만 줄어들게 되는 문제가 있어서 이를 수정하였다.

46 JEUS Release Note

Page 65: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● Connection.close()시에 에러 이벤트가 발생하면 통계 정보가 잘못되는 문제 수정

주기적으로 check-query를 시도하는 과정에서 실제 query는 성공한 이후에, query를 수행한 커넥션을

close할 때 에러 이벤트가 발생할 경우에 내부적으로 물리적 커넥션을 2번 close하여 current size값이

2번 감소되는 문제를 수정하였다.

● WebAdmin을 통한 커넥션 반환 기능이 제대로 동작하지 않는 문제 수정

10개 이상의 커넥션을 한번에 모두 반환할때, 내부적으로 ID 리스트의 sort문제로 모두 반환이 되지 않

던 문제를 수정하였다.

4.1.6. Transaction

● Runtime failure된 XA resource들에 대해 background thread에서 commit을 시도할 때, 일부 resource

에 대한 commit이 성공하면 무조건 indoubt tx를 지우는 문제 수정

하나의 Transaction에 묶인 여러 개의 XA Resource 들에 대한 commit이 실패한 경우 이후에 background

thread에서 계속 commit을 시도한다. 이때 일부 resource에 대한 commit 이 성공한 경우 indoubt tx 정

보가 무조건 삭제되는 문제가 있었다. 이렇게 되면 다른 resource에 대한 commit 처리가 제대로 이루어

지지 않을 수 있기 때문에 이를 수정하였다.

4.1.7. Session Server

● 중앙식 세션 서버를 사용할 때 Memory leak이 발생하는 문제 수정

중앙식 세션 서버를 사용할 때 크기가 큰 세션을 invalidation시킬 경우에도 일정 크기의 메모리가 free

되지 않아 Memory leak이 발생하는 문제를 수정하였다.

● 중앙식 세션 서버를 사용할 때 백업 되는 세션이 누락되는 문제 수정

중앙식 세션 서버를 사용할 때 백업하는 주기가 짧을 경우 부하 상황에서 백업이 누락될 수 있는 문제를

수정하였다.

● JDK1.6을 사용했을 경우 object array를 deserialize할 때 ClassNotFoundException이 발생하는 문

제 수정

JDK1.6을 사용했을 경우 object array를 deserialize할 때 ClassLoader.loadClass() 에서 ClassNotFoundEx

ception이 발생하는 문제를 수정하였다.

● 세션을 백업할 때 ConcurrentModificationException 발생하면서 BackupThread 죽는 문제 수정

IBM JDK에서만 발생하는 문제로, BackupThread에서 백업 데이터를 가져올 때 ConcurrentModifica

tionException이 발생하게 되면 BackupThread가 죽으면서 그 이후에 백업이 진행되지 않는 문제를 수

정하였다.

● 분산식 세션 서버 설정에서 nodename에 '-'이 들어있을때 deploy할 때 에러가 발생하는 문제 수정

제4장 JEUS 6.0 Fix#6 47

Page 66: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

기존 분산식 세션 서버는 엔진 ID와 세션 매니저 구분자를 '-'로 구분했다. 이럴 경우 분산식 세션 서버

설정에서 node name에 '-' 이 포함된 경우 엔진 ID와 세션 매니저 구분자를 '-'로 구분하지 못하는 발생

하기 때문에 각 정보를 가지고 오는 방식을 변경하여 문제를 수정하였다.

● 분산식 세션 서버를 사용할 때 passivated session이 session-timeout 이후에 제거되지 않는 문제 수

분산식 세션 서버를 사용할 때 passivation된 세션의 경우 session timeout이 지난 후에도 passivated

session의 갯수가 줄어 들지 않는 문제를 수정하였다.

● 세션 클러스터링 환경에서 webtob 리스너 reconnet의 경우 발생하는 문제 수정

– 세션 클러스터링을 사용할 때 webtob 리스너가 reconnet 되면 그 세션에 대해서 lock을 잡게 되어, 이

후 같은 세션에 대해서 모두 lock에 걸리는 문제를 수정하였다.

– 세션 클러스터링을 사용할 때 webtob 리스너가 reconnet 되면 그 세션에 대해서 maxInactiveInterval

을 변경하여도 변경된 값이 적용이 되지 않는 문제를 수정하였다.

4.1.8. Deployment

● jeusadmin에서 -per로 2개의 컨테이너에 각각 디플로이를 하게 되면 첫 번째 영구 모듈에 대한 appli

cation tag가 없어지는 문제 수정

jeusadmin 에서 2개의 container에 각각 영구 디플로이를 하게 되면 첫 번째 application tag가

JEUSMain.xml 에서 없어지고 마지막으로 수행한 디플로이 작업의 application tag만 남는 문제를 수정

하였다.

● JEUS schema를 parsing 하는 과정에서 "Invalid byte 1 of 1-byte UTF-8 sequence" exception 발

생하여 deploy 실패하는 문제 수정

jeus-web-dd.xsd를 parsing 하는 중에 Exception이 발생하는 문제를 해결하기 위해서 JEUS schema

validation을 하지 않는 옵션을 제공한다. 해당 system property는 다음과 같이 설정한다.

-Djeus.descriptorfile.validate-with-schema=false

● jeusadmin에서 absolute path를 이용하여 deploy할 때, 해당 application file을 APP_HOME 으로 복

사하는 현상 수정

jeusadmin에서 -absolute-path옵션을 이용해서 APP_HOME에 존재하지 않는 application을 여러 con

tainer에 deploy를 시도하면, 해당 application file을 APP_HOME으로 복사하는 문제를 수정하였다.

4.1.9. Tool

● deploy/undeploy의 -n 옵션이 특정한 경우에 비정상 동작하는 문제 수정

– jeusadmin의 deploy/undeploy 명령의 -n 옵션을 사용하면 JEUSMain.xml에 등록된 application의 target

이 여러 container인 것을 반영하지 못하는 문제를 수정하였다.

48 JEUS Release Note

Page 67: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– JEUSMain.xml에 등록된 application이 name정보가 없을 경우 undeploy -n 사용했을 때 적합한 appli

cation을 찾지 못하는 문제를 수정하였다.

4.1.10. WebAdmin

● 노드 클러스터링 환경에서 applicaton Deploy할 때 경로가 잘못 입력되는 문제 수정

각기 다른 머신 간에 노드 클러스터링 환경에서 application Deploy를 수행하면 JEUSMain.xml에 appli

caton 경로가 잘못 입력되는 문제를 수정하였다.

● JNDI Tree 페이지의 바인딩 정보를 잘못 생성하는 문제 수정

기존에 바인딩 정보의 클래스 이름을 항상 class java.util.Hashtable로 표시했던 문제를 바인딩하는 객

체의 클래스 이름으로 표시하도록 수정하였다.

● WebtoB 모니터링에서 새로 고침이 정상적으로 동작하지 않는 문제 수정

WebtoB 모니터링 화면에서 연결된 상태에서 새로고침 버튼을 누르면 기존의 연결이 해제가 되는 문제

를 새로고침할 때 기존 연결이 있는 경우 쿠키의 wsracd port를 사용해서 새로 연결을 만들도록 수정하

였다.

4.1.11. WebService

● Exploded Application의 wsdl이 redeploy할 때 갱신 되지 않는 문제 수정

Exploded Application의 wsdl이 redeploy할 때 갱신이 되지 않아서 _published_wsdl_dir_ Directory를

삭제해야 새로운 wsdl이 반영되던 문제를 수정하였다.

● XmlDataContentHandler의 mime type에 "charset"이 포함 될 경우 Exception이 발생하는 문제 수정

XmlDataContentHandler의 mimeType에 "charset"이 포함 될 경우(text/xml;charset=UTF-8) java.lang.IOEx

ception이 발생하는 문제를 수정하였다.

4.1.12. JMX

● jeusadmin에서 start/stop 명령을 호출할 때, failed 상태가 되는 문제 수정

이미 start나 stop된 상태에서 StateManageableMBean에 대해 jeusadmin에서 같은 상태의 명령어

(start/stop)를 호출할 경우에 failed로 변경되는 현상을 기존 상태를 유지하도록 하여 문제를 수정하였

다.

● JEUSMP listene가 unregister되는 문제 수정

JMXConnectorServer에서 socket option을 세팅하다 IOException이 발생해서 JEUSMP listener가 un

register되는 문제가 있었다. 이로 인해, console tool이 접속이 되지 않는 문제가 발생하였는데, 이와 같

은 현상이 발생했을 경우 JMXConnectorServer를 stop하지 않고 client에서 다시 connection을 맺을 때

까지 wait하도록 수정하였다.

제4장 JEUS 6.0 Fix#6 49

Page 68: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

4.1.13. Security

● web.xml의 security-constraint에서 설정하는 http-method에 소문자가 포함 될 경우의 문제 수정

web.xml의 security-constraint에서 설정하는 http-method 항목에 "GeT", "pOST", "head"와 같이 소문자

가 포함되어 작성될 경우 동작하지 않던 문제를 수정하였다.

● web.xml의 security-constraint에서 설정하는 url-pattern에 ":"이 포함 될 경우의 문제 수정

web.xml의 security-constraint에서 설정하는 url-pattern에 ":"이 포함되거나 runtime에 ":"이 포함된 url이

권한 check의 대상이 될 경우 java.lang.IllegalArgumentException이 발생하던 문제를 수정하였다.

● Multi Thread에서 JNDI InitialContext로 login을 시도할 경우 응답하지 못하는 문제 수정

한번에 많은 요청을 할 경우 대부분의 Thread가 jeus.security.impl.network.SecurityConnectionListen

er#getReply()에서 서버의 응답을 받지 못해 기다리는 문제가 있다. 이를 해결하기 위해 하나의 Thread

가 reply를 받을 때까지 sync를 보장하는 방식으로 수정하였다. 아래의 System property를 이용해서

Wait Time을 설정할 수 있다.

-Djeus.security.net.read-timeout=20000 (default 20초, 단위 ms)

● IBM JDK에 IBM Policy files를 설치하지 않았을 경우 JEUS booting이 실패하는 문제 수정

IBM JDK에 IBM Policy files을 설치하지 않았을 경우 "jurification policy files are not signed by trusted

signers" 에러가 발생 하면서 booting이 실패하던 문제를 수정하였다.

● JEUS Instance에서 JeusDeploymentManager.getTargets()를 호출할 경우 NoPermissionException

이 발생 하는 문제 수정

JEUS Instance에서 JeusDeploymentManager.getTargets()를 호출할 경우에 내부적으로 JeusDeploy

mentManager를 생성할 때 사용했던 Subject를 사용하지 않아서 NoPermissionException이 발생하던

문제를 수정하였다.

● JEUS Security Manager를 사용할 경우 RMI를 사용했을 때 readonly permission error가 발생하던

문제 수정

JEUS Security Manager를 사용하는 경우 JEUS 내부적으로 static하게 저장된 PermissionCollection을

사용하게 되는데, RMI 에서 Class를 loading하는 경우 Permission 문제가 발생하는 현상을 수정하기 위

해, PermissionCollection을 매번 호출될 때마다 새로 생성하도록 수정하였다.

4.1.14. Installer

● 특정 플랫폼에서 JAVA_VENDOR가 etc로 치환되는 문제 수정

HP, IBM 플랫폼에서 JAVA_VENDOR가 etc로 치환되는 현상을 수정하였다.

50 JEUS Release Note

Page 69: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

4.2. 기능추가

4.2.1. Server

● Thread interrupt 지원

진행중인 request thread를 중단할 수 있는 기능을 제공한다. 사용자가 jeusadmin tool이나 WebAdmin

을 통해 진행중인 request thread를 모니터링하고, 수동으로 interrupt 할 수 있도록 한다. JEUS내부적

으로는 thread interrupt가 발생할 경우 thread에 interrupted status flag를 설정하고, 이것의 설정 여부에

따라 이후 operation이 일어날 경우 exception을 발생시켜서 작업을 중단할 수 있도록 동작한다.

– 다음과 같은 JDBC관련 operation할 때 interrupt로 인해 interrupted status가 set되어 있다면, SQLEx

ception("the current thread is interrupted")을 발생시킨다.

DataSource#getConnection()

Connection operations (예: createCreatement)

Statement operations (예: executeQuery)

– 다음과 같은 EJB 호출의 경우에도 interrupted status가 set되어 있다면 EJBException("the current

thread is interrupted")을 발생시킨다.

EJBHome method를 호출할 때

EJB component business method를 호출할 때

remote, local 호출 모두에 해당

interrupted status는 exception이 발생한 이후에 unset되어 에러는 한번만 발생하며, 그 이후에 에러 처

리와 같은 로직에서는 JDBC, EJB 호출이 정상적으로 처리된다. 부가적으로 JNDI를 호출할 때도 inter

rupted 되었다면 NamingException이 발생할 수 있다. 만약 thread interrupt가 발생했음에도 위와 같은

exception 처리를 하지 않기 원한다면 아래 System property를 false로 설정하여 사용한다.

-Djeus.server.check-interrupted-status=true/false (defalut : true)

자세한 설명은 “JEUS Server 안내서”의 “3.2.2. Thread 제어” 부분을 참조하기 바라며, jeusadmin과

WebAdmin을 통해 thread를 모니터링하고 interrupt하는 방법은 각각의 추가기능 설명서와 매뉴얼을 참

고한다.

주의

이 기능은 시그널을 받은 스레드의 일관성을 보장하지 못하므로, 시험적인 용도로만 사용하기를 권

장한다.

● primary/backup clustering 구성 중 primary node에서 backup node의 정보를 알 수 있도록 개선

primary/backup clustering 환경에서 primary node의 jeusadmin을 이용해 nodelist 명령어를 입력했을

때 backup node의 정보를 보여줄 수 있도록 하였다.

제4장 JEUS 6.0 Fix#6 51

Page 70: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● primary node를 종료하면서 backup node를 boot시킬 수 있는 기능 추가

primary/backup clustering 환경에서 기존에는 primary node가 정상 종료 되었을때에는 backup node가

boot 되지 않았으나, primary node를 종료할 때 jeusadmin의 down/jeusexit 명령어에 '-start-backup' 옵

션을 추가하면 backup node를 boot 할 수 있는 기능이 추가되었다.

johan>jeusexit -start-backup

backup node boot successfully

johan jeusexit successful

● log file rotation 기능 추가

log file이 특정 시간이나 특정 사이즈가 되면 기록중이던 file은 보관하고 새로운 파일에 계속 기록하는

log rotation 기능이 추가되었다. JEUSMain.xml에 <file-hanlder>에 설정하며, 작성 예제는 다음과 같다.

<system-logging>

<level>FINE</level>

<handler>

<file-handler>

<name>fileHandler</name>

<enable-rotation>true</enable-rotation>

<rotation-count>50</rotation-count>

<valid-size>1024</valid-size>

<append>false</append>

</file-handler>

</handler>

</system-logging>

자세한 설명은 “JEUS Server 안내서”의 “제11장 Logging” 부분을 참조한다.

● 특정 IP를 통해서 들어오는 요청만 처리하는 기능 추가

JEUS를 운영하는 시스템에 여러 개의 IP가 존재할 때, 그 중 특정 IP를 통해서 들어오는 요청만을 JEUS

가 받아들일 수 있는 기능을 추가하였다. 이 기능을 사용할 경우 JEUS Manager, Engine Container의

baseport, Web admin port, RMI port, JMS port, HTTP listener port 등은 모두 지정된 서비스 IP로만 listen

한다.

전제 조건은 다음과 같다.

1. OS의 호스트 파일에서, 하나의 호스트네임에 한 개의 IP만 지정한다.

2. real host name은 OS의 포스트 파일에 반드시 등록되어 있어야 합니다. 단, 이 경우 loopback address

가 아닌 real ip를 지정해 준다.

3. Windows의 경우, host 파일 수정 후 의도한 대로 동작하지 않는다면 시스템을 재부팅한다.

이 기능을 사용하기 위해서는 우선 -Djeus.net.localip에 설정하려고 하는 IP를 지정해야 한다. 이후

JEUSMain.xml 파일에 다음과 같이 <listen-service-ip-only>태그를 true로 설정한 후 JEUS를 시작하면

해당 IP를 통해서 들어오는 요청만 JEUS가 받아들인다. 사용 방법은 다음과 같다.

<jeus-system>

<node>

<listener>

52 JEUS Release Note

Page 71: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

<listen-service-ip-only>true</listen-service-ip-only>

</listener>

</node>

</jeus-system>

● System.out, System.err를 log format에 맞게 출력해 주는 기능 추가

JEUSMain.xml에 <log-stdout-to-raw-format> 설정을 추가하여 System.out, System.err으로 사용자가

출력한 내용을 JEUS의 log format에 맞게 출력할 수 있도록 하였다. <log-stdout-to-raw-format>의 기본

값은 true이며, 이 기능을 사용하기 위해서는 해당 설정 값을 false로 설정해야 한다. 이 경우 다음과 같

은 형태의 로그가 출력된다.

[2009.04.30 16:05:19][0][b214] [johan-10] [STDOUT] system out

JEUS 매니저와 컨테이너에 모두 설정할 수 있으며, 컨테이너에 독립된 설정이 없을 경우 매니저의 설

정을 따른다.

4.2.2. EJB

● 같은 JVM에 디플로이된 EJB를 Local Call하는 기능 추가

JEUS에서 사용하는 EJB 모듈은 기본적으로 ISOLATED 클래스로딩 모드를 사용하는데, 이 경우 기본

적으로 Remote call을 하도록 되어 있다. 이를 개선하여 동일한 컨테이너에 있는 EJB를 디플로이하는

경우에, EJB의 클래스로딩 모드에 상관없이 Local call을 사용할 수 있게 하였다.

이와 관련된 설정은 jeus-ejb-dd.xml에 설정하는 <local-invoke-optimize>, <local-invoke-only>, <call-by-

value>의 3가지이다. 이 설정들을 이용하여 Local call을 가능하게 하는 방법은 다음의 3가지와 같다.

– 동일한 컨테이너에 ISOLATED 모드로 디플로이된 EJB를 호출하는 경우

동일한 컨테이너에 ISOLATED 모드로 디플로이된 EJB에 대하여 Local call를 호출하려는 경우 jeus-

ejb-dd.xml 파일에 다음과 같이 <local-invoke-optimize>, <local-invoke-only>, <call-by-value>를 모두

true로 설정해주면 된다. ISOLATED로 디플로된 모듈에 대해서는 <call-by-value>를 false 로 지정하

여도 설정이 적용되지는 않지만, 명시성을 위해서 <call-by-value>를 같이 true로 설정하는 것이 좋다.

<jeus-ejb-dd>

<beanlist>

<jeus-bean>

....

<local-invoke-optimize>true</local-invoke-optimize>

<local-invoke-only>true</local-invoke-only>

<call-by-value>true</call-by-value>

....

</jeus-bean>

</beanlist>

</jeus-ejb-dd>

제4장 JEUS 6.0 Fix#6 53

Page 72: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– 동일한 컨테이너에 SHARED 모드로 디플로이된 EJB를 호출하는 경우

동일한 컨테이너에 SHARED로 디플로이된 EJB를 Locall call로 호출하려는 경우에는 call-by-value,

call-by-rerefence 중 하나를 선택하여 사용할 수 있다. <call-by-value>를 true로 설정하면 EJB를 call-

by-value로 호출하며, false로 설정하면 call-by-reference로 호출한다.

Call-by-value로 호출하려고 할 경우에는 <local-invoke-optimize>, <local-invoke-only>는 true로 설정

해야 한다

[ Call-by-value로 호출하려는 경우]

<jeus-ejb-dd>

<beanlist>

<jeus-bean>

....

<local-invoke-optimize>true</local-invoke-optimize>

<local-invoke-only>true</local-invoke-only>

<call-by-value>true</call-by-value>

....

</jeus-bean>

</beanlist>

</jeus-ejb-dd>

Call-by-reference로 호출하려는 경우에는 <local-invoke-optimize>만 true로 설정하는 방법, 혹은 <local-

invoke-optimize>, <local-invoke-only>는 true로 설정하고 <call-by-value>를 false로 설정하는 방법이

있다.

[ Call-by-reference로 호출하려는 경우 - <local-invoke-optimize>만 사용하는 방법]

<jeus-ejb-dd>

<beanlist>

<jeus-bean>

....

<local-invoke-optimize>true</local-invoke-optimize>

....

</jeus-bean>

</beanlist>

</jeus-ejb-dd>

[ Call-by-reference로 호출하려는 경우 - <local-invoke-optimize>, <local-invoke-only>, <call-by-

value> 모두 사용하는 방법]

<jeus-ejb-dd>

<beanlist>

<jeus-bean>

....

<local-invoke-optimize>true</local-invoke-optimize>

<local-invoke-only>true</local-invoke-only>

<call-by-value>false</call-by-value>

....

54 JEUS Release Note

Page 73: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

</jeus-bean>

</beanlist>

</jeus-ejb-dd>

– 같은 EAR 파일에 존재하는 EJB를 호출하는 경우

같은 EAR 파일에 존재하는 EJB를 Local call로 호출하려는 경우의 사용법은 SHARED로 디플로이된

EJB 를 Local call로 호출하려는 경우의 사용법과 동일하다.

4.2.3. WebContainer

● ajp13, TCP listener에도 IP 설정 기능 추가

한 대의 서버에 두 개의 IP가 할당되어 있는 특수한 경우, <ip> 태크에 설정된 IP가 우선적으로 적용되

도록 기능이 추가되었다.

[ WEBMain.xml 설정 예 ]

<ajp-listener>

...

<ip>112.223.334.445</ip>

...

</ajp-listener>

<tcp-listener>

...

<ip>112.223.334.445</ip>

...

</tcp-listener>

4.2.4. JMS

● Tibero persistence store 지원

JEUS MQ에서 지원하는 persistence store는 journal store와 jdbc store가 있다. 이 중에서 oracle만 지

원하던 jdbc store에 Tibero(Tibero 3.0 SP2 이상 버전)도 지원하도록 하였다. 설정 방법은 기존 방식과

동일하게 JEUSMain.xml에 설정한 Tibero data source의 이름을 다음 같이 JMSMain.xml에 설정한다.

[ JMSMain.xml 설정 예 ]

<persistence-store>

<jdbc>

<data-source>tibero_cpds1</data-source>

</jdbc>

</persistence-store>

자세한 설명은 “JEUS MQ 안내서”의 “5.3. 기본 설정(JMSMain.xml)” 부분을 참조한다.

제4장 JEUS 6.0 Fix#6 55

Page 74: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

4.2.5. JDBC

● 커넥션 풀의 속성 동적 변경 지원

WebAdmin의 JEUS 매니저 리소스의 JDBC 관리 메뉴를 통해서 커넥션 풀 속성을 동적으로 변경할 수

있다. 다음의 속성에 대해서만 동적 변경이 가능하다.

– 기본 설정 : Auto Commit, Stmt Query Timeout, Action On Connection Leak

– 연결 풀 설정 : Delegation Dba, Dba Timeout, Check Query Class를 제외한 모든 속성

● init-sql 기능 추가

커넥션을 생성한 뒤 가장 처음으로 sql을 수행할 수 있는 init-sql기능을 제공한다. 이 sql이 실패하면 생

성된 커넥션을 close한다.

● 물리적 커넥션을 강제로 끊어주는 기능 추가

WebAdmin을 통해 관리자가 애플리케이션이 사용중인 커넥션들을 강제로 끊어 버릴 수 있다. 이 기능

을 사용하는 datasource의 설정에 delegation-dba 설정이 되어 있다면 물리적 커넥션을 닫기 전에 먼저

session-kill 명령을 내린다. 이 기능은 주로 로컬 트랜잭션, 클로벌 트랜잭션, SQL 작업이 오래 걸릴 경

우에 사용할 때 유용하다.

4.2.6. Deployment

● JEUS deploy ant task에 부가기능을 위한 attribute추가

– JEUS deploy/undeploy ant task에 registeredAppName attribute를 추가하여 JEUSMain.xml에 등록

된 application의 이름을 지정하여 deploy/undeploy할 수 있도록 하였다. registeredAppName attribute

는 다른 attribute들과 함께 사용할 수 없다.

<target name="deploy" depends="init">

<deploy

deployURI="deployer:Jeus:johan"

registeredAppName="appName"

user="administrator"

password="jeusadmin"/>

</target>

<target name="undeploy" depends="init">

<modulecommand command="undeploy"

registeredAppName="appName"

deployURI="deployer:Jeus:johan"

user="administrator"

password="jeusadmin"/>

</target>

56 JEUS Release Note

Page 75: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– JEUS deploy ant task에 permanentDeploy attribute를 추가하고, undeploy ant task에는 permanen

tUndeploy attribute를 추가하여, 각 attribute값이 true일 경우 영구 배포 및 영구 제거 기능이 동작하

도록 하였다.

<target name="deploy" depends="init">

<deploy targetNames="${target.name}"

deployURI="deployer:Jeus:johan"

modulePath="C:\jeus6\webhome\app_home\appName"

permanentDeploy="false"

user="administrator"

password="jeusadmin"/>

</target>

<target name="undeploy" depends="init">

<modulecommand command="undeploy"

moduleName="appName"

deployURI="deployer:Jeus:johan"

targetNames="johan_container1"

permanentUndeploy="true"

user="administrator"

password="jeusadmin"/>

</target>

자세한 설명은 “JEUS Reference Book”의 “5.4. Deployment Ant Task” 부분을 참조한다.

● jeusadmin deploy에서 context-root 설정 옵션 추가

jeusadmin에서 deploy할 때 application의 context-root를 지정하여 deploy할 수 있도록 context-root 설

정 옵션이 추가 되었다. 사용법은 다음과 같다.

deploy [-context-root context-root_name] [application]

4.2.7. Tool

● jeusadmin에서의 thread 모니터링 및 interrupt 지원(ti, interrupt-thread 명령어 추가)

– ti(thread info) 명령어 개선

기존 servlet thread만 볼 수 있었던 ti 명령어를 개선하여 servlet과 EJB RMI thread 정보를 함께 보여

주도록 하였다.

– interrupt-thread 명령어 추가

특정 servlet/EJB RMI thread에 대한 interrupt를 수행할 수 있는 기능을 제공한다. 특히 interrupt-thread

명령을 사용할 때 시그널을 받은 thread의 일관성을 보장하지 못하므로, 시험적인 용도로만 사용하기

를 권장한다. 이 명령어를 사용하면 다음과 같은 주의 메시지를 볼 수 있다.

제4장 JEUS 6.0 Fix#6 57

Page 76: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

WARNING: This function is EXPERIMENTAL yet. The target thread may throw an

exception depending on conditions, and this might cause unconsidered

complications if it's not handled well.

자세한 설명은 “JEUS Reference Book”의 “4.2.3.27. interrupt-thread” 부분을 참조한다.

● jeusadmin에 strace 명령어 추가

jeusadmin에 servlet/EJB RMI thread의 stack trace를 보여주는 strace명령어를 추가하였다. 사용법은

다음과 같다.

strace [-con container_name] tid

자세한 설명은 “JEUS Reference Book”의 “4.2.3.26. strace” 부분을 참조한다.

● jeusadmin에 status 명령어 추가

jeusadmin에 JEUSManager, EngineContaier, 그리고 <start-on-boot>가 true인 전체 EngineContainer

들의 정상 부팅 여부를 확인할 수 있는 status 명령어가 추가되었다.

자세한 설명은 “JEUS Reference Book”의 “4.2.3. 공통 명령어” 부분을 참조한다.

● jeusadmin에서 여러 개의 container를 옵션으로 지정할 수 있도록 개선

jeusadmin에서 deploy와 undeploy명령을 수행할 때 여러 개의 container를 옵션으로 지정할 수 있도록

개선하였다, container 구분자로 콤마(",")를 이용한다.

johan>deploy -con johan_container1,johan_container2 myApp.jar

johan>undeploy -con johan_container1,johan_container2 myApp

jeusadmin의 applist, start, stop 명령도 위 기능을 사용할 수 있도록 개선되었다.

● jeusadmin offline help 개선

jeusadmin의 offline help가 다음과 같이 개선되었다.

– jeusadmin의 command help는 "jeusadmin -h help [help-options]" 일 때 보여준다.

– jeusadmin의 console usage는 "jeusadmin" 또는 "jeusadmin -h" 일 때 보여준다.

– 옵션 없이 "jeusadmin -h help" 는 help명령어의 usage와 command 목록을 보여준다.

– 기존에 제공하던 "jeusadmin -h all", "jeusadmin -h <command>" 기능을 유지한다.

– 다음과 같이 입력한 경우 offline help를 확인할 수 있다.

jeusadmin <nodename> help [-l] [-a] [-g group_name] [command]

jeusadmin <nodename> -U<id> -P<passwd> help [-l] [-a] [-g group_name] [command]

jeusadmin <nodename> -U<id> help [-l] [-a] [-g group_name] [command]

jeusadmin <nodename> -P<passwd> help [-l] [-a] [-g group_name] [command]

58 JEUS Release Note

Page 77: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

4.2.8. WebAdmin

● WebAdmin에서의 thread interrupt 지원

Servlet/EJB RMI Request thread에 대한 monitoring, interrupt를 할 수 있는 기능이 추가 되었다. 이 기

능을 사용할 수 있는 페이지는 다음과 같다.

– JEUS 모니터링 > 요청 스레드 모니터링 페이지에서 Servlet 과 EJB의 탭으로 구분되어 있으며, 각 엔

진의 스레드를 모니터링 하거나 interrupt 시킬 수 있다.

– 서블릿 엔진 - Listener - 통계 탭 - 스레드 풀에서 서블릿 엔진의 스레드를 모니터링 하거나 interrupt

시킬수 있다.

– EJB 엔진 - 통계 탭 - 스레드 탭에서 요청이 처리중인 경우에 EJB 엔진의 스레드를 모니터링 하거나

Interrupt 시킬 수 있다.

● WebAdmin에서 JMS Resource 모니터링 기능 강화

WebAdmin에서 JMS Destination Resource 페이지와 JMS Client Resource 페이지의 모니터링 기능이

강화되었다.

– JMS Destination Resource

엔진 컨테이너 > 엔진 > 리소스 > JMS > 데스티네이션의 JMS 데스티네이션 리소스 페이지에 전달된

메시지 수, 만료된 메시지 수, consumer 수, 사용 중인 메모리 항목이 추가되었다.

• 전달된 메시지 수 : 해당 데스티네이션에 도착한 메시지 중 메시지 수신자에게 전달을 완료한 메시

지의 개수를 확인할 수 있다

• 만료된 메시지 수 : 해당 데스티네이션에 도착한 메시지 중 메시지 수신자에게 전달되기 전에 만료

된 메시지의 개수를 확인할 수 있다.

• consumer 수 : 해당 데스티네이션에 접속한 메시지 수신자의 개수를 확인할 수 있다(High는 과거

동시에 접속했던 최대치이며, Current는 현재 개수이다).

• 사용 중인 메모리 : 해당 데스티네이션이 메시지를 저장하기 위해 사용 중인 메모리 양을 확인할 수

있다. 단위는 KB이다(High는 과거 사용했던 최대치이며, Current는 현재 사용량이다).

– JMS Client Resource

JMS 성능 개선 중 Facility MBean 제거와 관련하여 엔진 컨테이너 > 엔진 > 리소스 > JMS > 클라이

언트의 JMS 클라이언트 리소스 페이지에서 클라이언트가 JMS 엔진에 맺은 connection 수를 보여주

는 '연결' 항목은 제거되고 클라이언트가 연결된 시간을 보여주는 '연결 시간' 항목이 추가되었다. 기

존의 연결 항목은 JMS Facility MBean 제거에 따라, 기존의 '연결' 항목은 해당 entry 이름을 선택하여

상세 정보에 보여지게 된다.

● 기능 추가에 따른 schema 추가

– Active Timout Notification, thread-interupt-execution, restart-engine-execution schema 추가 : 서블릿

엔진 > ContextGroup > 웹 리스너 > 스레드 풀 페이지

– JMS SSL schema 추가 : JMS 엔진 > 서비스 채널 > SSL 페이지

제4장 JEUS 6.0 Fix#6 59

Page 78: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– Listen port를 특정 IP address에만 binding 할 수 있는 설정 schema 추가 : JEUS 매니저 > 리스너 >

기본 설정 페이지

– Init Sql schema 추가 : JEUS 매니저 리소스 > JDBC > 새 JDBC 데이터 소스 생성 > 3. 연결 풀 > 고

급 선택사항 페이지

– log-stdout-to-raw-format schema 추가 : 엔진 컨테이너 > 기본 설정 > 고급 선택사항 페이지

● 기능 추가에 따른 UI 추가

– 물리적 커넥션을 강제로 끊어주는 UI 추가 : 엔진 컨테이너 > 리소스 > JDBC > 연결 페이지

– 선택된 container , 현재 노드의 모든 container 에 대해 JDBC Connection Pool 을 생성하거나 재구성

할 수 있는 UI가 추가되었다.

• 엔진 컨테이너 > 리소스 > JDBC 재구성 버튼 : 선택된 container의 connection pool을 재구성 한다

• 매니저 리소스 > JDBC 생성 버튼 , 재구성 버튼 : 현재 노드의 모든 container 에 대해 선택된 JDBC

Connection Pool을 생성 또는 재구성한다.

● WebtoB Block 기능 추가

WebtoBListener를 suspend/resume 할 수 있는 WebtoB Block 기능이 추가되었다. 다음의 페이지에서

해당 기능을 확인할 수 있다.

– 노드 트리 > 애플리케이션 모듈 디플로이 > 버전 관리를 통한 디플로이 > 고급 선택사항

– container > 애플리케이션 모듈 > 리디플로이 > 고급 선택사항

● application을 redeploy 할 수 있는 페이지 추가

기존에 jeusadmin에서만 가능하였던 application redeploy 기능이 WebAdmin에서도 가능하도록 redeploy

페이지가 추가되었다.

엔진 컨테이너 > 애플리케이션 모듈에서 모듈 선택 > 제어 > 리디플로이 페이지에서 해당 기능을 확인

할 수 있다.

4.2.9. WebService

● WS-Security에서 DSA 키를 통해서 전자 서명 및 전자 서명 검증을 할 수 있는 기능 추가

기존에는 WS-SecurityPolicy에 따라서 RSA 키를 사용해서 서명 및 검증을 하도록 되어있었으나, DSA

키를 가지고도 동일한 기능을 할 수 있도록 향상되었다.

4.2.10. Installer

● 플랫폼 추가 지원

인스톨러에서 windows x64, sun os x64 플랫폼을 추가 지원한다(해당 플랫폼에 대한 패치 인스톨러는

JEUS 6.0 Fix#7 버전에 지원된다).

60 JEUS Release Note

Page 79: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– 특이 사항 : windows x64 의 경우, 다운받은 인스톨러 바이너리 아이콘이 디폴트 이미지로 적용되는

현상이 있다(InstallAnywhere2008의 문제).

4.3. 변경사항

4.3.1. Server

● DOM/SAX Parser 구현체 교체

JAXP 구현체를 SUN JAXP 1.4 에서 Apache Xerces Xalan 2.7.1 교체

추가된 libraries:

JEUS_HOME\lib\endorsed\xercesImpl.jar

JEUS_HOME\lib\endorsed\xalan.jar

JEUS_HOME\lib\endorsed\serializer.jar

JEUS_HOME\lib\endorsed\resolver.jar

JEUS_HOME\lib\endorsed\xsltc.jar

SUN JDK 1.5와 IBM JDK에서의 호환성을 위하여 JEUS_HOME\lib\endorsed\jaxp-api.jar,

JEUS_HOME\lib\endorsed\jaxp-ri.jar는 계속 유지된다.

● BCEL library Version 변경

BCEL library의 Version 이 5.0 rc1에서 5.2로 변경되었다.

● Container base port가 BindException이 났을 때 발생하는 exception message 변경

Container를 시작하는 과정에서 base-port가 충돌할 경우 다음과 같은 형태의 메시지를 출력하도록 하

였다.

Could not bind the baseport {0} which might be in use by another process.

Please check this. If you want to change the port number,

set <base-port> for this container

● <node>에 설정한 로그 레벨을 <engine-container>에도 적용하도록 변경

<node>에서 설정한 로거의 로그 레벨이 하위 엔진 컨테이너에도 기본으로 적용되도록 변경하였다. 그

러나 <engine-container>에 동일한 로거에 대한 레벨 설정이 존재할 경우에는 해당 설정이 우선 적용된

다.

● JEUS Manager와 Container가 시작할 때 생성하는 로그 변경

JEUS Manager와 Container가 시작할 때 생성하는 로그를 좀 더 직관적으로 표현하여 JEUS가 정의하

고 있는 State를 알기 쉽게 표현하도록 로그를 수정하였다.

제4장 JEUS 6.0 Fix#6 61

Page 80: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● JEUS의 version.properties를 jeusversion.properties로 변경

IBM JDK 1.5 SR9의 jre\lib\ext\healthcenter.jar에 version.properties가 존재하는데, 이 파일이 JEUS의

version.properties 파일과 중복되어 부팅되지 않는 문제가 있었다. 이 문제를 해결하기 위해 JEUS에서

이 파일 이름을 jeusversion.properties로 변경하였다.

● 엔진 로거를 컨테이너에 설정하면 로그가 두 번씩 찍히는 현상 수정

JEUSMain.xml 에서 엔진 로거를 다음과 같이 컨테이너에 설정하면 로그가 두 번 찍히는 현상이 있었

다.

<engine-container>

<system-logging>

<name>jeus.ejb</name>

<level>FINE</level>

</system-logging>

</engine-container>

이와 관련하여 다음과 같이 관련 설정과 동작 방식을 변경하였다.

– xml schema에서 <useParentHandler>의 기본값을 true로 변경한다.

– 지정된 로거에 대해서 handler 설정이 없을 경우에는, 독립된 handler를 생성하지 않는다.

– useParentHandler=true는 상위의 handler를 사용할지 여부만 결정한다. 자신의 handler를 사용하는

것과는 별개로 동작한다.

– useParentHandler를 false로 하고 자신의 handler설정이 없을 경우, JEUS가 useParentHandler를 true

로 설정한다.

4.3.2. WebContainer

● WebtoBListener에서 serverside-queueing을 사용하지 않도록 디폴트값 변경

WebtoBListener에서 serverside-queueing를 사용할 때 request 유실 문제가 발생할 수 있기 때문에,

serverside-queueing을 사용하지 않도록 디폴트 값을 false로 변경하였다.

● WebtoB가 기동되지 않은 상태에서 JEUS를 기동할 때 지연되는 현상 개선

WebtoB listener를 사용할 때 WebtoB가 boot되어 있지 않으면 JEUS에서 WebtoB 연결을 요청할 때

timeout이 발생할 때까지 JEUS의 booting 시간이 지연된다. 이 지연 현상을 해결하기 위해 WebtoB와

의 연결 요청을 기존의 WebtoB request processor에서 WebtoB worker thread가 실행될 때 연결을 요

청하는 것으로 변경하였다.

● EL Library 버전 변경

JEUS에 포함되어 있는 EL 구현체는 binding한 객체의 타입 변환에 문제가 있어서, EL Library 버전을

1.0에서 1.1로 변경하였다.

● Response 헤더의 Server정보를 표시하지 않도록 변경

62 JEUS Release Note

Page 81: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

보안상의 이유로 Response 헤더의 Server 정보를 표시하지 않도록 jeus.servlet.response.header.server

Info 옵션 디폴트값이 ture에서 false로 변경하였다. 서버 정보가 필요한 경우 JEUSMain.xml의 command-

option에 -Djeus.servlet.response.header.serverInfo=true 로 설정하면 기존과 같이 서버 정보가 Response

헤더에 표시된다.

4.3.3. JMS

● JMS 성능 개선

– 물리적 connection을 공유할 수 있도록 개선

일반적으로(connection 생성 - session 생성 - producer 생성 - message 전송 - connection 종료) 패턴

으로 메시지를 보내는데, 이는 매번 새로운 물리적 connection을 맺어야 하는 경우에는 성능 저하 뿐

만 아니라 안정성도 저하되기 때문에, 물리적 connection을 공유할 수 있도록 개선하였다.

– Client Facility pooling 기능 지원

위의 물리적 connection과 관련하여 client facility들(connection, session, porducer)을 반복적으로 생

성하는 경우 성능에 영향을 미칠 수 있다. producer를 사용하는 경우에 Client Facility pooling 기능을

지원하도록 하였다. consumer나 transaction 등이 사용될 경우에는 pooling을 하지 않고 사용되었던

client facility들은 closed할 때 바로 제거하도록 하여 성능을 개선하였다.

– Facility MBean제거

client facility (connection, session, porducer)들의 MBean을 생성하는 시간이 오래 걸리므로 생성하

지 않도록 한다. 이에 따라, jmsadmin과 WebAdmin을 통해 entryall과 entry 정보가 보여지는 방식이

변경되었다.

– 기본값 변경

• JMSMain.xml의 destination의 max-pending-limit 기본값을 8192로 변경(변경 전 : 2147483647)

• JMSMain.xml의 journal persistence store의 initial-log-file-count 기본값을 5로 변경(변경 전 : 2)

– JMS 클라이언트에서 NIO 사용하도록 변경

-Djeus.jms.client.use-blocking-socket=true (default : true)

자세한 설명은 “JEUS MQ 안내서”의 “2.3. 커넥션과 세션” 부분을 참조한다.

● SSL 지원

JMS에서는 통신 레벨에서의 보안을 위해 서비스 채널에 Secure Socket Layer를 사용할 수 있도록 지

원하고 있다. 이전 버전에서는 network layer 측에 nio SSL에 버그들이 있어서 JMS SSL 기능을 제한해

두었었는데 이번 버전부터 해당 기능을 지원하도록 변경되었다. blocking, non-blocking에서 모두 SSL

을 지원한다. SSL을 사용하기 위한 필요한 파일들과 설정하는 방법은 다음과 같다.

– keystore, truststore file 생성

SSL을 사용하기 위해 서버와 클라이언트를 설정할 때, keystore, truststore 정보가 필요하기 때문에

해당 파일을 생성해 주어야 한다.

제4장 JEUS 6.0 Fix#6 63

Page 82: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– 서버 설정

SSL을 사용하기 위해서는 <use-ssl>을 true로 설정해야 한다. 또한 SSL 통신에 필요한 ssl-configuration

에 대해 설정한다. blocking, non-blocking에서 모두 SSL을 지원하기 때문에 blocking-socket 설정은

원하는 설정을 사용하면 된다.

< JMSMain.xml 설정 예 >

<service-config>

<name>SSL_SERVICE</name>

<server-address>127.0.0.1</server-address>

<port>19741</port>

<blocking-socket>true</blocking-socket>

<use-ssl>true</use-ssl>

<ssl-configuration>

<protocol>TLS</protocol>

<key-store-type>JKS</key-store-type>

<key-store-file>C:\JEUS_HOME\config\keystore</key-store-file>

<key-store-pass>changeit</key-store-pass>

<key-management-algorithm>SunX509</key-management-algorithm>

</ssl-configuration>

<connection-timeout>1000</connection-timeout>

<client-keepalive-timeout>10</client-keepalive-timeout>

</service-config>

– 클라이언트 설정

클라이언트에서는 JVM 옵션으로 SSL 설정할 수 있다.

-Djeus.jms.ssl.protocol=TLS

-Djeus.jms.ssl.keystore.type=JKS

-Djeus.jms.ssl.keystore.passphrase=changeit

-Djeus.jms.ssl.keystore.file=C:\JEUS_HOME\config\keystore

-Djeus.jms.ssl.keymanagement.algorithm=SunX509

-Djeus.jms.ssl.truststore.type=JKS

-Djeus.jms.ssl.truststore.passphrase=changeit

-Djeus.jms.ssl.truststore.file=C:\JEUS_HOME\config\truststore

-Djeus.jms.ssl.trustmanagement.algorithm=SunX509 ...

자세한 설명은 “JEUS MQ 안내서”의 “5.4. 고급 설정” 부분을 참조한다.

● Service Channel의 port 설정을 하지 않거나 0으로 설정한 경우, JEUS 엔진 컨테이너의 Base Port를

사용하도록 변경

JMS service channel의 service config 절에서 다음과 같이 port를 설정하지 않거나 0으로 설정한 경우

JEUS 엔진 컨테이너의 base port를 사용하도록 변경되었다. 이전 버전에서는 port를 설정하지 않거나

0으로 설정한 경우 any port를 사용하였다.

< JMSMain.xml 설정 예 > port를 설정하지 않을 경우

64 JEUS Release Note

Page 83: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

<service-config>

<name>jmstest</name>

<blocking-socket>false</blocking-socket>

<client-keepalive-timeout>10</client-keepalive-timeout>

</service-config>

< JMSMain.xml 설정 예 > port를 0으로 설정할 경우

<service-config>

<name>jmstest</name>

<port>0</port>

<blocking-socket>false</blocking-socket>

<client-keepalive-timeout>10</client-keepalive-timeout>

</service-config>

자세한 설명은 “JEUS MQ 안내서”의 “5.3. 기본 설정(JMSMain.xml)” 부분을 참조한다.

● jeus-ejb-dd.xml의 trans-attribute가 Required일 경우에만 max-messages가 적용되도록 변경

mdb의 max-messages값은 consumer에 메시지가 max-message만큼 쌓이게 되면 mdb를 호출하여 성

능을 향상 시킬수 있는 설정이다. 그런데 trans-attribute가 Required가 아닌 경우 적용되면 acknowledge

처리가 느려져서 OutOfMemoryError를 발생시킬 수 있기 때문에, trans-attribute 가 Required 일 경우만

max-messages가 적용되도록 변경하였다.

4.3.4. JDBC

● XAResource.end()에서 에러가 발생할 경우, TM이 선택적으로 rollback처리하도록 변경

XAResource.end()를 호출할 때 에러가 난 경우에 XAException을 받은 트랜젝션 매니저(TM)는 rollback

을 수행하도록 변경하였다.

JDBC 커넥션 풀에서는 XAResource.end()가 실패할 경우 항상 XAException을 던지도록 변경하였으며,

기존 동작으로 동작하기 원한다면 엔진 컨테이너의 command-option에 다음과 같이 System Property

를 설정한다.

-Djeus.jdbc.ignore-xa-end-error=true (default : false)

● JDBC관련 모든 MBean을 internal한 위치로 변경

JDBC관련 MBean들 중 stats정보를 제공하는 method 이외에는 모두 internal한 위치로 옮겼다. 애플리

케이션에서 커넥션 풀의 통계 정보를 얻어오고 싶다면 다음의 예제를 참고하여 작성한다.

import javax.management.j2ee.statistics.*;

....

JDBCStats jdbcStats = (JDBCStats) jdbcResourceMBean.getstats();

for (JDBCConnectionPoolStats cpStats : jdbcStats.getConnectionPools()) {

if (connectionPoolName.equals(cpStats.getJdbcDataSource())) {

long idleCount = cpStats.getFreePoolSize();

long poolCount = cpStats.getPoolSize();

제4장 JEUS 6.0 Fix#6 65

Page 84: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

long activeCount = poolCount - idleCount;

......

}

}

4.3.5. Transaction

● Transaction 로그를 독립된 디렉터리에 남길 수 있도록 변경

<tm-config><tx-log-dir>을 지정하여 Tx로그를 독립된 디렉터리에 남길 수 있도록 하였다. 시스템 옵션

으로 jeus.log.home이 같이 지정된 경우, xml 로 설정한 내용이 우선 적용된다

4.3.6. Session Server

● 세션 deserialization 때 Error가 발생한 경우 로그를 남기도록 변경

세션을 deserialization을 할 때, ClassNotFoundException과 같은 Exception이 발생 할 경우 로그에 Stack

trace와 함께 출력되도록 변경하였다.

● Application에서 invalidate가 사용되는 코드 위치 추적 가능하도록 로그 변경

JEUS log level이 FINEST일 경우 Application에서 session을 invalidate 시킬때 에러를 발생시켜 그 위

치를 추적할 수 있게 하는 로그가 남도록 변경하였다.

● 세션의 시간 정보만 변경된 경우에도 backup session server로 시간 정보를 업데이트 하도록 변경

check level을 set으로 한 상태에서, 반복적으로 getSession()이나 setMaxInactiveTime() 만을 호출하는

경우에는 시간 정보가 업데이트되지 않아서 backup session server로 remove-to에 의해 세션이 지워지

는 문제가 발생할 수 있다. 이 문제를 해결하기 위해 세션 서버에서 백업 서버로 시간 정보만 업데이트

하도록 변경하였다.

● 세션 클러스터링 환경에서 WebSession을 사용할 때 readlock를 잡지 않도록 변경

세션 클러스터링 환경에서 WebSession을 사용할 때 readlock을 잡고 사용하게 된다. 이때 같은 세션에

대해서 RequestProcessor를 사용하고 있으면 readlock을 잡게 되는데 해당 프로세싱이 길어지게 되면

같은 세션에 대해서 요청처리가 끝날때까지 다른 스레드들이 기다리게 되기 때문에 Websession을 사

용할 때 readlock를 잡지 않도록 변경하였다.

4.3.7. Client Container

● jclient.jar에 jeusmp.jar, jmxremote.jar를 포함하도록 변경

JEUS_HOME\lib\client\jclient.jar에 jeusmp.jar와 jmxremote.jar를 포함시켰다.

66 JEUS Release Note

Page 85: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

4.3.8. Deployment

● auto-deploy directory 체크를 directory의 시간이 변경되었을 경우에만 하도록 변경

기존에는 파일의 추가,삭제에 따른 리스트를 비교하여 디플로이 또는 언디플로이를 수행하던 방식에서

디렉터리의 last modified time의 갱신여부를 확인하여 Task를 수행하는 것으로 변경되었다.

● jeus-main.xsd에서 <application> 하위의 <absolute-ejb-jar>, <absolute-jeus-ejb-dd> 제거

JEUS4.X에는 ejb-jar.xml , jeus-ejb-dd.xml이 EJB Engine 안에 있었는데, JEUS5.X, 6.X에는 APP 에 해

당 xml 파일이 들어가므로 jeus-main.xsd에서 불필요한 스키마이기 때문에 deprecated 되었다.

4.3.9. Tool

● jeusadmin의 deploy/undeploy -n 옵션을 사용할 경우 다른 옵션은 사용하지 못하도록 변경

jeusadmin의 deploy/undeploy명령어에서 -n옵션이 설정되면 다른 옵션은 넣을 수 없도록 수정하였다.

-n옵션은 JEUSMain.xml에 등록된 application의 정보를 가지고 동작하기 때문에 다른 옵션과 함께 사

용되어야 할 이유가 없다.

● jeusadmin의 resyncds 명령 deprecation

jeusadmin의 resyncds명령과 tmresync 명령이 중복되므로, resyncds명령은 deprecated하고, tmresync

명령의 recover동작을 현재 XAResource에 대해 recover하도록 하였다.

● jeusadmin의 reconfigds 명령의 동작 변경

jeusadmin의 reconfigds 명령을 통해 user/password 를 세팅할 수 있는 기능을 없애고, 커넥션 풀의

min/max를 임시적으로 조정할 수 있는 기능만 제공하도록 변경하였다.

4.3.10. WebAdmin

● WebAdmin 성능 향상

초기화 수행 및 리소스 최적화를 통해 좀 더 빠르게 로그인이 되도록 성능이 향상되었다.

● JEUS 모니터링에서 스레드 풀 모니터링 페이지 변경

기존에는 매니저의 스레드 정보만 보여주던 방식에서 각 컨테이너의 스레드를 모니터링 할 수 있도록

변경되었다.

● 애플리케이션 디플로이의 버전관리 기능방식 변경

기존에는 Deploy된 모듈만 버전관리 대상이었지만, 모듈이 Deploy 되지 않은 상태에서도 버전관리 대

상으로 등록되도록 변경되었다.

● 서블릿 컨테이너 및 ContextGroup의 access log level 설정 제거

서블릿 엔진의 컨텍스트 그룹의 access log 레벨 설정 항목 삭제 Servlet Engine - Context Group의 access-

log 설정에서 Level 항목이 삭제되었다. access-log는 기본적으로 INFO를 기준으로 log 여부만을 설정

제4장 JEUS 6.0 Fix#6 67

Page 86: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

함으로, 상세한 Level 설정은 의미가 없다. 따라서 xml schema 및 WebAdmin의 access log 레벨 설정

항목이 삭제되었다.

● JEUS 매니저 제어의 Boot / Down에 대상이 되는 Container 표시 변경

매니저 제어의 Boot / Down에 대상이 되는 Container만 표시하고 대상 Container가 없는 경우에는 선택

항목에 표시하지 않도록 변경되었다.

● 페이지를 호출할 때 에러가 발생한 경우 Loading 이미지를 종료하도록 변경

JEUS가 종료되었음에도 WebAdmin에서는 Loading 이미지가 뜨기 때문에 서비스 종료를 알 수 없는

문제가 있어서 에러가 발생했을 때 Loading 이미지를 띄우지 않도록 변경되었다.

● MBean 모니터링 기능 변경

– MBean 모니터링의 Operation을 호출했을 때 반환값 표현기능 변경

Operation의 처리 결과 값이 parameter가 있는 경우에만 호출됐으나, 현재는 parameter 가 없는 함수

도 호출이 가능하다. 그리고, MBean operation 의 함수가 호출된 후 결과 값이 '반환값' 형태로 표시된

다.

– MBean Tree의 Node를 클릭하면 해당 Node의 Focus를 잃지 않도록 하여, 현재 보여지는 MBean 정

보 Page의 경로를 보여준다.

– MBean 모니터링 페이지에 웹 브라우저의 뒤로가기 기능이 지원된다.

● 매니저의 JMX 설정이 어댑터와 커넥터 탭으로 구분

JMX Remote API에서는 Connector와 Adaptor를 구분하고 있으나, WebAdmin에서는 모두 '어댑터'라

는 탭으로 관리하고 있어서 UI 및 도움말 등에서 기능 구분이 명확하지 않기 때문에 어댑터와 커넥터 탭

으로 구분되어 보여지도록 변경되었다.

● 명령 실행 후 팝업창 형태의 변경

명령 실행 후 기존 브라우저별 alert 방식을 사용하던 방식에서 일정한 디자인의 팝업창으로 보여지도

록 변경되었다.

4.3.11. WebService

● 콘솔툴에서 System.exit() 코드 삭제

Ant에서 Task로 호출할 때 전체 Ant Script가 종료될 가능성이 있기 때문에 WebService관련 콘솔 툴에

서 System.exit() 코드를 삭제하였다.

● StAX Parser 교체

StAX Parser를 SUN JSXPS에서 CodeHaus WoodStox(3.2.8)로 교체하였다.

추가된 libraries : JEUS_HOME\lib\system\woodstox.jar

68 JEUS Release Note

Page 87: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

4.3.12. JMX

● 공개되는 public MBean interface와 internal MBean 분리

MBean은 외부에 노출이 될 경우 기존에 있던 것을 쉽게 수정할 수 없고, 내부적으로만 사용되어야 하

는 것을 수정하는데에도 어려움이 생기기 때문에, public MBean과 internal MBean을 분리하여 public

MBean에 관해서만 javadoc형태로 외부에 노출하도록 한다. 따라서 internal MBean을 사용할 경우 하

위 호환성을 보장하지 않는다.

4.3.13. Installer

● 파일 변경 내역

– JEUS_HOME\bin

- 추가 : upgradetool4to6 (.cmd), upgradetool5to6 (.cmd)

- 삭제 : upgradetool (.cmd)

– JEUS_HOME\lib\schemas

- 삭제 : security.xsd, subjects.xsd, ws-config.xsd, ws-main.xsd

– JEUS_HOME\lib\licenses

- 추가 : resourceaccelerate.txt, custom_rhino.txt, woodstox.txt

- 삭제 : jcommon.txt, jfreechart.txt

– JEUS_HOME\lib\system

- 추가 : woodstox.jar, SharedLibrary 파일 (windows x64, sunos x64)

- 삭제 : jeus-services.dll, COMProvider.dll

– JEUS_HOME\endorsed

- 추가 : jaxp-api.jar, resolver.jar, serializer.jar, xercesImpl.jar, xsltc.jar, xalan.jar

제4장 JEUS 6.0 Fix#6 69

Page 88: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94
Page 89: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

제5장 JEUS 6.0 Fix#5

본 장에서는 JEUS6 Fix#5에서의 버그패치, 기능추가, 변경사항에 대해서 설명한다.

5.1. 버그패치

5.1.1. Server

● 5개 이상의 container가 비정상 종료 후 2분 안에 재시작될 때 발생했던 문제 수정

여러 개의 container가 비정상적으로 죽어서 다시 시작될 때 2분 안에 5개 이상의 container가 재시작할

경우 5번째부터 재시작 되지 않던 현상을 해결하였다. 2분 안에 manager당 5개가 아닌 container당 5개

를 시작할 때 무한 루프로 판정하여 더 이상 container를 재시작하지 않게 수정하였다.

● JMX remote 통신할 때 client에서 "jmx.remote.x.request.timeout"로 설정한 시간만큼 wait할 수 있

도록 수정

JMX remote 통신할 때 server에서 응답이 없으면, client에서 무한 wait하는 현상이 존재하였던 문제를

수정하였다. jmx.remote.x.request.timeout 옵션을 system property로 넣어 사용한다. 단위는 밀리초(mili-

second)이다.

JEUS_HOME/jeus 스크립트에

-Djmx.remote.x.request.timeout=120000

JEUS_HOME/jeusadmin 스크립트에 다음을 설정

-Djmx.remote.x.request.timeout=20000

5.1.2. EJB

● IBM JDK 에서 IIOP를 설정할 때 디플로이가 제대로 되지 않는 문제 수정

IBM JDK 에서 IIOP 설정이 사용된 EJB를 디플로이하려고 할 때 IBM JDK에는 존재하지 않는 클래스를

찾는 현상이 있었다. 이를 수정하기 위해서 일부 파일에 대하여 패키징 변경이 이루어졌다.

– peorb.jar, orblib.jar, optorbcomp.jar, peord_add.jar를 peorb.jar 하나로 통합하고 나머지 파일은 삭제

하였다.

– jsse14_repack.jar를 추가하였다.

제5장 JEUS 6.0 Fix#5 71

Page 90: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● IBM JDK 1.5.0 SR7에서 IIOP stub file 생성이 제대로 되지 않는 문제 수정

SR7에서 EJB의 IIOP Stub을 생성하는 과정에서 컴파일 에러가 발생하였다. 이를 해결하기 위해 다음

의 두 가지 옵션을 추가하였으며 SR7의 경우 jeus.ejb.compiler.rmic.fork를 true로 주어야 한다. SR6에

서는 별도의 설정이 필요 없다

jeus.ejb.compiler.rmic.fork = true/false

jeus.ejb.compiler.rmic.verbose = true/false

● Standalone Java 프로그램에서 jeus.client.interop=true 시스템 프로퍼티를 설정하고 EJB를 설정할

때 에러가 발생하는 현상 수정

Standalone Java 프로그램에서 JEUS에서 제공하는 라이브러리들을 이용해 JEUS에 디플로이된 EJB

를 RMI-IIOP로 호출할 때, jeus.client.interop=true 를 시스템 프로퍼티로 지정해야 하는데 이때 에러가

발생하는 현상을 수정하였다.

● CMP에서 cloudscape을 사용할 때 에러가 발생하는 문제 수정

CMP에서 DB Vendor로 cloudscape를 사용할 경우 디플로이 과정에서 EJBSQLGeneratorException

이 발생하는 현상을 수정하였다.

5.1.3. WebContainer

● auto-reload에 실패했을 때 reload를 재시도 하지 않는 문제 수정

timeout 등의 문제로 auto-reload 실패할 때 기존에는 reload를 시도하지 않던 문제를 relaod하도록 수정

하였다.

● TmaxListener와 CLH의 reconnect 문제 수정

TmaxListener와 AnyLink CLH(client handler)의 연결이 끊긴 후 reconnect를 시도 하지 않는 문제를 수

정하였다.

● alias 설정이 동작하지 않는 문제 수정

jeus-web-dd.xml 파일에 설정한 alias가 동작하지 않았던 문제를 수정하였다.

● struts2를 사용할 때 Action Mapping을 찾지 못하는 문제 수정

struts2를 사용할 때 Action Mapping된 파일을 include와 같은 방식으로 불러서 사용할 경우(ex, <%@

include file="/action.do"%>) "/"가 중복으로 적용되어 파일을 찾지 못하는 문제를 수정하였다.

● jeus 설치 디렉터리에 공백이 있는 경우 stack overflow가 발생하는 문제 수정

Application에서 taglib를 사용할 때 jeus가 설치된 디렉터리에 공백이 있으면 taglib를 찾는 과정에서 공

백이 있는 directory를 인식하지 못하고 무한루프에 빠지게 되어 stack overflow가 발생 하는 문제를 수

정하였다.

● security-constraint의 "*.jsp" url-pattern 적용 문제 수정

security-constraint의 url-pattern을 *.jsp로 설정할 경우 extension matching으로 검색하지 않고 prefix로

검색하는 문제를 수정하였다.

72 JEUS Release Note

Page 91: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● ResourceServlet을 수행할 때 ClassCastException발생 하는 문제 수정

ResourceServlet을 수행할 때 file이 없는 경우 ClassCastException이 발생하는 문제를 수정하였다.

● TmaxListener를 사용할 때 NIO 와 BIO request 객체가 달라 ClassCastException이 발생하는 문제

수정

NIO와 BIO의 경우 request 객체가 달라 ClassCastException이 발생하는 문제가 있었는데,

TmaxServletRequest 에 getServerGroupName()을 추가하여 이를 수정하였다.

● TCP, TmaxListener 에서 postdata clear방식 문제로 OutOfMemoryException이 발생 하는 문제 수

TCP, TMAXListener 에서 postdata를 clear할 때 content-length가 큰 경우 OutOfMemoryException이

발생할 수 있는 문제가 있었는데, postdata를 clear하는 방법을 getBody를 사용하여 한번에 모두 읽는

방식에서 1024 byte씩 읽도록 하는 방식으로 수정하여 해결하였다.

● windows 환경에서 파일명의 대소문자가 구별이 안 되는 문제 수정

windows 환경에서 최초 접속할 때 대소문자를 구별하여 호출하도록 수정하였다.

● TmaxListener를 사용할 때 servlet 수행 전 exception이 발생한 경우 응답 에러 문제 수정

TmaxListener를 사용할 때 servlet 수행 전 exception이 발생하면 response의 header가 세팅되지 않아

서 NullPointerException이 발생하는 문제를 수정하였다.

● Spring 태그와 JSTL 태그를 동시에 사용할 경우 ClassCastException이 발생하는 문제 수정

Springframework의 ExpressionEvaluationUtils를 이용해 EL 의 값을 가져오는 부분에서 두 개의 EL 구

현체가 동시에 사용되어 ClassCastException이 발생하는 문제를 수정하였다.

● 액션 include 방식으로 jsp를 include할 때 class file이 __2e 하위에 생성되는 문제 수정

상대경로에 있는 jsp file을 액션 include 방식으로 include할 때 파일 경로에 "./"이 포함되어 있으면 gen

erate 되는 java file과 class file이 실제 생성되어야 할 경로 하위에 바로 생성되지 않고 "__2e" 라는 디

렉터리를 만들고 그 아래에 생성되는 문제를 수정하였다.

● servlet version에 따른 jsf library 로딩 문제 수정

servlet version이 2.4인 경우 JEUS6에서 JSF library가 로딩되지 않는 문제를 옵션을 추가해 수정하였

다.

해당 옵션은 -Djeus.servlet.enforce.jeusjsflib으로 default가 false이고 true인 경우 application의 servlet

version이 2.4 인 경우에도 jsf 1.2 library가 loading 된다.

-Djeus.servlet.enforce.jeusjsflib = true/false

● Reverse Proxy (Rewrite Filter)를 통과할 때 "'를 정상적으로 치환 하지 못하는 문제 수정

Reverse Proxy(Rewrite Filter)를 사용할 때 Application의 "' 부분을 replace 해야 하는 url(링크) 로 인식

해서 정상치환하지 못하고 rewrite하는 문제를 수정하였다.

● JSF listener가 먼저 초기화 되지 않는 문제 수정

제5장 JEUS 6.0 Fix#5 73

Page 92: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

JSF에 의존적인 Dynamic JSF 같은 경우 JSF listener가 먼저 초기화 되지 않아서 발생하는 NullPoint

erException이 발생하는 문제를 수정하였다.

● config directory를 지정한 경우 https keystore 위치를 찾지 못하는 문제 수정

-Djeus.config.home을 지정하여 별도의 directory를 config home으로 지정했음에도 불구하고, web

container를 부팅할 때 https 관련 keystore를 JEUS_HOME/config 밑에서 무조건 찾으려고 하는 문제를

수정하였다.

● NIO Http Listener에서 request line을 한번에 읽지 못하는 문제 수정

NIO Http Listener에서 request line을 한번에 읽지 못하는 경우 먼저 읽혀진 request line이 무시 되어 처

리될 수 있는 문제를 수정하였다.

● webtob listener를 사용할 때 context가 null인 경우에도 contextPath가 설정되는 문제 수정

webtob listener에서 context가 null임에도 불구하고 request의 contextPath가 설정되어 잘못된 URL 정

보가 설정되는 문제를 수정하였다.

5.1.4. JNDI

● 클러스터링 된 EJB와 같은 JNDI 이름을 가지는 EJB를 lookup 할 때 다른 EJB를 가져오는 문제 수정

EJB JNDI 이름을 클라이언트에서 static하게 관리하여 클러스터링 domain이 다른 경우에도 EJB JNDI

이름이 같게 되면 하나의 link로 관리되어 엉뚱한 EJB를 찾는 문제가 있었다. Static caching을 하던 방

식을 제거하여 수정하였다.

5.1.5. JMS

● JMS 클라이언트가 connection failover를 시도할 때 새로운 entry가 생성되는 문제 수정

JMS 서버와 클라이언트 간에 네트워크가 단절되었을 경우, 초기 connection할 때 entry 정보와 recon

nection 후의 entry 정보가 서로 일치하지 않아서 connection failover가 이루어지지 않던 문제를 수정하

였다.

● 두 개 이상의 thread 클라이언트가 reconnect를 시도하다가 실패할 경우, reconnect를 시도하지 않도

록 수정

Shutdown 중인 JMS 서버에 클라이언트가 reconnect를 시도하고 실패하면서 두 개 이상의 thread가 같

은 entry에 대해 reconnect를 시도하여 ResourceAllocationException이 발생하는 문제를 수정하였다.

● DLQ에 있는 메시지를 복구하지 못하는 문제 수정

DLQ (Dead letter queue)의 경우, JMS 서버를 재기동 할 때마다 새로운 destination을 생성하여 기존의

메시지를 복구하지 못하는 문제를 수정하였다.

74 JEUS Release Note

Page 93: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

5.1.6. JDBC

● use-count가 check-query-period에 의해 증가되는 문제 수정

use-count가 check-query-period 설정에 의해 주기적으로 커넥션 체크를 하는 경우에도 증가되는 문제

를 수정하였다.

5.1.7. Transaction

● OTS를 사용할 때 Recovery가 제대로 이루어지지 않은 문제 수정

기존에 타제품과 Transaction을 연동하면서 OTS를 사용할 때, 사용중 recovery가 제대로 동작하지 않

아서 한쪽은 commit되고 한쪽은 rollback 처리됨으로 인해서 transaction의 consistency가 깨지는 문제

를 수정하였다.

● Recovery 과정에서 여러 개의 indout transaction이 복구될 때, 특정 Resource가 공유되는 문제 수정.

Recovery 과정에서 외부 요청에 의해 같은 XA Resource를 사용하는 다수의 indoubt transaction이 복

구 될 경우 해당 Resource가 공유되는 현상을 수정하였다.

● transaction timeout발생 후 commit이 될 수 있는 문제 수정

transaction timeout발생 후에 JDBC connection을 계속 사용하거나, EJB transaction propagation이 이

루어질 때 commit이 될 수 있는 문제를 수정하였다.

5.1.8. Session Server

● 중앙식 세션서버를 사용할 때 로컬의 세션 invalidation 검사를 하지않는 문제 수정

중앙식 세션 서버를 설정하고 shard 옵션을 ture로 사용하고 컨텍스트가 2개 이상일 경우 컨테이너에서

timeout이 지난 session을 invalidation시키지 않는 문제를 수정하였다.

● 다른 context를 include할 때 각 context의 세션이 공유되지 않는 문제 수정

세션 서버를 설정하고 shard 설정이 true일때 include 된 servlet에서 세션을 먼저 생성하고 include한

servlet에서 getsession을 할 경우 다른 세션이 생성되어 세션 공유가 되지 않는 문제를 수정하였다.

5.1.9. Deployment

● application이 autodeploy로 설정된 경우에 classloading 모드가 무조건 SHARED로 로딩 되는 문제

수정

application이 exploded인 경우 autodeploy 하려는 application에 대해 설정된 classloading 설정을 반영

하지 못하고 SHARED가 적용되던 현상을 수정하였다.

제5장 JEUS 6.0 Fix#5 75

Page 94: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

5.1.10. Tool

● jeusadmin의 refreshds 명령이 무조건 fail 되었다고 나오는 문제 수정

refreshds 명령을 수행하면 refresh가 성공했음에도 불구하고 jeusadmin에서 refresh가 실패했다고 출

력되는 문제를 수정하였다.

● jeusadmin의 deploy 명령을 수행할 때 JEUS가 수행된 위치의 모듈을 찾는 문제 수정

jeusadmin의 deploy 명령에서 Application을 상대 경로로 deploy할 경우, APP_HOME에 존재하는 모듈

과 JEUS를 실행한 위치에 같은 이름의 모듈이 존재하면 JEUS를 실행한 위치의 모듈을 deploy하는 문

제를 수정하였다.

● appcompiler를 수행할 때 작업 디렉터리가 남는 문제 수정

exploded EAR 모듈의 application.xml에 정의된 모듈이 존재하지 않을 경우에 appcompiler로 이를 수행

하면 NullPointerException이 발생하고 작업 디렉터리가 남는 문제를 수정하였다.

● appcompiler가 fast-deploy가 true로 설정된 모듈을 compile 하지 않는 문제 수정

appcompiler를 수행한다는 것은 compile하는 것이 목적이므로 jeus-ejb-dd.xml에 fast-deploy가 true로

설정이 되어 있어도 compile을 하도록 수정하였다.

5.1.11. WebAdmin

● 물리적 커넥션 닫음 통계가 잘못 나오는 문제 수정

물리적 커넥션을 닫을 때 WebAdmin에서 그 통계를 잘못 보여주는 문제를 수정하였다.

● GET방식으로 로그인 할 경우 에러 발생되었던 문제 수정

WebAdmin 에서 GET방식으로 로그인할때 올바른 로그인 정보를 입력하는 것과 상관없이 password에

숫자가 들어갈 경우 exception 발생했던 문제를 수정하였다.

5.1.12. Security

● IBM JDK에서 https를 설정할 때 Exception이 발생하는 문제 수정

IBM JDK 에서는 default로 Key/Trust Management Algorithm을 IBMX509로 사용하도록 수정하였다.

● Authorization Repository를 DB로 사용할 경우 비정상적으로 권한 체크를 하는 문제 수정

Timeout이 발생 했을때, PolicyManager의 Cache에 저장된 security 값들을 정상적으로 얻어오지 못하

던 문제를 수정하였다.

5.1.13. WebService

● (Axis-based)EJB webservice에서 request message의 soap body에 큰(2MB 이상) message가 들

어 있을 때 server side에서 응답이 오래 걸리는 문제 수정

76 JEUS Release Note

Page 95: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

전체 request SOAP message를 DOM 으로 parsing 하지 않고 SOAP body 아래의 첫 번째 element 까

지만 해석하여 operation qname을 얻는 방식으로 수정하였다.

● array argument를 가진 SEI 에 대하여 (axis based)java2wsdl을 수행할 때 오류가 발생하는 문제 수

java2wsdl에서 array argument에 대한 complex type의 schema type을 생성할 때 schema type namespace

가 누락되던 문제를 수정하였다.

5.1.14. UDDI

● UDDI Explorer Web UI 운영 중 발생하는 오류 수정

– 검색 창에 검색어를 아무것도 넣지 않으면 모든 것을 검색하도록 하였다.

– Oracle 10g에서 운영 중에 발생하는 오류 현상을 수정하였다.

● WSDL2UDDI 툴 사용 중에 발생하던 오류 수정

UDDI V3 환경에서 WSDL2UDDI 툴 사용 중에 발생하던 오류를 수정하였다.

5.2. 기능추가

5.2.1. Server

● Container의 command-option은 java 이후에 바로 붙도록 하며, 공백이 들어간 옵션도 지원

JEUSMain.xml의 command-option의 경우 java 이후에 바로 위치하여야 정상적으로 동작하는 경우가

있어서 이를 지원한다. 또한, 특정 옵션의 경우 공백이 포함된 문자열 형태가 올 수 있어서 이도 함께 지

원된다.

<command-option>-XX:OnError="gdb %p" -Xmx256m</command-option>

JEUSMain.xml에 위와 같은 command-option을 설정한 경우의 로그는 다음과 같다.

/opt/java1.5/jre/bin/java -XX:OnError=gdb %p -Xmx256m

-server

-Xbootclasspath/p:/data1/powflash/jeus6/lib/system/extension.jar

-classpath /data1/powflash/jeus6/lib/system/bootstrap.jar

-Djava.security.policy=/data1/powflash/jeus6/config/security/policy

-Djava.util.logging.manager=jeus.util.logging.JeusLogManager

-Djava.library.path=/data1/powflash/jeus6/lib/system

-Djava.endorsed.dirs=/data1/powflash/jeus6/lib/endorsed

-Djeus.properties.replicate=jeus,sun.rmi,java.util,java.net

-Djeus.net.reuseAddress=true -Djeus.jvm.version=hotspot

-Djava.util.logging.config.file=/data1/powflash/jeus6/bin/logging.properties

-Dsun.rmi.dgc.server.gcInterval=3600000

제5장 JEUS 6.0 Fix#5 77

Page 96: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

-Djeus.home=/data1/powflash/jeus6 -Djava.net.preferIPv4Stack=true

-Djeus.baseport=9736 -Djeus.ejb.operationTimeout=300000

-Djeus.tm.checkReg=true -Dsun.rmi.dgc.client.gcInterval=3600000

-Djeus.tool.webadmin.locale.language=ko

-Djava.naming.factory.initial=jeus.jndi.JNSContextFactory

-Djava.naming.factory.url.pkgs=jeus.jndi.jns.url

-Djeus.server.protectmode=false

jeus.server.enginecontainer.EngineContainerBootstrapper

johan_container1 johan_jms_engine1 johan_servlet_engine1 johan_ejb_engine1

● 기본적으로 생성되는 설정 value를 위한 template 파일 추가

WebAdmin이나 여러 admin tool에서 configuration을 생성할 때 기본적으로 들어가야 하는 value를 설

정하는 template 파일을 추가하였다. template file은 JEUS_HOME\config\config-template.properties이

며 다음과 같은 형태가 된다.

#=============================================================================

# [Default configuration template]

# This template will be used when generating default configurations via admin

# tool(e.g. web manager)

#

# System admin can modify this to change the default template if needed.

#=============================================================================

engine-container.command-option=-Xmx256m -XX:MaxPermSize=128m

인스톨러 기본 설정에도 JEUSMain.xml의 command-option에 MaxPermSize설정을 128m로 추가하였

다.

5.2.2. EJB

● JEUSContext를 생성할 때 COS Naming Server에 바로 연결할 수 있는 기능 추가

기존에는 InitialContext를 생성하여 JEUS JNDI 서버에 연결한 후, lookup 단계에서 COS Naming

Server에 연결하는 방식만을 지원하였다. 사용상의 편의를 위해서 이 방법 이외에 InitialContext를 생성

할 때 Context.PROVIDER_URL을 이용하여 바로 COS Naming Server에 연결할 수 있는 기능을 추가

하였다.

예)

Hashtable env = new Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY, "jeus.jndi.JNSContextFactory");

env.put(Context.PROVIDER_URL, "iiop://localhost:9740");

InitialContext ctx = new InitialContext(env);

Object obj = ctx.lookup("ejb/Hello");

HelloHome home = (HelloHome)PortableRemoteObject.narrow(obj, HelloHome.class);

78 JEUS Release Note

Page 97: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

Hello helloRef = home.create();

5.2.3. WebContainer

● AJP13 listener의 chunked 방식 기능 지원

AJP13 listener에서 Transfer-Encoding : Chunked Request를 처리하는 기능이 추가되었다.

● HTTP listener의 ip 설정 기능 추가

한 대의 서버에 두 개 이상의 IP가 있는 경우 리스너별로 IP를 설정할 수 있는 기능이 추가되었다. BIO

인 경우만 작동하며 설정하지 않은 경우 기본 IP가 설정된다.

<WEBMain.xml 예>

<http-listener>

<listener-id>http1</listener-id>

<ip>192.168.11.201</ip>

<port>8088</port>

<thread-pool>

<min>10</min>

<max>20</max>

<step>1</step>

</thread-pool>

</http-listener>

자세한 설명은 “JEUS Web Container 안내서”의 “4.3.1. HTTP, TCP, HTTPS 리스너 설정” 부분을 참조

한다.

● JSP 컴파일 지연 기능 추가

JSP 파일이 컴파일되고 실제 적용되는 시간을 지연하는 기능을 추가하였다.

jeus.jsp.compile.delay 옵션이 추가되었으며, 시간을 millisecond단위로 설정할 수 있다.

<JEUSMain.xml 예>

<command-option>-Djeus.jsp.compile.delay=10000</command-option>

● jspc로 pre-compile할 때 특정 directory를 pre-compile에서 제외하는 기능 추가

pre-compile할 때 jsp파일 뿐만 아니라 모든 directory를 검색해 directory, file을 list에 포함시켜 compile

과정에서 제외하는 옵션이 추가되었다.

<사용예>

jspc -e johan_servlet_engine1 -g MyGroup -c Examples -ep /image

자세한 설명은 “JEUS Reference Book”의 “4.7. jspc” 부분을 참조한다.

제5장 JEUS 6.0 Fix#5 79

Page 98: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

5.2.4. JMS

● persistence store 추가

JEUS MQ에서는 journal log persistence store와 JDBC persistence store를 지원한다.

journal log persistence store는 이번 버전에서 추가된 기능으로 file에 정보를 저장하고 복구하게 된다.

JDBC persistence store 보다 성능이 우수한 특징이 있다. 기본 디렉터리는 JEUS_HOME\logs\store 이

다.

jdbc persistence store는 기존의 DB Storage 기능이 재구현 되었으며 기존 설정은 Deprecated 되었다.

persistence store가 전체적으로 재구현 되면서 Transaction 내부 동작도 함께 재구현되었다.

자세한 설명은 “JEUS MQ 안내서”의 “Appendix A. 저널 스토어 추가 속성들” 부분을 참조한다.

– journal log persistence store는 다음과 같이 설정한다.

<JMSMain.xml 예>

<persistence-store>

<journal/>

</persistence-store>

– jdbc persistence store는 다음 같이 설정한다.

<JMSMain.xml 예>

<persistence-store>

<jdbc>

<data-source>datasource1</data-source>

</jdbc>

</persistence-store>

● jmsadmin console tool에 durable명령 옵션 및 XA 관련 명령어 추가

jmsadmin console tool의 durable명령어에 옵션이 추가되었고 XA 관련 명령어가 추가되었다.

– durable subscription들에 쌓여 있는 모든 메시지를 삭제할 수 있는 옵션 추가(durable -ra)

• 사용법 : durable durable_name -ra

– 특정 durable subscription을 unsubscribe할 수 있는 옵션 추가(durable -u)

• 사용법 : durable durable_name -u

– pending transaction 목록을 확인하는 명령어 추가(ptall)

• 사용법 : ptall

johan_container1>ptall

======================

PENDING TRANSACTIONS

======================

--------+------------+------------+----------------------------------------

80 JEUS Release Note

Page 99: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

ID |TYPE |NAME |VALUE

--------+------------+------------+----------------------------------------

1024|PRODUCTION |MESSSAGE ID |ID:0:2:1:1[24]

| |DESTINATION |ExamplesQueue

--------+------------+------------+----------------------------------------

– pending transaction을 강제로 commit, rollback할 수 있는 명령어 추가(commit, rollback)

• 사용법 : commit id, rollback id

johan_container1>commit 1024

1024 is commited.

johan_container1>rollback 1024

1024 is rolled back.

자세한 설명은 “JEUS Reference Book”의 “4.3. jmsadmin” 부분을 참조한다.

5.2.5. JDBC

● action-on-connection-leak 설정 추가

기존의 container별로 동작하는 invocation manager의 기능을 data source별로도 설정할 수 있도록 하

였다. 아무런 설정을 하지 않았을 경우에는 엔진 컨네이너의 invocation-manager의 동작을 따르지만 그

렇지 않을 경우에는 datasource의 설정값을 따른다.

<database>

<action-on-connection-leak>Warning</action-on-connection-leak>

</database>

위와 같이 설정하며, NoAction, Warning, AutoClose 로 설정할 수 있다.

자세한 설명은 “JEUS Server 안내서”의 “8.3.2. 기본 설정” 부분을 참조한다.

● check-query-timeout 설정 추가

기본적으로 check query를 할 때 stmt-query-timeout 값에 따라 timeout이 동작하도록 되어 있는데, Fix#4

에서부터 stmt-query-timeout이 0으로 바뀌었으므로, check query를 할 때 timeout을 위한 적절한 설정

이 필요하게 되었다. 이를 위해 check-query-timeout이라는 기능이 추가되었다.

<data-source>

<database>

<connection-pool>

<check-query-timeout>15000</check-query-timeout>

</connection-pool>

</database>

</data-source>

위와 같이 설정하며, 단위는 milisecond 이다. 물론 check query 가 설정되어 있을 때만 의미가 있다.

제5장 JEUS 6.0 Fix#5 81

Page 100: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

자세한 설명은 “JEUS Server 안내서”의 절 8.3.4. “커넥션 점검(Connection Validation or Check Query)”

부분을 참조한다.

● destroy-policy-on-check-query , check-query-retrial-count 설정 추가

check-query가 실패했을 경우, 해당 커넥션이 속한 풀에 있는 커넥션들을 어떻게 처리할지에 대한 정책

을 설정하는 기능이 추가되었다. check-query가 실패했을 경우 실패한 커넥션만 버리는 것이 기본 정책

(FailedConnectionOnly)이며, 모든 커넥션을 버리는 정책(AllConnections)을 선택할 수 있다. 만약 정책

이 AllConnections라면, check-query가 실패했을 때 바로 버리는 것이 아니라 check-query를 한 번 더

수행한 결과에 따라 모든 커넥션을 버릴지를 결정한다. 이와 같은 상황에서 check-query를 더 수행하고

싶다면 check-query-retrial-count 설정을 통해 check-query를 더 수행하도록 할 수 있다.

<connection-pool>

<check-query>select 1 from dual</check-query>

<destroy-policy-on-check-query>AllConnections</destroy-policy-on-check-query>

<check-query-retrial-count>3</check-query-retrial-count>

</connection-pool>

자세한 설명은 “JEUS Server 안내서”의 절 8.3.4. “커넥션 점검(Connection Validation or Check Query)”

부분을 참조한다.

5.2.6. Session Server

● 세션 서버에서 getting session failed. key is null과 같은 로그가 발생했을 때 원인 분석 기능 추가

세션 서버에서 [SESSION-2013]<ServiceHandler-28470> getting session failed. key is null와 같은 로

그는 세션 요청 패킷에 세션의 key 값이 없거나 key 값의 길이가 0일 경우(empty string) 발생한다. 이때

어느 부분에서 문제가 발생했는지 확인할 수 있는 기능을 추가하였다.

<WEBMain.xml 예>

<web-container>

...

<logging>

<access-log>

<format>

[%{yyyy.MM.ddHH:mm:ss}t] %a %m %U%q %s %Dms %{JSESSIONID}c %S

</format>

</access-log>

</logging>

...

</web-container>

이와 같이 설정하여 access log에 %{JSESSIONID}c 부분의 값으로 판별이 가능한데, "-" 와 같이 나오

면 JSESSIONID의 값이 없는 것이고, "" 와 같이 나오면 브라우저에서 empty string을 보낸 경우이다.

82 JEUS Release Note

Page 101: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

5.2.7. Deployment

● autodeploy directory에 있는 application들을 alphabet 순서로 deploy하는 기능 추가

deploy 우선순위는 "숫자 > 기호 > 영문 > 한글" 순서 이며 영문의 경우 대소문자의 구분은 하지 않는다.

5.2.8. Tool

● appcompiler에 -deloldgen 옵션 추가

JEUS 4.x, JEUS 5에서 Stub, Skel, Impl Class의 이름을 생성하던 방식과 JEUS 6에서 생성하는 방식이

다르다. 따라서 이전 버전에서 appcompiler를 수행하여 Stub, Skel이 남아 있을 경우 JEUS 6에서 app

compiler를 수행하면 이를 삭제하지 않고 다른 이름으로 생성되기 때문에 deploy를 수행할 경우 fail이

발생하게 된다. 이런 문제를 피하기 위해서 -deloldgen 옵션이 추가되었다. 이 옵션을 사용하면 이전 버

전의 Stub, Skel, Impl를 삭제한다.

● appcompiler에 -q 옵션 추가

여러 모듈을 포함한 EAR application을 appcompiler로 compile을 수행할 때, 특정 web 모듈 compile이

실패할 경우, 다음 web 모듈을 compile할지 여부를 결정하는 옵션(-q)을 추가하였다. -q 옵션이 없을 경

우, compile error가 발생하여도 다음 모듈 compile을 수행하도록 한다. 참고로 EAR 내의 EJB 모듈의

compile이 실패할 경우는 항상 종료한다.

● jeusadmin의 dsconinfo 명령어에 -t 옵션(스레드의 이름을 볼 수 있는 기능) 추가

JDBC 커넥션을 사용중인 스레드의 이름을 볼 수 있는 기능을 추가하였다. jeusadmin의 dsconinfo 명령

을 -t 옵션과 함께 사용할 경우에 thread name 컬럼이 나오게 된다. 이때 커넥션이 active 상태이면 가장

최근에 getConnection한 스레드의 이름을 보여준다.

johan_container1>dsconinfo -t datasource1

===============================================================================

Connection information list for the engine container[johan_container1]

-------------------------------------------------------------------------------

| id | state | state-time(s) | use-count | type | thread name |

-------------------------------------------------------------------------------

| datasource1-1 | active | 5.873 | 0 | pooled | http1-w11 |

| datasource1-2 | idle | 37.158 | 0 | pooled | |

-------------------------------------------------------------------------------

===============================================================================

자세한 설명은 “JEUS Reference Book”의 “4.2.7. DB Connection Pool 관련 명령어” 부분을 참조한다.

● jeusadmin의 dsinfo 명령어 반복기능 향상

jeusadmin의 dsinfo 명령을 반복하여 모니터링 하고자 할 때, -i 옵션만 사용하면 무한히 출력하게 하고,

이때 <Enter> 키를 2번 반복하면 멈출 수 있도록 하였다. 만약 기존과 같이 -i 옵션이 -k 옵션과 함께 사

용할 경우는 무조건 지정된 횟수만큼 반복한다.

● ejbddinit 스크립트 추가

제5장 JEUS 6.0 Fix#5 83

Page 102: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

EJB를 작성할 때 ejb-jar.xml에 대응하는 jeus-ejb-dd.xml 파일을 만들어 주는 기능을 추가하였다. 이는

JAR 파일로 묶인 module 및 exploded 형태로 존재하는 module에 대해서 사용이 가능하다. 자세한 사

용법은 다음과 같으며 이 스크립트를 사용한 후 목적에 따라서 수정이 필요한 경우도 있다.

ejbddinit sample.jar

-> 해당 module file안에 포함된 ejb-jar.xml 을 읽어와서 사용하며 sample.jar.new

라는 이름의 파일을 동일한 디렉터리에 생성한다.

ejbddinit sample_dir

-> exploed 형태로 존재하는 module은 해당 디렉터리 이름을 그대로 사용하면 된다.

단 META-INF 디렉터리에 ejb-jar.xml 파일이 존재해야 하며 jeus-ejb-dd.xml 파일이

ejb-jar.xml 과 동일한 디렉터리에 생성된다.

● upgradetool 스크립트 추가

JEUS 4.x에서 사용하던 환경을 JEUS 6로 변환하는 작업을 도와주는 upgradetool 스크립트가 추가되

었다. 이 스크립트는 JEUS 4.x에서 사용하던 서버 설정 파일, 모듈 파일들을 JEUS 6 에서 사용할 수 있

는 형태로 변환하는 작업을 실행하며 사용자는 스크립트 실행 후 그 결과를 검토하고 수정할 수 있다.

5.2.9. WebAdmin

● close되지 않은 JDBC connection을 강제 반환하는 기능 추가

WebAdmin을 통해서 close 되지 않은 active상태의 JDBC 커넥션들을 선택적으로 반환시킬 수 있는 기

능이 추가되었다. 단, 다음과 같은 제약 사항이 있으므로 주의한다.

– 글로벌 트랜잭션이 진행중인 커넥션은 반환되지 않는다. 서버 로그 상에는 SQLException이 출력될

수 있다.

– 로컬 트랜잭션이 진행중이거나 SQL 작업이 진행 중인 커넥션은 예상치 못한 오류가 발생할 수 있으

므로 강제로 반환할 경우에 유의해야 한다.

● https를 통하여 WebAdmin에 접속할 수 있는 기능추가

클라이언트와 서버 사이에 전송되는 데이터의 보안을 위해서 SSL을 이용해서 접근할 수 있는 기능이

추가되었다. 다음의 사항을 참고한다.

– SSL을 이용해서 WebAdmin에 접속하기 위해서는 인증서를 발급받아야 한다. 인증서 발급에 관한 자

세한 사항은“JEUS Web Container 안내서”의 “4.6. 보안(SSL) 리스너 사용” 부분을 참조한다.

– 접속방법 : JEUS매니저 > 설정 > WebAdmin에서 SSL을 Enabled > SSL port 설정 > JEUS 재부팅 >

지정한 port로 접속한다(예 : https://ip:port/webadmin).

● web module의 context-path를 확인할 수 있는 기능추가

deploy할 때 설정한 web module의 context-path를 확인할 수 있는 기능을 추가하였다.

엔진 컨테이너 > 애플리케이션 모듈 > deploy 된 module 선택 > 통계 > Context Path

84 JEUS Release Note

Page 103: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● WebToB를 모니터링할 수 있는 기능추가

WebtoB Listener에 등록된 WebtoB의 wsracd Port 를 통해 WebAdmin에서 WebtoB의 상태를 모니터링

할 수 있는 기능을 추가하였다. 단, WebtoB 4.1 SP2 Fix#0 이상 버전만 모니터링 가능하다.

노드 트리 > JEUS 모니터링 > WebtoB 모니터링

5.2.10. Security

● SSL 관련 password 설정값을 암호화할 수 있는 기능 추가

기존에는 ssl 관련(keystore, truststore) password를 평문으로만 입력이 가능했으나, encryption tool을

통해 암호화된 값을 사용할 수 있도록 하였다.

> encryption aes jeus

[aes] : [jeus] --> [encode:kM0NkUWIVvNDcwCfBUuZWQ==]

[aes] : [kM0NkUWIVvNDcwCfBUuZWQ==] --> [decode:jeus]

<command-option>

-Djeus.ssl.keystore.password={aes}kM0NkUWIVvNDcwCfBUuZWQ==

-Djeus.ssl.truststore.password={aes}kM0NkUWIVvNDcwCfBUuZWQ==

</command-option>

5.2.11. WebService

● WS-Trust 구현 방식에서 From Java 방식의 추가

WS-Trust를 위한 Server Side WebService의 구성방식에 'From WSDL' 방식만 지원했었으나 'From

Java' 방식이 추가 되었다.

5.2.12. Installer

● exploded 샘플 web 모듈 지원

JEUS_HOME\webhome\app_home에 exploded 샘플 web 모듈이 추가되었다. JEUS를 부팅할 때, 영구

디플로이 되도록 JEUSMain.xml 의 <application> 설정도 추가되었다. 해당 페이지는 다음과 같이 호출

한다.

http://server-ip:port/exploded

제5장 JEUS 6.0 Fix#5 85

Page 104: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

5.3. 변경사항

5.3.1. EJB

● EJB를 디플로이할 때 발생하는 메시지의 Log Level 변경

EJB 디플로이 과정에서 generating... 으로 시작하는 메시지들이 반복적으로 출력되는데 이런 메시지들

의 log level을 FINE 이상으로 조정하였다.

● 클라이언트를 실행하는 JDK의 버전이 Server의 JDK 버전보다 이전 버전인 경우에도 EJB 호출을 할

수 있도록 변경

JEUS 6.0 Fix#4 까지는 클라이언트의 JDK가 Server의 JDK보다 이전 버전일 경우에는 stub, skeleton

이 호환되지 않아서 EJB 호출을 할 수 없었다. JEUS6.0 Fix#5 부터는 stub, skeleton을 생성할 때 하위

버전의 JDK에서도 EJB를 호출할 수 있게 하였다. 이는 stub, skeleton을 생성하는 Java class 버전를 지

정할 수 있게하여 해결되었으며 다음의 옵션으로 지정이 가능하다. 별도의 설정이 없을 경우 JDK 1.4를

기준으로 stub, skeleton을 생성한다.

jeus.ejb.compiler.class.version = 1.1/1.2/1.3/1.4/1.5/5

● ejb-jar.xml 파일에 resource-ref, resource-env-ref를 사용하고 jeus-ejb-dd.xml에서 이와 관련된 설

정을 생략할 경우 dd exception을 발생시키도록 변경

ejb-jar.xml 파일에서는 resource-ref, resource-env-ref 태그를 이용하여 resource를 설정할 수 있다. jeus-

ejb-dd.xml에서는 이에 대응하는 태그를 이용하여 resource설정을 해야 한다. 이때 jeus-ejb-dd.xml 파

일에서 해당 설정을 생략할 경우 기존에는 NullPointException이 발생했으나, dd xml flle과 관련된 ex

ception을 출력하도록 변경하였다.

로그 포맷 :

EJBDescriptorValidationException("cannot find the export name for " +

<reference-name> + " of " + <ejb-name> + " bean in jeus-ejb-dd.xml")

5.3.2. JNDI

● COS Naming Server를 Manager JVM 안에서 작동하도록 변경

기존에는 COS Naming Server가 별도의 JVM으로 동작하였지만, 이것을 JEUS Manager JVM 안에서

동작하도록 변경하였다.

5.3.3. JDBC

● Invocation manager의 기본값 변경

Invocation manager의 기본값을 NoAction에서 Warning으로 변경하였다. 따라서 리소스가 반환되지 않

는 경우에 항상 로그가 출력된다.

86 JEUS Release Note

Page 105: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

5.3.4. Transaction

● <enable-interop><use-OTS>를 더 이상 사용하지 않도록 수정

interop를 사용할 경우 OTS를 사용하기 위해서 <use-OTS>를 true 로 지정해야 했지만, 이것을 설정하

지 않아도 OTS를 사용할 수 있게 수정하였다. <use-OTS>에 true/false 어느것을 지정해도 기존의 true

인 경우로 동작한다.

● Tranasaction Manager 설정 중 <recovery-log-file> 설정을 더 이상 사용하지 않도록 수정

이 태그는 transaction 관련 로그 중 jeus.transaction.recovery 관련 로그만 별도로 파일에 기록할 수 있

도록 하는 설정이지만, <system-logging>의 <file-handler>설정을 이용해서 대체가 가능하다. 따라서

<recovery-log-file> 설정을 추가하더라도 더 이상 작동하지 않도록 수정하였다. 사용자는 이 설정을 할

경우 로그 메시지에서 다음을 볼 수 있다.

[2008.11.06 13:56:25][2][b189] [exia-10] <recovery-log-file> is deprecated, so

it will be ignored. You can use <system-logging> with file-handler instead of

<recovery-log-file> similarly if you would like to use same function

5.3.5. Session Server

● 타 JEUS에서 생성한 session ID가 왔을때 stack trace 대신 로그메시지 출력으로 변경

로컬 세션 서버를 사용할 때 다른 JEUS에서 생성한 session ID가 들어 왔을 경우 기존에는 stack Trace

메시지를 보여줬으나 이를 간단한 로그 메시지 출력으로 변경하였다,

● 세션 서버에서 passivation 기능을 할 때 사용하는 sessiondb 파일 위치 변경

중앙식 세션 서버나 분산식 세션 서버에서 세션을 파일로 내리는 passivation 기능을 할 때 생성되는 파

일의 위치를 변경하였다.

<shared> true일 경우

로컬 세션의 경우

JEUS_HOME\logs\sessiondb\<engine-name>_1

JEUS_HOME\logs\sessiondb\<engine-name>_2

백업 세션의 경우

JEUS_HOME\logs\sessiondb\<engine-name>_backup_1

JEUS_HOME\logs\sessiondb\<engine-name>_backup_2

<shared> false 일 경우

로컬 세션의 경우

JEUS_HOME\logs\sessiondb\<context-name>_<context-path>_1

JEUS_HOME\logs\sessiondb\<context-name>_<context-path>_2

백업 세션의 경우

제5장 JEUS 6.0 Fix#5 87

Page 106: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

JEUS_HOME\logs\sessiondb\<context-name>_<context-path>_backup_1

JEUS_HOME\logs\sessiondb\<context-name>_<context-path>_backup_2

자세한 설명은 “JEUS Server 안내서”의 “제10장 세션 서버” 부분을 참조한다.

5.3.6. Deployment

● reboot 후에 application을 deploy할 때 generated directory를 삭제하지 않도록 변경

reboot 후 deploy할 때 application file(archived)이나 directory(exploded)의 시간이 변경되지 않은 경우,

기존 generated directory를 유지 함으로서 이전에 compile된 JSP 결과가 유지되도록 수정하였다.

deploy할 때 application의 날짜가 변경되었거나, 명시적으로 undeploy/redeploy를 수행하는 경우에는

generated directory가 삭제된다.

5.3.7. Tool

● jeusadmin의 dsinfo 명령을 사용할 때 생성되지 않은 pool 정보도 보여지도록 변경

jeusadmin에서 dsinfo 명령을 사용하면 JEUSMain.xml에 설정된 모든 커넥션 풀에 대한 정보를 항상 보

여주도록 수정하였다. 기존과 같이 생성된 커넥션 풀의 정보만 보기 위해서는 -active 옵션을 사용한다.

● jeusadmin의 jeusexit 명령이 down과 jeusexit를 모두 수행하도록 변경

JEUS가 down 상태가 아니라면, jeusadmin의 jeusexit 명령을 수행할 때 down(엔진컨테이너 종료)을

수행한 후 jeusexit(JEUS Manager종료)를 수행하도록 수정하였다.

5.3.8. WebAdmin

● WebAdmin 로그인 페이지 및 전체 레이아웃 변경

로그인 페이지와 메인 페이지의 Node cluster 및 Node Tree 프레임 타이틀 바 디자인이 새로운 이미지

로 변경되었으며, 엔진을 비롯한 각 모듈, 기타 아이콘들을 좀 더 쉽게 식별할 수 있도록 변경하였다.

● Tibero DataSource 설정사항 변경

DataSource 설정의 vendor 항목에서 Tibero가 제일 위에 자리하도록 변경하였고, Tibero DataSource

를 설정할 때 default port도 8629로 변경하였다.

● 새로 고침을 Contextmenu를 통해서 하도록 변경

기존의 새로고침 버튼을 삭제하고, Refresh 하고자 하는 영역에서 오른쪽 마우스를 클릭하여 나타나는

Contextmenu에서 새로고침을 클릭하는 방식으로 변경하였다.

● MBean 모니터링 트리 구조 변경

기존 MBean 트리의 노드 이름 형태에서 jeustype이 길어질 경우, 노드 이름 또한 길어지는 문제점을 개

선하여 비슷한 특성을 갖는 노드를 하나의 노드로 그룹화하였다.

88 JEUS Release Note

Page 107: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● 애플리케이션 Deploy 페이지 변경

애플리케이션을 Deploy할 때 선택 사항 1,2 로 구분되어 있던 화면이 하나의 페이지로 통합되어 모듈

리스트가 테이블 형태로 보여지며, 각 모듈에 대한 선택 사항을 아이콘으로 표현하는 방식으로 변경하

였다.

● JMS persistence store 추가로 인한 WebAdmin의 JMS 엔진 페이지 변경

퍼지스턴스 스토어 페이지에서 journal과 jdbc persistence store를 선택하여 설정할 수 있도록 변경하였

다.

5.3.9. Security

● encryption tool을 이용해서 생성되는 암호값의 Format 변경

보안 강화를 위해서 encryption tool을 이용해서 생성되는 암호값의 Format이 변경되었다. 따라서 하위

의 Version에서 Upgrade를 할 경우, 암호화된 값의 Converting 작업이 필요하다.

JEUS6 Fix#5부터는 Converting 작업의 편의성을 위해서 encryption tool을 이용하여 Converting을 할

수 있는 Option(-convert)을 제공한다.

사용법) encryption -convert <encryption algorithm> <encrypted text>

# encryption -convert des pfuekB0Zeso3TtZiAfEGRg==

[2008.11.10 12:59:00][2][b189] [client-10] Loading secret keys from

"C:\TmaxSoft\jeus6\config\johan\security\security.key"

Decryption succeed.

[before:pfuekB0Zeso3TtZiAfEGRg==] --> [after:LNymrHi8yOZ2gpMNKb/h/A==]

5.3.10. Installer

● 내장 WebtoB 버전 변경

JEUS 내장 WebtoB 버전을 4.1.0.2 버전에서 4.1.2.0 버전으로 변경하였다.

제5장 JEUS 6.0 Fix#5 89

Page 108: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94
Page 109: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

제6장 JEUS 6.0 Fix#4

본 장에서는 JEUS6 Fix#4에서의 버그패치, 기능추가, 변경사항에 대해서 설명한다.

6.1. 버그패치

6.1.1. EJB

● 반납된 MDB 빈을 제거하는 과정에서 Session이 제대로 닫히지 않는 문제 수정

MDB을 사용할 때 반납된 빈의 갯수가 pool의 최대값을 넘을 때 pool에 넣지 않고 바로 제거하게 되는

데, 이 과정에서 JMS Session을 Close해주지 않는 문제를 수정하였다.

6.1.2. Webcontainer

● 동일한 context path를 가진 application을 deploy할 경우 기존 application 동작하지 않는 문제 수정

application을 deploy하고 동일한 context_path를 가진 war를 추가로 deploy할 경우 기존에 deploy된

application이 동작하지 않는 문제를 수정하였다.

● reverse proxy 사용할 때 javascript의 empty string 부분이 "/"로 rewrite 되는 문제 수정

reverse proxy 사용할 때 javascript의 document.write('<img src="' + url + '"'); 과 같은 코드에서 ""(empty

string) 부분이 "/"로 rewrite 되는 문제를 수정하였다.

● reverse proxy 사용했을 경우 META Tag의 redirect 시에 url rewrite가 안되는 문제 수정

reverse proxy 사용했을 경우 META http-equiv=REFRESH content="num;URL= "를 이용한 redirect 시

에 url rewrite되지 않는 문제를 수정하였다.

● JSP cache가 정상동작 하지 않는 문제 수정

JEUS WebCache 기능이 정상적으로 동작하지 않는 문제를 수정하였다.

● -Djeus.prepend.classpath로 등록한 classpath가 jsp compile할 때 추가되지 않는 문제 수정

-Djeus.prepend.classpath 옵션을 통해 jeus.jar보다 먼저 로드된 클래스들이 jsp compile할 때 classpath

로 추가되지 않는 문제를 수정하였다.

● HTTP|TCP Listener에서 max-idle-time만 설정했을 때 active thread가 idle time에 걸리는 문제 수정

HTTP 또는 TCP Listener에서 thread-pool 설정할 때 max-idle-time만 설정하고 max-thread-active-time

을 설정하지 않으면 active thread 임에도 불구하고 idle time 체크에 걸리는 문제를 수정하였다.

제6장 JEUS 6.0 Fix#4 91

Page 110: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● context를 호출할 경우 context 뒤에 "/" 붙이지 않으면 NullPointerException이 발생하는 문제 수정

context를 호출 할 경우 context 뒤에 "/"이 없는 경우에 "/"을 붙여 send redirect 하게 되는데, 이때 reqeust

초기화 부분에 문제가 있어서 NullPointerException이 발생하던 문제를 수정하였다.

6.1.3. JMS

● JMS 클라이언트가 connection failove를 시도할 때 새로운 entry가 생성되는 문제 수정

JMS 서버와 클라이언트 간에 네트워크가 단절되었을 경우, 초기 connection 시 entry 정보와 reconnection

후의 entry 정보가 서로 일치하지 않아서 connection failover 가 이루어지지 않던 문제를 수정하였다.

6.1.4. Session Server

● 다른 context를 include한 경우 session이 변경되는 문제 수정

RequestDispatcher의 include를 통해 다른 context의 서블릿을 include한 후 원래 context에서 생성한

세션이 변경되는 문제를 수정하였다.

● shared가 false이고 context-path가 "/" 일 경우 context 아래의 요청에 대해서 세션이 공유되지 않는

문제 수정

application의 context-path가 "/"이고 shared 값이 false일 때 context 루트("/")에서 생성된 session들과

context 하위의 디렉터리(예를 들어 "/test/")에서 생성된 session들이 공유되지 않는 문제를 수정하였다.

6.1.5. JDBC

● disposable connection을 생성할 때 행 현상이 발생하는 문제 수정

disposable connection 생성이 오래 걸리는 경우 pool에 대한 operation시 행이 걸리는 문제를 수정하였

다.

● max-use-count오류 수정

max-use-count 체크가 잘못되어 있어서 사용할 때 설정된 값보다 1만큼 더 사용하는 문제를 수정하였

다.

● Statement caching을 사용하는 경우 close이후에도 PreparedStatment가 사용 가능한 문제 수정

일반적으로는 logical connection이 close되면 관련 statement들도 같이 close되기 때문에 그 이후에는

PreparedStatement를 사용하면 에러가 발생하게 되어 있는데, statement caching을 사용할 경우에는

close이후에도 PreparedStatement를 사용할 수 있었던 문제를 수정하였다.

● Statement.getConnection()수행할 때 driver logical connection을 넘겨주는 문제 수정

JeusConnection에서 생성한 Statement(PreparedStatement, CallableStatement)의 getConnection()을

호출하면 JeusConnection wrapper object가 아닌 JDBC driver logical connection을 얻을 수 있는 문제

를 수정하였다.

92 JEUS Release Note

Page 111: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

6.1.6. JPA

● Oracle XADataSource를 사용하는 경우 DDL generation을 사용할 때 에러가 발생하는 문제 수정

persistence.xml 파일에서 Oracle XADataSource를 사용할 경우 toplink.ddl-generation 프로퍼티를 지

정하면 ORA-02089: COMMIT is not allowed in a subordinate session 에러가 발생하는 문제를 수정하

였다.

6.1.7. Windows Service

● 두 개의 JEUS가 설치된 곳에서 Windows Service의 오동작 수정

하나의 머신에 두 개의 JEUS가 설치된 곳에서 Windows Service로 중지할 경우 엉뚱한 JEUS를 다운시

켰던 버그를 수정하였다.

6.2. 기능추가

6.2.1. Server

● manager process가 down되었을 경우 해당 manager로부터 creation된 engine container의 자동

down기능 제공

컨테이너에서 매니저의 상태를 체크하여 매니저가 불완전할 경우 engine container를 자동으로 down

하는 기능을 추가하였다.

자세한 설명은 “JEUS Server 안내서”의 “제1장 JEUS 구조” 부분을 참조한다.

● Baseport에서 다양한 프로토콜을 받아들일 수 있는 기능을 추가

Baseport에서 여러 프로토콜을 받아들일 수 있는 기능을 추가하여 WebAdmin 접속 및 RMI 서비스 제

공을 Baseport를 통하여 제공할 수 있도록 하였다.

이와 관련하여 Baseport 에서 각 프로토콜을 처리하기 위해서 대기하는 시간을 정의할 수 있다.

다음과 같이 JEUSMain.xml에 설정할 수 있으며 기본값은 30000이고 단위는 ms(milli-second)이다.

<jeus-system>

<node>

<listener>

<read-timeout>30000</read-timeout>

</listener>

</node>

</jeus-system>

제6장 JEUS 6.0 Fix#4 93

Page 112: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

6.2.2. Webcontainer

● Ajp13 Listener에 read-timeout 설정 기능 추가

Ajp13 Listener에 read-timeout을 설정할 수 있는 기능을 추가하였다.

<command-option>

-Djeus.servlet.engine.ajp13readtimeout=10000

</command-option>

● resource access의 경우 processSendFile 기능 추가

NIO의 경우 -Djeus.servlet.resource.processsendfile 옵션을 사용할 때 processSendFile 기능을 추가하

였다.

processSendFile기능은 Resource file을 access할 때 file channel에서 socket channel로 file의 내용을

direct로 전달할 수 있게 하는 기능이다.

● blocking I/O Http Listener에서 AsyncServlet을 사용할 수 있도록 기능 추가

기존에 NIO Http Listener(<use-nio> true</use-nio> 설정)에서만 AsyncServlet을 사용할 수 있었지만,

blocking I/O Http Listener에서도 AsyncServlet을 사용할 수 있도록 기능을 추가하였다.

6.2.3. JDBC

● sql trace기능 추가

SQL 문장을 로그 또는 관리 툴을 통해서 볼 수 있도록 하는 기능을 추가하였다. 이 기능은 각각의

Statement 객체를 Wrapping해야 하기 때문에 애플리케이션에서 드라이버의 Statement 객체를 casting

해서 사용할 경우에는 이 기능을 사용할 수 없다. jeus.jdbc.sql logger의 레벨을 FINE으로 설정해야 한

다.

<connection-pool>

<use-sql-trace>true</use-sql-trace>

</connection-pool>

자세한 설명은 “JEUS Server 안내서”의 “8.3.4. Connection Pool 설정”의 "SQL Trace" 부분을 참조한다.

● use-count정보 추가

물리적 커넥션이 사용된 횟수를 의미하는 use-count정보를 항상 기록하도록 하였다. 이는 jeusadmin의

dsconinfo명령을 사용하면 확인할 수 있다.

6.2.4. Tool

● appcompiler 개선

appcompiler의 개선하고 옵션을 정리하였다. 개선 후의 usage는 다음과 같다.

94 JEUS Release Note

Page 113: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

usage: appcompiler [-h] [-verbose] [-keep] [-jspmap] [-batch]

[-client clientview_filename] [-noaddfile]

[-ejb-jar ejb-jar.xml_path]

[-jeus-ejb-dd jeus-ejb-dd.xml_path] [-D<property=value>]

[-properties=<filename>]

[application_file_or_directory_name]

주요 변경사항

– -batch 옵션이 추가되었다. 기존의 -Djeus.ejb.compiler.mode=batch와 기능은 동일하다. 옵션을 사용

하지 않으면 생성된 java 파일을 각각 compile 한다.

– -noaddfile 옵션이 추가되었다. -client 옵션이 존재할 경우에만 사용할 수 있으며, 함께 사용하면 gen

erated class들을 application에 추가하지 않는다.

– -client 옵션의 동작이 변경되었다. clientview filename은 jar 확장자를 가진 파일 이름이어야 한다. 이

파일에 client stub 파일이 생성되며 기존에는 EAR일 경우, EAR 파일 안에 생성되었지만 이제는 EAR

외부에 주어진 파일 이름으로 생성된다.

– -D 옵션과 -properties 옵션을 이용하여 system property 값을 설정할 수 있다.

자세한 설명은 “JEUS Reference Book”의 “4.4. appcompiler” 부분을 참조한다.

● jeus명령어에 system property를 추가할 수 있는 기능 추가

jeus명령어에 system property를 입력할 수 있도록 기능을 추가하였다. jeus명령어의 usage는 다음과

같다.

Usage:

jeus [-h] [-protectkey] [-d] [-xml] [-U<username>] [-P<password>]

[-f<filename>] [-D<property=value>] [-properties=<filename>]

arguments:

-h: show this help page

-protectkey: use protected secret key

-d: boot dynamic mode

-xml: use XML (deprecated)

-U<username>: set username

-P<password>: set password

-f<filename>: set filename of username and password

-D<property=value>: set system property. This option can be used more

than once.

-properties=<filename>: set system properties from the specified

system property file.

자세한 설명은 “JEUS Reference Book”의 “제3장 jeus” 부분을 참조한다.

제6장 JEUS 6.0 Fix#4 95

Page 114: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

6.2.5. WebAdmin

● Baseport로 WebAdmin을 접속하는 기능 추가

JEUS BASEPORT(9736)를 통해서 WebAdmin을 접속하는 기능을 추가하였다.

– 설정 방법은 다음과 같다.

JEUS 매니저 > 서비스의 WebAdmin 설정 페이지에서 Use Baseport를 체크하여 접속 여부를 설정할

수 있다.

JEUSMain.xml에서는 다음과 같이 Use Baseport를 true로 설정한다.

<webadmin-config>

<use-baseport>true</use-baseport>

</webadmin-config>

6.2.6. Security

● security.key 파일의 위치 지정 및 master password 지정 옵션 추가

password가 암호화된 DataSource의 decryption 시점이 lookup할 때로 변경됨에 따라 standalone appli

cation 이 lookup을 할 때는 실행 옵션에 -Djeus.security.keypath=<security.key 파일의 위치(디렉터리

혹은 파일명까지 포함 가능)> 를 지정할 수 있는 기능을 추가하였다.

security.key 파일이 암호화 된 경우, -Djeus.security.master=<master key password>를 함께 사용한다.

자세한 설명은 “JEUS Security 안내서”의 “2.4.2. Master Password를 통한 SecretKey 파일 관리” 부분

을 참조한다.

6.2.7. WebService

● WS-Trust 지원

WS-Trust를 보다 손쉽게 사용할 수 있는 환경을 지원한다.

자세한 설명은 “JEUS Web Service 안내서”의 “제16장 웹 서비스 보안” 부분을 참조한다.

6.2.8. Network Layer

● EndPoint 양쪽이 idle time에 Ping을 보내는 기능 추가

Network Layer에서 구현된 서비스를 이용할 때 양쪽에서 서로 Ping 을 보낼 수 있는 기능을 추가하여

방화벽 등에 의해서 네트워크가 단절된 상황을 인식할 수 있도록 하였다. 이와 관련된 프로퍼티는 다음

과 같다.

jeus.net.ping.enable = true/false, 기본값은 false

jeus.net.ping.period ; 기본값은 10분, 단위는 ms

96 JEUS Release Note

Page 115: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● Baseport를 이용하여 RMI 서비스를 제공하는 기능 추가

Node와 Container에서 각각의 Baseport를 이용하여 RMI 서비스를 제공할 수 있는 기능을 추가하였다.

이 기능을 사용하기 위해서는 JVM attribute로 다음을 지정해야 한다.

jeus.rmi.usebaseport = true/false, 기본값은 false

6.3. 변경사항

6.3.1. EJB

● 로그 레벨이 FINEST일 때 EJB 모듈을 디플로이 하면 NameNotFount 메시지가 발생하는 현상 수정

이전 버전에서 로그 레벨이 FINEST일 때 EJB 모듈을 디플로이하는 과정에서 NameNotFound 메시지

가 발생하는 현상이 있었다. 이는 디플로이 과정에서 발생하는 정상적인 상황이나, 오해의 소지가 있어

처리 방식을 변경하였다.

6.3.2. Webcontainer

● response.getOutputStream().print(String s) 사용할 때 인코딩 수정

현재 response.getOutputStream() 사용할 때 인코딩하지 않은 binary data만 보내도록 되어 있다. 이를

String을 보낼경우 response의 인코딩으로 인코딩해서 보내도록 수정하였다.

6.3.3. JMS

● Dead Letter Queue의 이름을 JEUSMQ_DLQ 로 수정

Dead Letter Queue의 이름을 기존의 [broker-name]_JMS_DLQ에서 JEUSMQ_DLQ로 수정하였다.

● FileMessage 송수신할 때, 클라이언트가 수신한 FileMessage의 임시 파일 이름 생성 규칙 수정

클라이언트가 수신한 FileMessage를 임시 파일로 저장할 때 standalone 클라이언트인 경우,

null_[CURRENT_TIME_MILLIS]_[DESTINATION_NAME]_[MESSAGE_ID] 와 같은 형식으로 파일 이

름이 생성되던 현상을 client[N]_[CURRENT_TIME_MILLIS]_[DESTINATION_NAME]_[MESSAGE_ID]

와 같은 형식의 임시 파일 이름으로 생성되도록 수정하였다.

client[N]_[CURRENT_TIME_MILLIS]_[DESTINATION_NAME]_[MESSAGE_ID]

N : 0에서 시작하여 현재 VM에서 임시 파일을 생성할 때마다 증가하는 값

CURRENT_TIME_MILLIS : 파일 이름을 결정하는 시점의 시간

제6장 JEUS 6.0 Fix#4 97

Page 116: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● 다수의 JMS 엔진이 같은 JNDI 이름으로 ConnectionFactory나 Destination을 등록할 수 있도록 수정

같은 JNDI 이름으로 ConnectionFactory나 Destination을 가진 다수의 JMS 엔진이 기동 가능하도록 수

정하였다.

6.3.4. JDBC

● stmt-query-timeout의 기본값 수정

Statement query timeout의 기본값을 30초에서 0으로 수정하였다. 즉, driver에 아무런 세팅을 하지 않

는다.

6.3.5. WebAdmin

● 애플리케이션 디플로이 방식 화면 변경

기존에 2단계 디플로이와 영구적인 디플로이를 선택할 수 있는 화면에서 모듈 디플로이할 때 '런타임

디플로이'와 '영구 디플로이' 를 동시 선택하여 두 방법 모두 디플로이가 가능하며 선택적으로도 디플로

이를 실행할 수 있도록 화면을 변경하였다.

자세한 설명은 WebAdmin 온라인 도움말의 "새 애플리케이션 모듈 배치의 디플로이" 부분을 참조한다.

6.3.6. WebService

● JAX-RPC Engine 교체

JAX-RPC 성능 향상을 위해서 엔진을 교체 하였다.

* Standards Supported:

- JAX-RPC 1.1

- WS-I Basic Profile 1.1

- WS-I Attachments Profile 1.0

- WS-I Simple SOAP Binding Profile 1.0

이전(~ Fix#3) JAX-RPC 엔진은 System Property, jeus.webservices.jaxrpc.axis=true를 사용하여 선택

적으로 사용할 수 있다. 기본 값은 false 이다.

예) -Djeus.webservices.jaxrpc.axis=true

98 JEUS Release Note

Page 117: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

제7장 JEUS 6.0 Fix#3

본 장에서는 JEUS6 Fix#3에서의 버그 패치, 기능 변경, 추가사항에 대해서 설명한다.

7.1. 버그패치

7.1.1. EJB

● EJB 2.x에서 MDB의 Transaction attribute 기본값이 SUPPORTS이던 현상을 수정

스펙에서는 EJB 2.x 에서 MDB의 Transaction attribute 값이 NotSupported 이거나 Required이다. 이에

따라 기본값을 NotSupported로 수정하였다. EJB 3.0 MDB에서는 기본값이 Required 이다.

● JEUS RMI 사용할 때 thread-ticket이 반납되지 않는 문제.

Java RMI 대신 JEUS RMI를 사용할 경우, Exception이 발생하였을 때 ticket이 제대로 반납되지 않는 현

상을 수정하였다.

7.1.2. JMS

● JMS access log가 출력되지 않는 문제 수정

JMS access log가 출력되지 않도록 되어있던 부분을 출력되도록 수정하였다.

● 사라진 임시 데스티네이션에 메시지 전송하려던 클라이언트가 멈추는 문제 수정

사라진 임시 데스티네이션에 클라이언트가 메시지를 전송하려고 하면 멈추는 문제를 수정하였다.

● XA를 실행할 때 prepare단계에서 데이터베이스 무결성 제약 조건 위반하는 문제 수정

MDB의 onMessage에 Transaction이 required로 설정되어있는 경우 onMessage가 실행되고 transaction

이 prepare될 때 데이터베이스 무결성 제약 조건 위반 발생하는 문제를 수정하였다.

7.1.3. Server

● jeusadmin의 hang 현상 수정

clustering상태에서 한쪽 node를 비정상 종료시킨 후 jeusadmin의 특정 명령을 실행할 경우 hang 현상

이 발생하는 문제가 수정되었다.

제7장 JEUS 6.0 Fix#3 99

Page 118: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

7.1.4. Session Server

● 중앙식 세션 서버 정보를 볼 수 없었던 문제 수정

application이 디플로이 되지 않은 상태에서 jeusadmin의 st -s 명령으로 중앙 세션 서버의 remote 정보

를 볼 수 없었던 문제가 수정되었다.

이 경우에는 로컬 컨테이너의 정보는 확인할 수 없고 세션 서버의 정보만 출력된다.

7.1.5. JDBC

● Oracle JDBC driver에서 제공하는 statement caching은 무조건 off하는 문제 수정

oracle의 경우 driver차원에서 statement cache를 ImplicitCaching과 ExplicitCaching으로 제공하는데,

이를 무조건 off 하고 있었던 문제를 수정하였다.

● auto-commit 처리과정에 대한 문제 수정

<connection-pool><auto-commit> 태그 사용시 다음과 같은 변경 사항이 있다.

LocalXADataSource 또는 XADataSource에 사용할 경우, connection이 transaction에 연동되지 않았다

면 <auto-commit> 태그의 설정값을 적용한다. 만약 설정하지 않았을 경우에는 드라이버의 기본값을 따

른다.

7.1.6. Tool

● exploded ear 모듈의 application.xml이 잘못된 정보를 가지고 있을때, appcompile할 때 문제 수정

appcompiler로 application.xml에 잘못된 정보를 가지고 있는 exploded ear을 compile하면 exploded ear

모듈이 삭제되어버리거나, 작업 디렉터리가 남는 문제가 수정되었다.

7.1.7. JNDI

● InitialContext 객체의 list 혹은 listBinding 메소드 호출시 "java:comp/env"를 줄 경우 NameNotFound

가 발생하는 현상 수정

web.xml에 <env-entry>등을 이용하여 Local에 리소스가 등록되어 있는 경우, initialContext.listBind

ings("java:comp/env") 혹은 initialContext.list("java:comp/env")과 같이 호출할 때 NameNotFound가 발

생하는 현상을 수정하였다.

7.1.8. WebService

● JAX-RPC 환경의 웹 서비스에서 Document/Literal 방식의 서비스에 메시지 엘리먼트가 255개 이상의

하위 엘리먼트로 구성되었을 때 발생하던 문제 수정

100 JEUS Release Note

Page 119: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

JAX-RPC 환경의 웹 서비스에서 Document/Literal 방식의 서비스에 메시지 엘리먼트가 255개 이상의

하위 엘리먼트로 구성되었을 때 wsdl2java 툴을 이용하여 생성된 자바 클래스가 컴파일이 되지 않던 문

제를 수정하였다.

7.2. 기능추가

7.2.1. EJB

● EJB Session bean module에 대한 Graceful undeployment 기능 제공

Container shutdown 혹은 undeployment 명령을 할 때 이미 진행중인 Stateless session bean module에

대한 요청은 에러없이 정상적으로 처리를 보장하는 기능을 추가하였다.

7.2.2. Server

● Server lifecycle event에 READY 기능 추가

web container의 listener가 연결되지 않는 상태에서 Lifecycle event에 의해 startup class가 실행될 때

서블릿을 찾지 못하는 문제가 있었다. 이의 해결을 위해 connector가 모두 시작되어 서비스 준비가 완

료된 후에 호출되는 옵션인 READY가 추가되었다.

<사용 예>

<lifecycle-invocation>

<invocation>

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

</invocation>

</lifecycle-invocation>

7.2.3. JDBC

● cluster datasource의 failback기능 추가

RAC 지원을 위한 클러스터 데이터 소스에 Failback을 추가하였다. 이때 Failback을 하기 위해서는 클러

스터링에 참여하는 각 데이터 소스마다 check-query 및 check-query-period를 반드시 설정해야 한다.

만약 주 데이터 소스(primary)가 Fail이 되면 check-query-period에 의해 주기적으로 check-query를 하

면서 주 데이터 소스가 살아났는지 검사하게 된다. 그리고 이전 버전처럼 Failover 만을 사용하고 싶다

면 <use-failback>를 false로 설정한다.

자세한 설명은 “JEUS Server 안내서”의 “8.3.5. 클러스터 데이터 소스 설정” 부분을 참조한다.

제7장 JEUS 6.0 Fix#3 101

Page 120: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

7.2.4. Tool

● controlcds 명령어 추가

jeusadmin에 controlcds 명령을 추가하였다. 이는 클러스터 데이터 소스의 리스트나 수동 fail-back기능

을 제공한다.

<사용 예>

controlcds -list <export-name>

클러스터 데이터 소스에 등록된 데이터 소스들의 리스트를 출력한다. 여기서 <export-name>은 반드시

클러스터 데이터 소스의 JNDI 이름이어야 한다.

controlcds -failback <export-name>

클러스터 데이터 소스의 주(primary) 데이터 소스로 Failback을 시도한다.

자세한 설명은 “JEUS Reference Book”의 “4.2.7. DB Connection Pool 관련 명령어” 부분을 참조한다.

7.2.5. WebAdmin

● session-timeout 값을 설정하는 기능 추가

WebAdmin을 통해 디플로이 하는 과정 중, web module별로 session-timeout 값을 설정하는 기능이 추

가되었다. session-timeout 값을 설정하면 web.xml의 session-timeout 값을 무시하고 설정된 값을 사용

하게 된다.

자세한 설명은 WebAdmin 온라인 도움말 "새 애플리케이션 모듈 배치" 부분을 참조한다.

7.2.6. Security

● security.key 파일을 암호화하는 기능 추가

encryption tool에 -protectkey option을 사용하여 master password를 입력받으며 -protectkey option을

사용할 경우, JEUS booting 할 때도 동일한 option(-protectkey)을 사용해야 한다.

<사용 예>

>encryption -protectkey des jeusencpassword

Input Your Password For Key Encryption>

Repeat Your Password For Key Encryption>

[des] : [jeusencpassword] --> [encode:Dkt7AmEVZoNddc9JTbiCi3y9djqGdCEm]

[des] : [Dkt7AmEVZoNddc9JTbiCi3y9djqGdCEm] --> [decode:jeusencpassword]

입력한 master password를 이용하여 암호화된 security.key 파일이 $JEUS_HOME/con

fig/<NODE_NAME>/security/에 생성된다.

>jeus -protectkey

**************************************************************

102 JEUS Release Note

Page 121: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

- JEUS Home : D:\jeus6

- JEUS Base Port : 9736

- Added Java Option :

- Java Vendor : Sun

**************************************************************

...생략...

secret key file is encrypted. Enter the master password.

password>

부팅 중 security.key 를 복호화 하기 위한 master password를 입력받는다.

다음의 경우, booting 도중 Exception이 발생하고 booting이 중단된다.

– security.key 파일에 master password가 걸려 있는 상태에서, -protectkey 옵션을 사용하지 않고 JEUS

를 booting한 경우

– security.key 파일에 master password가 걸려 있지 않은 상태에서, -protectkey 옵션을 사용해서 JEUS

를 booting 한 경우

– booting할 때 연속적으로 3번 이상 잘못된 master password를 입력 한 경우

7.2.7. WebService

● HTTP BASIC-AUTH로 username/password를 JAX-WS Handler와 Endpoint에서 사용할 수 있는 기

능 추가

HTTP BASIC-AUTH로 전달된 username/password를 Server-side의 JAX-WS Handler와 Endpoint를 통

해 HTTP BASIC-AUTH로 전달된 username/password를 얻어올 수 있도록 지원하였다.

예1) JAX-WS SOAP Handler에서 다음과 같이 사용하면, client가 HTTP BASIC-AUTH를 위해 설정하

여 보낸 값을 얻어올 수 있다.

public boolean handleMessage(SOAPMessageContext smc) {

String username=(String)smc.get(javax.xml.ws.BindingProvider.USERNAME_PROPERTY);

String password=(String)smc.get(javax.xml.ws.BindingProvider.PASSWORD_PROPERTY);

...

예2) Endpoint에서 다음과 같이 사용하면, client가 HTTP BASIC-AUTH를 위해 설정하여 보낸 값을 얻

어올 수 있다.

import javax.jws.WebService;

import javax.xml.ws.WebServiceContext;

import javax.annotation.Resource;

import javax.xml.ws.handler.MessageContext;

import java.util.*;

import javax.naming.*;

@WebService

제7장 JEUS 6.0 Fix#3 103

Page 122: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

public class AddNumbersImpl {

@Resource

private WebServiceContext wsContext;

public String addNumbers(int number1, int number2) {

MessageContext mc = wsContext.getMessageContext();

String username=(String)mc.get(javax.xml.ws.BindingProvider.USERNAME_PROPERTY);

String password=(String)mc.get(javax.xml.ws.BindingProvider.PASSWORD_PROPERTY);

return username + " : " +password;

}

}

자세한 설명은 “JEUS Web Service 안내서”의 “제16장 웹 서비스 보안” 부분을 참조한다.

● JAX-WS 환경의 웹 서비스에서 Service scope에 따라서 Web Service Endpoint Instance를 구분하

는 기능 추가

JAX-WS 환경의 웹 서비스에서 JEUS에 특화된 어노테이션 사용하여 Web Service Endpoint의 Service

Scope을 결정할 수 있다. Service Scope은 다음과 같다.

– @jeus.webservices.jaxws.api.ApplicationScope : 하나의 Web Service Endpoint는 singleton instance

를 갖는다.

– @jeus.webservices.jaxws.api.SessionScope : HTTP Transport 환경에서 HTTPSession당 하나의 in

stance를 갖을 수 있다.

– @jeus.webservices.jaxws.api.RequestScope : Request마다 Service instance를 갖는다. Default

Service scope은 RequestScope으로 한다.

JEUS 어노테이션에 대한 설명은 “JEUS Web Service 안내서”의 절 . “참고 자료” 부분을 참조한다.

● JAX-WS LocalTransport 구현

JAX-WS Client와 JAX-WS Service가 같은 JVM에 배치되는 경우, HTTP Transport layer를 제거하여

JAX-WS Client 성능 향상을 꾀한다.

참고 : Stand-alone Client에는 효과가 없다. JAX-WS Client가 Servlet, EJB 기반으로 작성되는 경우에

유용하다. 또한, Servlet-based JAX-WS Client가 Web Serivce Enpoint를 호출하면, Servlet이 다른

Servlet를 호출하는 상황이 되어 부하 상황에서 가용한 servlet listener의 수를 감소시킨다. 이 경우, Lo

calTransport를 사용하면(Web Serivce Enpoint) Servlet 호출을 하지 않고 JAX-WS Client Servlet에서

모든 프로세스가 진행되어 가용한 servlet listener의 수를 감소시키지 않는다.

JEUS 어노테이션에 대한 설명은 “JEUS Web Service 안내서”의 절 . “참고 자료” 부분을 참조한다.

● JAX-WS 환경의 웹 서비스 보안 설정(Keystore, Truststore)의 기능 향상

JAX-WS 환경의 웹 서비스에서 키스토어를 위한 설정이 다음과 같을 때

<keystore>

<keystore-file>

...

<keystore-filename>keystore.jks</keystore-filename>

104 JEUS Release Note

Page 123: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

...

</keystore-file>

</keystore>

keystore.jks는 표준 패키지된 WAR 혹은 JAR에서 Service Implemenation Bean 클래스가 포함된

classes 디렉터리와 같은 위치의 META-INF 디렉터리 아래에서 찾는다.

자세한 설명은 “JEUS Web Service 안내서”의 “제16장 웹 서비스 보안” 부분을 참조한다.

7.2.8. JNDI

● 인증서 방식으로 JNDI 리소스 접근기능 추가

JNDI 리소스 접근 시에 Certification(인증서)를 넘겨주어 이를 통해 서버에서 permission 체크를 할 수

있도록 기능을 추가되었다.

7.3. 변경사항

7.3.1. EJB

● <thread-max>의 값을 0으로 지정할 때 동작 방식 변경

기존에는 <thread-max>태그의 값을 0으로 지정할 경우 threat-ticket을 할당하지 않아서 요청을 처리하

지 못하는 방식이었으나, 이를 thread-ticket 없이 요청을 처리할 수 있는 방식으로 변경하였다.

● EJB 클라이언트의 최대 waiting time을 10분으로 변경

기존에는 EJB 클라이언트가 thread ticket을 바로 받지 못할 경우 무한대로 기다리도록 하였으나, 이를

10분만 기다리고 이후에는 RemoteException을 발생시키도록 하였다.

자세한 사항은 “JEUS EJB 안내서”의 “제4장 EJB의 공통 특성”을 참고한다.

7.3.2. JDBC

● JDBC 커넥션 풀 통계를 active/idle/disposable로 분리

application이 getConnection을 할 경우 active가 증가하고 idle은 감소하게 되며, close를 하면 반대가

된다. JEUS 내부적으로 커넥션 체크가 필요할 때는 idle만 증감될 수 있다. disposable과 total의 경우에

는 종전과 동일하다.

<출력 예>

Datasource information for container 'jeus6_container1'

================================================================================

id name min max active idle disp total waiting working

================================================================================

제7장 JEUS 6.0 Fix#3 105

Page 124: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

1 oracle_pool1 10 30 0 10 0 10 true true

================================================================================

= disp : disposable connections, total = active + idle + disp

================================================================================

● pool resizing할 때 lock granularity 조정

현재는 pool resize를 할 때 풀에 대한 lock을 미리 잡아두고 그 상태에서 물리적 커넥션을 닫아주게 되

어 있다. 보통 물리적 커넥션을 닫을 때 DB와의 통신이 일어나는데, 이 작업이 오래 걸리면 해당 풀에

대해 다른 스레드들이 커넥션 요청을 못하고 기다리게 된다. 그래서 resize를 할 때 connection close를

하게 될 경우 풀에 대한 lock을 잡지 않고 실행하도록 변경하였다.

7.3.3. Tool

● appcompiler의 usage와 help를 CLI Framework를 이용하여 일관적으로 제공

appcompiler 의 usage와 help를 CLI Framework를 이용하여 일반적으로 제공하도록 수정하였다. app

compiler의 usage가 다음과 같이 변경되었다.

<출력 예>

appcompiler [-h] [-verbose] [-keep] [-jspmp]

[-client client_view_path] [-ejb-jar ejb-jar.xml_path]

[-jeus-ejb-dd jeus-ejb-dd.xml_path] [-D<property=-value>]

[application_file_or_directory_name]

7.3.4. WebAdmin

● WebAdmin에서 datasource를 설정할 때 변경 사항

WebAdmin에서 datasource를 설정할 때 변경 사항은 다음과 같다.

– 지금까지 수정되지 않았던 vendor, data-source-class-name, data-source-type등을 수정할 수 있도록

변경

– DB2 jcc datasource 방식 추가

– mssql2000 datasource 방식 수정

● JDBC 드라이버 별 특성에 따른 부가적인 xml 스키마를 property로 설정하도록 수정

지금까지 각 드라이버별 특성에 따른 프로퍼티가 XML 스키마로 존재했는데 앞으로는 부가적인 프로퍼

티로 입력할 것을 권장한다. WebAdmin에서 datasource를 설정할 때, 다음에 나열된 스키마들은 prop

erty로 설정하도록 수정되었다.

<부가적인 프로퍼티로 사용할 것을 권장하는 XML 스키마 리스트>

<driver-type>

- Oracle만을 위해 추가된 태그.

106 JEUS Release Note

Page 125: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

- 프로퍼티 이름 : driverType

- 프로퍼티 타입 : java.lang.String

<data-source-name>

- 드라이버의 데이터 소스 클래스 인스턴스에 대한 이름을 지정하는 태그.

DB2, MSSQL 등은 사용하지 않는다.

- 프로퍼티 이름 : dataSourceName

- 프로퍼티 타입 : java.lang.String

<service-name>

- i-net JDBC 드라이버에서만 해당하는 설정

- 프로퍼티 이름 : serviceName

- 프로퍼티 타입 : java.lang.String

<network-protocol>

- Sybase의 경우 Tds를 쓴다. 드라이버 의존적인 프로퍼티다.

- 프로퍼티 이름 : networkProtocol

- 프로퍼티 타입 : java.lang.String

7.3.5. UDDI

● UDDI Home 디렉터리 변경

UDDI Home 디렉터리가 JEUS_HOME/webhome/uddi 에서 JEUS_HOME/webhome/uddi_home 으로

변경되었다.

7.3.6. License

● JEUS를 기동할 때 License 정보를 출력

유저 수가 제한된 라이선스의 경우 라이선스 타입과 제한된 유저 수를 부팅할 때 표시하는 기능이 추가

되었다.

ACADEMIC과 TRIAL License인 경우 제한된 라이선스 타입과 제한된 유저 수를 보여준다.

<기동시 출력되는 License 정보>

* Academic License *

================ JEUS LICENSE INFORMATION ================

=== EDITION: Enterprise (Academic License)

=== NOTICE: This license restricts the number of allowed clients.

=== Max. Number of Clients: 100

==========================================================

* Trial License *

================ JEUS LICENSE INFORMATION ================

제7장 JEUS 6.0 Fix#3 107

Page 126: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

=== EDITION: Enterprise (Trial License)

=== NOTICE: This license restricts the number of allowed clients.

=== Max. Number of Clients: 5

==========================================================

108 JEUS Release Note

Page 127: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

제8장 JEUS 6.0 Fix#2

본 장에서는 JEUS6 Fix#2에서의 버그 패치, 기능 변경, 추가사항에 대해서 설명한다.

8.1. 버그패치

8.1.1. EJB

● 원격으로 EJB 호출 중 Exception이 발생될 때 thread 반환 문제 수정

원격으로 EJB를 호출하여 사용하는 과정에서 Exception이 발생한 경우 thread가 제대로 반납되지 않을

가능성이 있어 skeleton의 코드를 변경하도록 수정하였다. 이전 버전에서 appcompiler를 이용하여 컴파

일한 모듈은 다시 컴파일을 실행해야 한다.

● Home business method에서 String을 return하는 경우 appcompile이 안되는 문제 수정

EJB 의 Home business method 중 String 값을 return하는 method가 있을 경우 appcompile이 되지 않

던 문제를 수정하였다.

● CMP에서 clustered datasource를 사용 가능하도록 수정

ClusteredDataSource를 CMP에서 사용이 가능하도록 변경하였다.

● Timeout의 default 값이 제대로 적용되지 않던 문제 수정

pasivation timeout과 disconnect timeout 값을 사용자가 지정하지 않을 경우 default 값이 아닌 0으로

settting 되는 문제를 수정하였다.

● Timeout의 값을 음수로 지정하는 경우에 대한 수정

pasivation timeout과 disconnect timeout 값을 -1로 지정할 경우, 0으로 설정되어 버리는 현상을 수정하

였다. 그리고 사용자가 임의의 음수를 지정할 경우에는 -1로 인식하여 timeout 기능을 사용하지 않는 것

으로 하였다.

● Clustering 설정이 on/off인 상황의 stub이 호환되도록 수정

클라이언트에서 사용하는 stub이, 서버에 디플로이된 모듈과 Clustering 설정이 다른 stub인 경우에도

NullPointException이 발생하지 않고 EJB호출이 가능하게 하였다.

제8장 JEUS 6.0 Fix#2 109

Page 128: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

8.1.2. WebContainer

● L4환경에서의 port 번호를 잘못 가지고 오는 버그 수정

WebtoB 앞에 loadbalancer가 있을 경우 loadbalancer의 포트가 아닌 WebtoB의 포트로 URL을 생성해

서 연결이 안되는 문제가 있어서 response.sendRedirect에서 URL을 만들 때 필요한 port 번호를 Host

헤더에서 얻도록 수정하였다.

– Host 헤더 필드에 포트설정이 없을 경우 http인 경우 80, https인 경우 443이 할당된다.

● Custom tag 관련 버그 수정

Custom tag의 attribute 에 "\\" 가 있을 경우 컴파일 에러가 발생하던 버그가 수정되었다.

● Request header의 "Expect: 100-continue"를 무시하는 문제 해결

Request의 header에 "Expect: 100-continue"가 있을 때, 서버가 service에 대해서 Ready 상태가 되었을

때 100-continue를 반환하여야 하지만 이를 처리 못하던 문제를 수정하였다.

● getResource() 리턴값 관련 버그 수정

Windows환경에서 ServletContext.getResource()호출할 때 URL이 "\" 나오는 부분을 "/" 으로만 구성되

게 수정되었다.

● modern 클래스 로더를 사용할 때 ClassCastException 발생 버그수정

modern 클래스로더 적용 후 getResource 메소드는 jeus.servlet.classloader.spec23 옵션이 적용되지

않아서 WEB-INF/lib 아래의 클래스가 먼저 로딩되지 않는 버그가 수정되었다.

● NIO TCP Listener를 사용할 때 잘못된 header정보를 출력하던 버그수정

NIO TCP Listener를 사용할 때 TCPDispatcherConfig의 getHeaderLength()가 출력되지 않는 버그가 수

정되었다.

● 인코딩 관련 버그수정

<forced-request-url-encoding>만 설정하고 <forced-request-encoding>을 설정하지 않았을 경우 getRe

questQueryEncoding() 값이 null이 되는 버그가 수정되었다.

● NIO Http Listener 관련 버그 수정

– ssl을 사용하지 않아도 ssl input buffer를 만드는 버그가 수정되었다.

– page 호출 이후에도 ByteBuffer를 free가 안 되는 버그가 수정되었다.

– 사용되지 않는 NIOContentBuffer를 만드는 문제가 수정되었다.

– 부하 상황에서 getContentType()가 null이 되는 버그가 수정되었다.

● webtob-jeus reconnect관련 버그 수정

webtob-jeus reconnect할 때 content length가 0 byte 인 200 OK response 가 전송되어 count가 올라가

는 버그가 수정되었다.

110 JEUS Release Note

Page 129: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● JEUS를 종료할 때 NullPointerException 발생할 수 있는 버그 수정

JEUS를 종료할 때 getRemoteHost를 부르는데, socket이 끊어진 경우 NullPointerException이 발생하

던 버그를 수정하였다.

● TCP, TMAX Listener에서 잘못된 정보 출력 버그 수정

TCP, TMAX Listener에서 request 파싱 중, pathInfo 대신 servletPath가 나오는 버그를 수정하였다.

● 커스텀 태그 파일 재귀 호출할 때 JSP를 컴파일 하지 못하는 버그수정

커스텀태그 파일을 재귀적으로 호출하는 경우 NullPointerException이 발생하는 버그가 수정되었다.

● AccessLog의 값이 잘못 나오는 버그 수정

JSESSIONID가 없는 최초의 요청에 대해서 %{JSESSIONID}c 부분에 request URI가 출력되는 버그가

수정되었다.

● 쿠키에 개행문자가 포함된 경우 잘리는 문제수정

쿠키의 개행문자가 포함된 경우 개행문자('\n')이후의 문장이 무시되는 버그가 수정되었다.

8.1.3. Session Server

● 중앙식 세션 서버를 사용할 때 backup 서버와 연결이 안 되는 버그 수정

중앙식 세션 서버 설정 중 <session-server><removal-to>을 주지 않으면 백업 세션 서버에 연결되지 않

는 버그가 수정되었다.

● 세션의 isNew 상태가 true로 나오는 버그수정

분산식 세션서버에서 primary가 down되고 다음 요청이 backup에 갔을 때 세션 객체의 isNew 값이 true

로 나오는 버그가 수정되었다.

8.1.4. WebService

● HTTP Response Header, Content-Type에 charset이 중복 설정되던 문제 해결

HTTP Response Header, Content-Type에 charset이 중복 설정되던 문제가 해결되었다.

● Web Service Information Page의 Endpoint Address가 Multiple Endpoints를 반영하지 못하는 문

제 해결

Web Service Information Page(웹 서비스를 디플로이한 후 WSDL 링크를 볼 수 있는 페이지)에서 Endpoint

Address가 Multiple Endpoints일 경우 같은 페이지에 여러 개의 Endpoint를 나타낼 수 있도록 수정하였

다.

● JAX-RPC 웹 서비스 보안에서 메시지 부분 암호화 버그 수정

wrapped/literal이 아닌 웹 서비스에서 WSDL의 특정 Part에 해당하는 메시지의 특정 부분만을 암호화

할 때 발생하던 버그를 수정하였다.

제8장 JEUS 6.0 Fix#2 111

Page 130: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● wsdl2java 콘솔 툴 관련 버그 수정

"-nokeepsrc -compile" 옵션을 사용할 경우 에러가 발생하던 현상을 패치하였다.

● fast deploy할 때 문제점 해결

fast deploy할 때 추가적으로 엔진 외부에서 생성된 클래스들에 대해서 매핑 파일의 정보와 일치하는지

를 확인하는데 이때 발생하는 오류 현상을 수정하였다.

8.1.5. JDBC

● NonTx type의 datasource일 경우 tm-timeout을 체크하지 않도록 수정

getConnection할 때 transaction timeout을 체크하는 로직이 있는데, non-XA type의 커넥션 풀일 경우에

도 이를 수행하는 문제가 있어서 이를 수정하였다.

● max-use-count가 될 때, exception대신 replace한다는 로그를 출력하도록 수정

max-use-count가 되었을 경우 exception을 던지지 않고 바로 replace가 된다는 로그를 info 레벨로 남기

도록 수정하였다.

● XADataSource에서 check-query설정하면 에러가 발생하던 문제 수정

XADataSource를 사용할 경우 check-query 설정을 하게 되면, DataSource 바인딩될 때 에러가 발생하

던 현상을 수정하였다.

● LocalXADataSource 사용할 때 에러 발생하던 문제 수정

LocalXADataSource를 사용할 때 dba-timeout기능이 동작하면 해당 connection의 session ID를 가져오

기 위해 query를 날리는데, 이때 SQLException이 발생하면 delist를 해주지 않고 다른 connection을 얻

어와 enlist를 하다가 같은 tx 안에서는 두 개 이상의 local transaction을 enlist할 수 없다는 에러가 발생

하던 문제를 수정하였다.

● statement caching 사용할 때 Memory Leak 발생

JEUS에서 제공하는 statement caching은 preparedStatement를 wrapping해서 Hashtable에 저장하는

방식을 사용한다. 그런데 statement를 삭제할 때 statement를 close해주지 않아서 driver 내부적으로 계

속 instance가 쌓여있게 된다. Hashtable에서 삭제할 때 driver에서 생성한 preparedStatement를 close

해서 Memory Leak을 없애도록 수정하였다.

8.1.6. Transaction

● UserTransaction.setTransactionTimeout()이 다른 Thread 에 영향을 미칠 수 있는 문제 해결

특정 request에서 Thread pool을 사용할 때 해당 thread에서 호출한 UserTransaction.setTransaction

Timeout()이 다른 request를 위해서 thread pool에서 제공한 thread에도 영향을 미칠 수 있어, default

timeout이 제대로 적용되도록 수정하였다.

112 JEUS Release Note

Page 131: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● JEUS에서 제공하지 않는 XAResource가 Transaction의 enlistResource, delistResource 메소드를

지원하도록 수정

JEUS에서 제공하는 JDBC, JMS 등의 XAResource 이외에 사용자가 직접 생성한 XAResource가 en

listResource, delistResource를 통하여 transaction에 연결될 수 있도록 수정하였다.

● TMXAResource, InterposedTransactionManager 관련 버그 수정

TMXAResource, InterposedTransactionManager를 이용하여 JEUS의 Transaction을 가져와 사용할 때,

상황에 따라서 발생할 수 있는 문제점에 대한 고려가 이루어졌다.

● DB2를 사용할 때 JVM crash 현상에 대해 조치

DB2의 XADataSource 사용할 때, connection이 close 된 XAResource를 parameter로 사용하여 XARe

source.isSameRM() 호출할 때 JVM crash 현상이 발생할 가능성이 있어 이것을 수정하였다. 이는 JEUS

의 문제가 아니라 DB2 JDBC 드라이버의 문제점 때문에 발생하는 현상이다.

8.1.7. Deployment

● Deploy 실패한 모듈을 undeploy할 경우 에러가 발생하는 문제 수정

Deploy 실패한 모듈을 undeploy할 경우, NullPointerException이 발생하던 문제가 수정되었다.

8.1.8. Tool

● jeusadmin에서 testdsconfig명령을 사용할 때 에러가 발생하던 문제 수정

BlackboxDataSource로 설정된 datasource를 테스트 하기 위해 jeusadmin에서 testdsconfig할 때 에러

가 발생했었다. 이 현상은 드라이버 클래스에 대한 로딩 과정이 없어서 DriverManager가 클래스를 찾지

못하던 것 때문에 에러가 발생하던 문제로, 이를 적절한 위치에서 드라이버 클래스 로딩을 하도록 수정

하여 해결하였다.

8.1.9. WebAdmin

● 클러스터 상태에서의 버그 수정

클러스터된 상태에서 특정 노드에만 존재하는 모듈을 디플로이할 경우, FileNotFoundException이 발생

하는 현상을 수정하였다.

● 기타 수정 사항

– 디플로이 대상을 선택할 때, 모듈 관련 엔진 컨테이너만 보여지도록 수정되었다.

– 어노테이션을 사용한 모듈 디플로이할 때, 애플리케이션 홈/디렉터리 선택 리스트에 보여지도록 수

정되었다.

– 관리자 계정은 삭제할 수 없도록 수정되었다.

제8장 JEUS 6.0 Fix#2 113

Page 132: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

8.1.10. Security

● Resource permission에서 action이 하나일 때, 무조건 성공하는 버그 수정

resource permission에서 action이 하나인 경우 서로 다른 permission임에도 불구하고 permission check

에 성공했던 버그를 수정하였다.

8.1.11. JNDI

● 클러스터링 환경의 replication 과정에서 Concurrency 문제 해결

클러스터링이 구성된 환경에서 노드 사이에 서로 replication이 일어날 경우 동일 객체에 대한 접근이 이

루어질 때 null이 발생할 수 있는 상황을 제거하여 Concurrency 문제를 해결하였다.

8.2. 기능추가

8.2.1. JMS

● JEUS의 baseport 또는 container port로 JMS서비스 제공 가능

기존에는 JMSMain.xml의 <jms-server><service-config>에 ip address와 port를 설정하면 service-

channel이 해당 포트를 열어 서비스를 하였으나 JEUS의 baseport로 JMS서비스를 제공하기 위해 oneport

설정을 추가하였다. 다음과 같이 <server-url>에 oneport를 설정한다.

<사용 예>

<jms-server>

<service-config>

<server-url>oneport</server-url>

</service-config>

</jms-server>

만약 cluster를 사용할 경우라면 아래처럼 <jms-server-cluster><jms-server-info><oneport>스키마의 값

을 true로 하고 <jms-port>는 jeus manager(default container에 한해서)나 container의 baseport를 지정

해야 한다.

<사용 예>

<jms-server-cluster>

<jms-server-info>

<broker-name>active</broker-name>

<broker-id>1</broker-id>

<oneport>true</oneport>

<ip-address>195.555.1.123</ip-address>

<jms-port>9741</jms-port>

114 JEUS Release Note

Page 133: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

</jms-server-info>

<jms-server-info>

<broker-name>standby</broker-name>

<broker-id>2</broker-id>

<oneport>true</oneport>

<ip-address>195.555.1.456</ip-address>

<jms-port>8741</jms-port>

</jms-server-info>

</jms-server-cluster>

자세한 설명은 “JEUS MQ 안내서”의 “5.3.1. 서비스 채널 설정” 부분을 참조한다.

8.2.2. WebConatiner

● 로깅 기능 추가

– forward, include에 대해서 log 레벨이 FINE 이상일 때 include와 forward의 로그 정보를 보여주는 기

능이 추가되었다.

– respone가 commit에 대해서 log 레벨이 FINE이상일 때 commit 로그와 thread dump에 로그를 남기

는 기능이 추가되었다.

8.2.3. Session Server

● 중앙식 세션 서버 속성 값들에 대한 validation 기능 추가

중앙식 세션 서버의 설정 값인 resolution, threadpool의 min, max 등에 대한 validation 과정이 강화되었

다.

● MBean을 통해 세션 서버 목록을 얻거나 삭제하는 기능 추가

– 세션 서버에서 세션 ID 목록 가져오기

– 세션 서버에서 특정 ID 세션 삭제

– 세션 서버에서 특정 세션 존재 유무 확인

이를 사용하기 위해서는 MBean을 사용해야 하는데 MBean에 추가된 methods는 다음과 같다.

– SessionContainerMoMBean.getLocalSessionKeys()

routing true이거나 중앙식 세션 서버 사용하지 않을 때 웹 컨테이너 로컬에서 가지고 있는 세션 목록

– SessionManagerMoMBean.getAllSessionKeys()

중앙식 세션 서버에서 가지고 있는 세션 목록

– SessionContainerMoMBean.invalidateSession(String id)

특정 ID의 세션을 삭제한다.

제8장 JEUS 6.0 Fix#2 115

Page 134: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– SessionContainerMoMBean.isExist(String id)

웹 컨테이너 로컬에서 세션이 존재하는 지 확인

– SessionManagerMoMBean.isExist(String id)

중앙식 세션 서버에 세션이 존재하는지 확인

8.2.4. WebService

● Web Service Application을 Deploy할 때 Portable artifacts 자동 생성 기능 추가

@WebService인 경우, portable artifacts가 없다면, SEI package의 jaxws subpackage에 portable artifacts

를 자동으로 생성한다.

● JAX-WS JMS Transport 기능 지원

SOAP 메시지를 HTTP가 아닌 JMS Transport를 통하여 주고 받는 기능이 추가 되었다.

자세한 설명은 “JEUS Web Service 안내서”의 “제12장 JAX-WS JMS Transport” 부분을 참조한다.

● WSDL이 명시적으로 SOAP1.2를 사용하는 경우 @BindingType 없이 SOAP 1.2 binding over HTTP

지원

WSDL이 명시적으로 SOAP1.2를 사용하는 경우 @BindingType annotation이 명시되어 있지 않더라도

SOAP 1.2 binding over HTTP를 지원한다

● wsgen, wsimport에 -policy 옵션 추가

복잡한 WS-Policy를 쉽게 작성할 수 있도록, JEUS의 service-config.xml에 policy를 작성 한 후에 wsgen,

wsimport 툴을 실행하여 WS-Policy가 적용된 산출물을 생성할 수 있는 옵션을 추가하였다. wsgen,

wsimport 실행할 때 "-policy service-config.xml" 옵션을 추가해주면 된다.

자세한 설명은 “JEUS Web Service 안내서”의 “제13장 웹 서비스 정책” 부분을 참조한다.

● 하나의 impl class를 복수의 JAX-WS 기반 웹 서비스로 deploy 가능하게 함

하나의 impl class를 복수의 JAX-WS 기반 웹 서비스로 deploy 가능하게 되었다.

web.xml에 동일한 impl class를 여러 servlet-name 으로 넣을 수 있게 되었다.

8.2.5. JDBC

● XADataSource에 대해 shareable resource속성 지원

XADataSource를 사용하는 경우에 한 Transaction 안에서 같은 물리적인 XAConnection을 사용하도록

하는 기능이 추가되었다. 이 기능을 사용하고 싶지 않다면 @Resource혹은 <resource-ref>의 <res-

sharing-scope>속성을 shareable, unshareable로 설정할 수 있다.

116 JEUS Release Note

Page 135: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● connection-trace기능 추가

사용자가 커넥션 풀 설정에서 connection trace를 true로 하면 invocation manager에서 Warning 또는

AutoClose될 때 해당 커넥션의 getConnection() stack trace를 보여주도록 하는 기능이 추가되었다. 설

정하는 방법은 다음과 같다.

<사용 예>

<connection-pool>

<connection-trace>

<enabled>true</enabled>

</connection-trace>

</connection-pool>

자세한 설명은 “JEUS Server 안내서”의 “8.3.4. Connection Pool 설정” 부분을 참조한다.

● non-validation-interval 기능 추가

기존의 check-query기능은 getConnection할 때와 check-query-period의 시간 간격마다 수행되도록 되

어 있다. 하지만 non-validation-interval기능을 사용함으로써, getConnection이 한번 일어난 후 check-

query-interval에 설정한 시간 동안은 Check-Query를 하지 않게 할 수 있다.

자세한 설명은 “JEUS Server 안내서”의 절 8.3.4. “커넥션 점검(Connection Validation or Check Query)”

부분을 참조한다.

● DB2 XADataSource에 대해 <keep-connection-handle-open> 기능 추가

해당 설정을 통해 connection handle을 계속 열어두게 함으로써, DB2 Driver가 무한루프에 빠져 Leak이

걸리는 현상을 막을 수 있다.

자세한 설명은 “JEUS Server 안내서”의 “8.3.4. Connection Pool 설정” 부분을 참조한다.

● 주요 Vendor별 JDBC DataSource구성 예제 수정 및 추가

주요 vendor별 JDBC DataSource구성하는 예제를 매뉴얼에 추가하였다. 매뉴얼에 추가 및 수정된 사

항은 다음과 같다.

– Oracle Thin

– Oracle OCI

– DB2 Type 4(JCC)

– DB2 Type 2(JCC)

– Sybase jConnect 5.x, 6.x

– MSSQL 2005 Type 4

– Informix Type 4

– Tibero Type 4

이에 대한 자세한 설정은 “JEUS Server 안내서”의 “Appendix B. JDBC Data Source 구성 예제” 부분을

참조한다.

제8장 JEUS 6.0 Fix#2 117

Page 136: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● WebAdmin에서 JDBC DataSource설정 하는 부분 수정

기존 WebAdmin에서 JDBC DataSource를 설정 하는 부분이 Blackbox DataSource로 설정하게 되어 있

거나 잘못 설정된 부분에 대해 수정하였다. 수정된 사항은 다음과 같다.

– Oracle OCI 방식 변경

– MySQL (Connect/J 5.x) 방식 추가

– Sybase JConnect 6.x 방식 추가

– Sybase JConnect 4.5 방식 삭제

– Informax DataSource방식 추가

– MSSQL 2005 DataSource방식 수정

– DB2 type2 (jcc이전) 방식 수정

8.2.6. Transaction

● jeus.transaction.Transaction 인터페이스 제공

jeus에 특화된 Transaction 서비스를 위하여 jeus.transaction.Transaction 인터페이스가 추가되었다.

● TxHelper에 getTransactionRemainingTimeout() 메소드 추가

JEUS container에서 운영되는 시스템이 아닌 외부의 환경에서 jeus.transaction.TxHelper.getClientInter

posedTransactionManager()를 통해서 InterposedTransactionManager를 이용할 수 있도록 하였다.

● transaction 관련 MBean 기능 개선

현재 JEUS Transaction Manager에서 사용하는 transaction에 대하여 모니터링 및 제어를 강화하기 위

해서 jeus.management.j2ee.JTAResourceMBean 에 getTransactionInfos(), getIncompletedTransaction

Infos(), getRetryingXAResourceInfos() 메소드가 추가되고 getAllIncompletedTx() 메소드가 삭제되었다.

● WebAdmin에서 transaction 모니터링 기능 향상

JEUS 안에 있는 다양한 상태의 transaction에 대하여 WebAdmin을 이용한 모니터링 및 제어 기능이 강

화되었다.

8.2.7. Tool

● jeusadmin의 logging 관련 기능 향상

기존에는 jeusadmin 을 사용하는 동안 log가 많이 보이게 되는 문제점이 있었다. 이를 개선하여 jeusadmin

은 기본적으로 console에 log를 보여주지 않게 하고 JEUSMain.xml이나 jeuslogging.property 등의 영향

을 받지 않도록 수정하였다. jeusadmin의 log메시지를 확인하고 싶다면 -verbose옵션을 이용하도록 한

다.

118 JEUS Release Note

Page 137: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● jeusadmin의 현재 긴 help 메뉴 내용 정리

현재 jeusadmin 에서 help 명령을 사용했을 때 출력되는 메뉴가 너무 길어서 보기 힘들다. 이를 개선하

기 위해 help 명령을 실행하면 설명을 제외한 명령어들을 그룹화하여 보여주어 한 눈에 어떤 명령이 있

는지 쉽게 알 수 있도록 수정하였다. 기존과 동일한 help 메뉴를 보기 위한 옵션도 추가되었다.

자세한 설명은 “JEUS Reference Book”의 “4.2.3. 공통 명령어” 부분을 참조한다.

● jeusadmin에서 여러 가지 transaction정보를 볼 수 있는 명령 추가(txlist)

jeusadmin에서 txlist명령을 이용하여 여러 가지 tx들(in-flight, in-doubt, retrying)을 모니터링할 수 있는

기능을 추가하였다.

자세한 설명은 “JEUS Reference Book”의 “4.2.8. 트랜잭션 관련 명령어” 부분을 참조한다.

● jeusadmin에서 엔진 컨테이너를 선택할 수 있는 명령 추가(setcon)

jeusadmin에서 특정 container를 선택하고자 할 때 "setProperty container.name node_container"와 같

은 식으로 다소 긴 명령을 입력해야 하는 불편함이 있다. 이를 해소하기 위해 setcon명령으로 쉽게 con

tainer를 선택 할 수 있다.

자세한 설명은 “JEUS Reference Book”의 “4.2.3. 공통 명령어” 부분을 참조한다.

● jeus를 실행시키는 script에 usage와 help 추가

jeus 실행시 '-h' 옵션 제공하여 usage와 help를 보여주는 기능을 추가하였다.

자세한 설명은 “JEUS Reference Book”의 “제3장 jeus” 부분을 참조한다.

● jeusadmin에서 JDBC connection pool을 새로 생성하거나 재구성하는 명령 추가(createds/refreshds)

jeusadmin에서 jdbc connection pool을 생성하거나 재구성하는 명령어를 추가하였다.

– createds : jdbc connection pool을 생성하는 명령어

– refreshds : jdbc connection pool을 재구성하는 명렁어

자세한 설명은 “JEUS Server 안내서”의 “8.4.1. DB Connection Pool의 제어” 부분을 참조한다.

● JDBC connection의 thread stack을 출력할 수 있는 기능 추가

jeusadmin에서 dsconinfo명령어를 -id옵션과 같이 사용하면 특정 connection에 대한 thread stack정보

가 출력된다. 예를 들어, pool 이름이 oracle_pool이고, 그 안에 생성한 connection id가 oracle_pool-1이

라고 한다면 예제와 같이 입력한다.

<사용 예>

johan> dsconinfo -con johan_container1 -id oracle_pool-1 oracle_pool

단, 해당 datasource는 connection-trace기능을 사용하고 있어야 한다.

자세한 설명은 “JEUS Server 안내서”의 “8.4.2. DB Connection Pool의 모니터링” 부분을 참조한다.

● jeusadmin의 ti명령어에서 특정 thread정보만 출력 가능한 -f 옵션 추가

jeusadmin console의 ti 명령어를 중 -f 옵션을 사용하여 (a)ctive, (i)dle, (b)locked, (r)econnecting중 특

정 정보만 조회할 수 있게 기능이 추가 되었다.

제8장 JEUS 6.0 Fix#2 119

Page 138: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

자세한 설명은 “JEUS Reference Book”의 “4.2.5. 서블릿 엔진 관련 명령어” 부분을 참조한다.

8.2.8. WebAdmin

● 백업 노드 설정 및 복원 기능 추가

WebAdmin을 통하여 노드 상태를 백업할 수 있도록 설정 및 복원하는 기능이 추가되었으며 사용법은

다음과 같다.

– 메인 뷰의 설정 메뉴 선택 후 설정 관리 탭의 백업 노드 설정 페이지에서 설정 및 적용이 가능하다.

– 백업된 경로는 {JEUS_HOME}/webhome/admin_home/WEB-INF/backup/{설정한 백업 노드 이름명}

이다.

자세한 설명은 WebAdmin 설정 메뉴 페이지에서 도움말 메뉴를 선택하여 참조한다.

● Thread Dump 기능 추가

WebAdmin을 통하여 Thread Dump 명령을 실행할 수 있는 기능이 추가되었으며 사용법은 다음과 같다.

– JEUS 매니저 Thread Dump : JEUS 노드 트리 뷰에서 노드 이름에서 오른쪽 버튼 클릭 후 Thread

Dump 메뉴를 선택한다.

– 컨테이너 Thread Dump : JEUS 노드 트리뷰에서 컨테이너이름에서 오른쪽 버튼 클릭 후 Thread

Dump 메뉴를 선택한다.

자세한 설명은 “JEUS WebAdmin 안내서”의 “2.1. 화면 구성” 부분을 참조한다.

● 버전 관리 기능 추가

애플리케이션 모듈 디플로이의 버전 관리 탭을 이용하여 디플로이를 할 경우, 기존 모듈을 언디플로이

하고 새로운 모듈을 디플로이 할 수 있는 기능이 추가되었다. 또한 디플로이할 때 '버전 관리 사용'을 체

크할 경우, 기존에 디플로이된 모듈을 백업하는 기능을 제공한다.

자세한 설명은 WebAdmin 온라인 도움말 "애플리케이션 디플로이" 부분을 참조한다.

8.3. 변경사항

8.3.1. EJB

● EJB compile을 실행할 때 Class Name 생성 규칙 변경

디플로이 과정에서 EJB compile을 실행할 때 module name과 application name에 대한 의존성을 제거

하기 위해서 hash code를 이용하도록 Class Name 생성 규칙을 변경하였다.

● local entity bean에 clustering 설정이 있는 경우 NullPointerException 발생하는 현상 수정

local entity bean에 clustering 설정이 되어 있을 경우 디플로이 과정에서 JNDI binding을 할 때 NullPoin

tException이 발생하는 경우가 있어서 이를 수정하였다.

120 JEUS Release Note

Page 139: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● timeout 값에서 0의 의미를 변경

기존에는 pasivation timeout과 disconnect timeout을 0으로 지정할 경우 즉시 timeout 이벤트가 발생하

였으나, 이후에는 -1과 같이 취급하여 timeout event를 사용하지 않는 경우로 인식하게 하였다.

● Class FTP 값이 false 경우의 에러 메시지 변경

Class FTP 설정의 기본값이 false이기 때문에 사용자가 이 설정을 true로 명시하지 않을 경우 원격의 클

라이언트가 stub을 받으려고 할 때 에러가 발생한다. 이때 에러 메시지에 "javax.naming.NamingException:

java.lang.ClassNotFoundException: Could not find the class from the classftp server(please check if

classftp is enabled)"를 추가하여 사용자에게 Class FTP 설정을 점검하라고 알려준다

8.3.2. WebContainer

● NIO Http Listener에서 HeapByteBuffer를 사용할 수 있도록 변경

DirectByteBuffer 사용할 때 문제가 있을 수 있어 설정에 따라 HeapByteBuffer도 사용할 수 있도록 수정

되었다.

jeus.servlet.nio.directbuffer=true 설정된 경우 DirectByteBuffer가 사용되고 그 외의 경우에는 HeapByte

Buffer가 사용된다.

● NIO Listener (HTTP, TCP, TMAX)에 Selector 개수 설정 태그 추가 및 디폴트 값 수정

listener가 여러 개 설정된 경우 thread가 많아지는 문제가 생겨 NIO Listener (HTTP, TCP, TMAX) 의

Selector 개수를 디폴트 1개로 수정하였다. selector 개수의 설정은 listener 태그 아래에 <selector-count>

로 설정 가능하며, 기존의 -Djeus.net.selector.num 옵션은 삭제되었다.

● JSF RI를 기존 1.2_04 에서 1.2_06-b02-FCS로 변경

lib/shared 아래의 jsf_ri_1.2_04 디렉터리가 제거되고, jsf_ri_1.2디렉터리로 변경되었으며 구현체의 버

전은 lib/shared/libraries.xml 파일에서 1.2_06으로 수정되었다.

● 세션 관련 기능 변경

서로 다른 context 를 include하는 경우 context 별로 session이 따로 유지되도록 하였다.

8.3.3. Server

● JEUS4.x의 log level과 JEUS6.x 대의 log level 매핑 변경

JEUS4.x의 log level방식 중 "INFORMATION" level을 기존 "CONFIG"에서 "INFO" level로 변경하였다.

로그 레벨 매핑 표

log표시 JEUS6(java level) JEUS4

0 SEVERE FATAL

1 WARNING NOTICE

2 INFO INFORMATION

3 CONFIG

제8장 JEUS 6.0 Fix#2 121

Page 140: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

4 FINE DEBUG

5 FINER

6 FINEST

7 ALL

8.3.4. WebService

● JAXB, JAX-WS 2.1 API를 endorsed library 디렉터리에 추가

JAXB, JAX-WS 2.1 API를 endorsed library 디렉터리에 추가하여 다른 API를 찾지 못하는 문제를 해결

하였다. JEUS_HOME/lib/endorsed/ 디렉터리에 activation.jar, webservices-api.jar가 추가되었다(기존

jaxb-api.jar, jaxws-api.jar, saaj-api.jar 파일은 제거 되었다).

● @WebServiceProvider의 serviceName attribute가 없는 경우에도 default url-pattern을 지원

@WebServiceProvider의 serviceName attribute가 없는 경우에도 default url-pattern을 지원한다. 여기

서 Provider의 @WebServiceProvider가 serviceName attribute를 가지고 있지 않다는 것은 wsdlLocation

attribute 역시 없다는 것을 전제로 한다.

● setTimeout 지원 클래스 변경

setTimeout을 지원하기 위해 사용한 HTTPSender를 deprecated하고 HttpURLConnectionSender로

setTimeout 기능을 지원한다.

<사용 예>

AddNumbersImpl port = new AddNumbersImplService().getAddNumbersImplPort();

((javax.xml.ws.BindingProvider)port).getRequestContext().put(

"com.sun.xml.ws.request.timeout", new Integer(10000));

8.3.5. JDBC

● pooling의 step값 default 변경

ConnectionPool의 속성 중 step의 default값을 4에서 1로 변경하였다.

● Invocation Manager의 connection 관련 로그 개선

– JDBC connection의 해당 connection ID와 actual connection instance를 로깅하도록 개선하였다.

– AutoClose일 때도 Warning 로그가 같이 출력되도록 개선하였다.

8.3.6. Deployment

● auto-deploy 관련 <check-absolute-path> 태그 설정 변경

122 JEUS Release Note

Page 141: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

원하는 디렉터리에 autodeploy설정을 하고자 할 경우, 다음과 같이 JEUSMain.xml의 <absolute-path>

태그에 디렉터리 경로를 지정하고, <check-absolute-path> 태그를 설정한다(기존에는 <check-absolute-

path> 태그가 <absolute-path> 사용 여부를 결정하는데 사용되었다).

– <check-absolute-path> 태그를 true로 설정할 경우, 해당 디렉터리에 대해 오토 디플로이가 가능하다.

즉, 애플리케이션을 변경할 경우에 리디플로이를 실행한다.

– <check-absolute-path> 태그를 false로 설정할 경우, 해당 디렉터리에 대해 오토 디플로이 설정을 하

지 않는다. 즉, 애플리케이션을 변경할 경우에 리디플로이를 실행하지 않는다.

<사용 예>

<application>

<absolute-path>/home/jeus6/webhome/test</absolute-path>

<auto-deploy>

<check-absolute-path>true</check-absolute-path>

<auto-deploy-check-interval>20000</auto-deploy-check-interval>

</auto-deploy>

<deployment-target>

<target>

<engine-container-name>jeus6_container1</engine-container-name>

</target>

</deployment-target>

</application>

자세한 설명은 “JEUS Applications & Deployment 안내서”의 “제3장 애플리케이션 작성 및 Deploy” 부

분을 참조한다.

● generated 디렉터리 구조 변경

application을 컴파일할 때 생성되는 파일들에 대하여 webhome의 컨테이너 디렉터리 아래에 _generated_

디렉터리 하위에 생성하도록 수정하였다(기존에는 exploded 모듈에 대해서는 container 디렉터리가 아

닌 그 디렉터리 자체에 파일을 생성하였다). 이로써 read-only 디렉터리를 디플로이 할 수 없던 문제가

수정되었다.

자세한 경로는 다음과 같다.

– application(.ear) : JEUS_HOME/webhome/container_name/_generated_/j2ee-apps/applica

tion_name/module_name/

– standalone-module(.jar, war 등) : JEUS_HOME/webhome/container_name/_generated_/j2ee-mod

ules/module_name/

generated 디렉터리를 별도로 생성함으로써 read-only 디렉터리를 디플로이 할 수 없던 문제가 수정되

었다.

● 여러 엔진 컨테이너에 Exploded 모듈 디플로이 가능하도록 변경

Exploded 모듈에 대하여 여러 엔진 컨테이너에 디플로이가 가능하도록 수정하였다.

제8장 JEUS 6.0 Fix#2 123

Page 142: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

8.3.7. Tool

● appcompiler에서 -client 옵션의 동작 방식 변경

기존 appcompiler -client <stub-file> <application-file>을 통해 나오는 stub-file은 오직 generated 된 stub

이나 skeleton을 담아서 준다. 실제로는 EJB 호출을 위해서는 위 stub file 이외에도 각종 interface class

등이 필요하다. 그래서 appcompiler에서 생성된 client stub이 EJB 호출에 필요한 모든 class를 갖게 하

도록 수정하였다.

8.3.8. WebAdmin

● WebAdmin 온라인 도움말 보강 및 매뉴얼의 모니터링 부분 추가

자세한 설명은 WebAdmin 온라인 도움말과 “JEUS WebAdmin 안내서”의 “제5장 모니터링” 부분을 참

조한다.

124 JEUS Release Note

Page 143: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

제9장 JEUS 6.0 Fix#1

본 장에서는 JEUS6 Fix#1에서의 버그 패치, 기능 변경, 추가사항에 대해서 설명한다.

9.1. 버그패치

9.1.1. WebContainer

● charset Encoding 관련 버그 수정

pageEncoding 설정이 없는 경우 contentType의 charset 인코딩이 jsp 페이지 인코딩과 response 인코

딩에 반영되지 않던 버그를 수정하였다.

– pageEncoding이 없으면 contentType의 charset으로 jsp 페이지를 읽도록 한다.

– pageEncoding만 있고 contentType 설정이 없을 경우 pageEncoding을 contentType의 charset에 반

영하도록 한다.

● accesslog의 파라미터 값에 대한 한글 깨지는 현상 수정

get 방식의 요청에서 파라미터 값이 한글일 경우 accesslog에 파라미터 값의 한글이 깨지는 버그를 수

정하였다.

● jsp 페이지를 응답 encoding으로 변환하지 못할 경우의 버그 수정

JSP의 결과를 해당 페이지의 응답 encoding으로 변환하다 변환되지 않는 문자가 있어서 에러가 발생하

면 해당 문자뒤로 jsp 출력이 되지않는 버그가 수정되었다.

● JDK1.5 API 관련 버그 수정

JDK5에서 getServletContext().getResource()가 리턴한 URL을 URI로 변경하는 경우 path가 null이 되

는 버그가 수정되었다.

<예제>

URL url = getServletContext().getResource(request.getServletPath());

out.println(url.toURI().getPath());

9.1.2. JDBC

● Memory leak 관련 버그 수정

다음과 같은 경우에 Memory leak이 발생할 가능성이 있었으나, 이를 발생하지 않도록 수정하였다.

제9장 JEUS 6.0 Fix#1 125

Page 144: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– datasource에 대해서 reconfig할 경우

– enable-wait가 false이거나 설정이 되어 있지 않을 경우 disposable connection이 사용될 수 있는데,

이 disposable connection이 사용되었을 경우

– connectionpool에 대한 resizing이 일어났을 경우

– dba-delegation이 사용될 경우

● DB2 관련 DataSource 관련 버그 수정

DB2에 DataSource를 연동해서 사용시에 ClassCastException이 발생하던 버그를 수정하였다.

9.1.3. JMS

● session.close() 호출할 때 session MBean이 사라지지 않는 버그 수정

Connection이 살아있는 상태에서 Session을 create, close를 반복할 때, Session MBean이 사라지지 않

아 OutOfMemory에러가 발생하던 버그를 수정하였다.

● 여러 XA를 실행할 때 Deadlock 발생하는 버그 수정

여러 XA가 동시에 실행되고 있을 때 만약 한 트랜잭션이 데이터베이스 lock을 소유하고 있고 다른 트랜

잭션들은 JMS 스레드들을 모두 점유한 채 이 lock을 기다리고 있는 상황이라면, 현재 lock을 소유한 트

랜잭션은 다음 단계를 진행하지 못하고 다른 트랜잭션들은 이 트랜잭션이 종료하기를 기다리게 되어

deadlock 상태로 빠지게 되는 현상을 수정하였다.

● JMS 엔진이 시작될 때 NPE발생하는 버그 수정

JMS 엔진이 시작될 때 시작이 실패하여 shutdown이 실행하던 중 초기화 되지 않은 Storage를 접근하

여 NullPointerException 발생하는 버그를 수정하였다.

● pending message를 requeue할 때 NPE발생하는 버그 수정

pending message가 존재하는 Queue에 AsyncReceiver가 대기중 일 때 pending message를 requeue

시키면 NPE발생하는 버그를 수정하였다.

9.1.4. WebService

● WebService OneWay 호출할 때 발생했던 NullPointerException 버그 수정

'nodatabinding' 옵션을 사용하여 개발된 web service에서 One way 형태로 호출할 때 서버 단에서 Null

PointerException이 발생하던 버그가 수정되었다.

● WebService 수행할 때 발생하던 multipart/related 관련 에러 수정

WebService 수행할 때 Response message 중 'Content-Type'의 optional parameter인 'start'의 value가

quoated-string이 아닐 경우에도, value를 quoated-string으로 변화하여 처리 가능하도록 하였다.

126 JEUS Release Note

Page 145: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

9.1.5. UDDI

● UDDI DB connection 관련 버그 수정

UDDI를 사용하지 않는 경우 해당 DB connection이 idle 상태로 돌아가지 않던 버그를 수정하였다.

9.1.6. EJB

● http-invocation이 설정되어 있을 경우, port 설정이 적용되지 않는 현상 수정

EJBMain.xml에 http-invocation이 설정되어 있는 경우, jeus-ejb-dd.xml에서 지정한 port의 설정이 무시

되는 현상과 여러 EJB의 port 값이 동일할 경우 BindException이 발생하는 현상이 수정되었다. 이 문제

는 모두 http-invocation이 설정되어 있을 때 발생하는 것으로, http-invocation이 설정되어 있지 않다면

모두 정상 동작한다.

● Passivation 처리된 Session 정보의 Destory 과정 수정

Passivatation된 Session 정보가 Destroy 될 경우, session 의 attribute나 object 정보가 제대로 복원되지

않고 destory 되던 현상을 수정하였다.

● EJB fail-over 대상 Exception 목록 수정

EJB container가 요청받은 EJB에 대해서 서비스를 제공할 수 없을 때 EJBServerAlreadyDownException

을 던지도록 변경하고, EJB fail-over 대상 Exception에 포함시켰다.

● Transaction 종료 후 EJB를 호출할 때 발생하는 Exception 수정

Transaction 범위 안에서 rollback 처리된 Entity bean을 Transaction 종료 후 호출할 때 JeusContainerEx

ception을 내지 않고 NoSuchObjectException이 발생하도록 수정하였다.

● <idempotent-method><method-name> 태그 관련 사항 수정

– jeus-ejb-dd.xml 파일에 EJB Clustering 설정을 할 경우, <idempotent-method>를 지정하기 위한

method-name 태그에 대한 처리를 제대로 하지 못하던 문제를 수정하였다.

– EJB Descriptor 파일과 Annotation에서 동시에 idempotent-method을 설정할 경우, Descriptor 파일의

내용으로 Annotation 설정을 대체하는 과정에서 발생하던 문제를 수정하였다.

– EJB Descriptor 파일에서 idempotent-method의 이름을 지정할 경우, Annotation에서 설정된 idempotent-

method 설정 중 EJB descriptor에서 지정된 method name으로 시작하는 모든 method의 설정을 대체

하는 문제를 수정하였다.

9.1.7. Deployment

● Deployment 관련 버그 수정

– 컨테이너가 2개 이상일 때 deploy할 경우 as옵션을 사용하면 에러가 발생하는 버그를 수정하였다.

– <keep-generated>태그가 작동하지 않던 버그를 수정하였다.

제9장 JEUS 6.0 Fix#1 127

Page 146: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– jeusadmin에서 -n옵션으로 undeploy, stop, applist 시도할 때 NullPointerException 발생하던 버그를

수정하였다.

9.1.8. Tool

● appcompiler 관련 버그 수정

– ear 을 appcompiler로 compile할 때 작업 디렉터리가 남아있는 현상을 수정하였다.

– "."이 파일명에 포함되어있는 war모듈을 appcompiler가 수행하면 실패하던 버그를 수정하였다.

– applicationxml의 잘못된 문법이나 정보가 있는 ear모듈을 appcompiler할 때 작업 디렉터리가 남아있

던 버그를 수정하였다.

– keep옵션이 작동하지 않던 버그를 수정하였다.

– application.xml 이 없는 EAR모듈에 대한 appcompiler을 지원한다.

9.2. 기능추가

9.2.1. WebContainer

● servlet response를 gzip으로 압축하여 서비스하는 기능 추가

servlet response에 대하여 데이터 크기가 설정한 값보다 클 경우 데이터를 gzip으로 압축해서 보내주는

기능이 추가되었다.

– webtob와 http listener에서만 지원되며 각 listener 태그 아래에 <compression> 태그로 설정하여 사용

할 수 있다.

<설정 예>

<http-listener>

...

<compression>

<min-size>50000</min-size>

<exclude-user-agent>gozzilla,traviata</exclude-user-agent>

<mime-type>text/html,text/plain,image/gif,image/jpg</mime-type>

</compression>

...

</http-listener>

– <min-size>는 압축하려는 데이터의 최소 크기이며, 보내려는 데이터의 크기가 이 설정 값 이상일 경

우에만 압축하게 된다.

– <exclude-user-agent>는 압축기능을 사용하지 않고자 하는 UserAgent를 설정하며, comma로 구분하

여 여러 개를 설정할 수 있다.

128 JEUS Release Note

Page 147: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– <mime-type>은 압축하고자 하는 MimeType을 지정하며, 설정하지 않을 경우에 기본적으로 text/html,

text/xml, text/plain을 지원한다.

9.2.2. JMS

● NIO기능 추가

JMS Service Channel에서 nio를 사용할 수 있도록 기능이 추가되었다. 이 기능을 사용하려면 JMS

Main.xml에서 blocking-socket 태그를 false로 설정한다. 이에 대한 설명은“JEUS MQ 안내서”의 “5.3.1.

서비스 채널 설정” 부분을 참고한다.

● FlowControl기능 추가

Queue나 Durable Subscriber에 MessageListener가 등록되어 있으면 Destination에 메시지가 도착하자

마자 Consumer에 보내지므로 클라이언트가 이 메시지들을 빨리 처리하지 않으면 클라이언트 메모리

에 쌓이게 되어 OutOfMemory에러가 발생할 수 있다. 자세한 설명은“JEUS MQ 안내서”의 “5.4.5. 메시

지 흐름 제어 설정” 부분을 참고한다.

9.2.3. WebService

● WebService Console Tool 기능 강화

wsdl2java Console Tool에 -ddgen 옵션이 추가되었다. 이 옵션은 -outputmapping 옵션과 함께 사용해

야 하며, web.xml과 webservices.xml을 생성한다.

<예제>

$>wsdl2java -gen:client -d ./build/classes -package echo -compile

-outputmapping Doclit-mapping.xml -ddgen ./src/conf/DocLitEchoService.wsdl

● JAX-WS 웹 서비스에서 스트리밍(Streaming) 방식의 첨부 파일 처리방법 추가

JAX-WS 웹 서비스에서 첨부 파일을 포함하는 SOAP 메시지를 스트리밍 형태로 송/수신 하는 방법을

추가하였다. 자세한 설명은 “JEUS Web Service 안내서”의 “10.4. 스트리밍 방식으로 첨부 파일을 처리

하는 방법” 부분을 참조한다.

9.2.4. WebAdmin

● MBean 모니터링 기능 보완

기존에 있던 MBean 모니터링의 User Interface를 개선하여 사용 편의성을 높였다. MBean 모니터링은

JEUS JMX서버를 사용하여 각 MBean의 정보를 애플릿창에서 그래프로 출력한다. 자세한 사용법은

“JEUS WebAdmin 안내서”의 “5.2. MBean 모니터링” 부분을 참고한다.

제9장 JEUS 6.0 Fix#1 129

Page 148: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

9.2.5. EJB

● Work Area 기능 추가

실행중인 스레드 및 이와 관련된 스레드에서 컨텍스트를 공유하기 위한 WorkArea 기능을 추가하였다.

이와 관련된 내용은“JEUS EJB 안내서”의 “12.1. Work Area 서비스”를 참조한다.

● Session Replication 모드 설정 기능 추가

EJB가 JEUS 세션 매니저에 세션 복제를 요청하는 시점을 조정하기 위한 기능을 추가하였으며, 이를

사용하기 위하여 '@Replication' 어노테이션 및 <replication>태그가 추가하였다.

● @CreateIdempotent 어노테이션, <create-idempotent> 태그 추가

@Idempotent 어노테이션의 statefulIdempotentCreate 속성을 삭제하고 이를 @CreateIdempotent 어노

테이션 및 <create-idempotent> 태그로 대체하였다.

● useOldSerialVersionUID 시스템 프로퍼티 추가

'jeus.util.JeusException.useOldSerialVersionUID' 시스템 프로퍼티를 추가하고, 이것을 true로 설정할

때 JEUS fix 21 이상 및 JEUS 6 version에서 JEUS 5 fix 20 이하의 version과 통신하면서 serialVersionUID

관련 에러가 발생하지 않도록 할 수 있는 기능을 추가하였다.

9.2.6. Tool

● appcompiler를 수행할 때 exploded 모듈 지원

이전 fix 버전에서 지원하지 않던 appcompiler로 exploded모듈의 컴파일을 지원한다.

9.2.7. JDBC

● DataSource 설정관련 기능추가

DataSource 설정 중 vendor 항목에 tibero를 추가하였고, WebAdmin에서도 tibero 항목이 추가되었다.

9.3. 변경사항

9.3.1. JMS

● JMS XA 테이블 element추가

JMS의 XAResource상태를 저장하기 위한 테이블이 추가 되었다.

● jmsadmin의 recover, detach 명령 deprecated

jmsadmin의 recover, detach명령을 사용할 때 NPE발생 및 XA지원의 이유로 deprecated되었다.

130 JEUS Release Note

Page 149: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

기존 다른 broker에서 사용하던 embedded db는 JMSMain.xml의 jms-main/storage/embedded/path 태

그에 경로를 설정하면 attach가 가능하므로, 기존 recover, detach등의 명령을 대신할 수 있다.

9.3.2. WebContainer

● JSP에서 생성되는 java, class 파일 저장 위치 변경

JEUS 5에서는 exploded로 디플로이한 경우 JSP에서 생성되는 파일의 위치가 컨테이너에 관계 없이

동일하게 WEB-INF/.warjspwork를 사용했지만 JEUS 6에서는 VM별로 구분하도록 변경되었다.

JEUS 5의 WAR로 디플로이한 경우와 유사하게 JEUS_HOME\webhome\.generated\.warjspwork 아래

에 컨테이너명과 컨텍스트 패스로 구분해서 파일을 위치시킨다.

JEUS 6에서는 exploded와 WAR 구분 없이 동일한 위치에 JSP에서 생성된 파일을 저장하도록 변경하

였다.

VM별로 생성 파일 위치를 구분했기 때문에 동일한 JSP를 여러 컨테이너에 동시에 호출한 경우 발생하

는 문제를 해결할 수 있다.

WEBMain.xml과 jeus-web-dd.xml에 jsp-work-dir, compile-output-dir을 설정한 경우에도 지정한 디렉터

리 아래에 컨테이너명과 컨텍스트 패스로 구분해서 파일을 생성한다.

자세한 내용은“JEUS Web Container 안내서”의 “3.3.3. JSP 엔진 설정” 부분을 참고한다.

● 디플로이할 때 jsp 컴파일 기능 삭제

디플로이할 때 Web application의 JSP 페이지들을 프리컴파일하는 기능이 제거되었다.

9.3.3. Deployment

● jeusadmin에서 deploy할 때 classloading옵션 변경

jeusadmin에서 deploy할 때 기존의 isolated옵션을 삭제하고 classloading 옵션이 추가되었다. 기본값은

ISOLATED이다.

9.3.4. WebAdmin

● “어플리케이션 배치-파일업로드” 동작 방식 변경

“어플리케이션 배치-파일업로드”에서 기존에는 모듈을 원하는 폴더에 두고, 디플로이 단계까지 지원을

했다. 이번에는 모듈만 원하는 폴더에 두는 것으로 동작 방식을 변경했다.

9.3.5. Server

● 엔진 단위 boot/down 기능 제거

jeusadmin이나 WebAdmin에서 엔진별로 boot하거나 down 하는 기능이 제거되었다.

제9장 JEUS 6.0 Fix#1 131

Page 150: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94
Page 151: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

제10장 JEUS 6.0

본 장에서는 JEUS 6.0의 주요 기능과 변경 사항, 모듈별 설정의 변경 사항에 대해 설명한다.

10.1. 주요 기능 사항들

10.1.1. 개요

JEUS 6에서는 Java EE 5의 주요 기능인 Meta Annotation과 Dependency Injection을 완벽히 지원함으로

써, 개발 생산성을 획기적으로 향상 시켰다. 또한 Java EE 5에서 향상된 여러 기술을 사용하여, 보다 안정

적인 환경을 제공한다.

10.1.2. Specification 변경

JEUS는 최신 버전 JEUS 6으로 발전하면서 많은 신기술과 새로운 스펙이 적용되었다. 특히 Java EE 5부

터 추가된 Annotation을 완벽히 지원해서, 개발 생산성을 획기적으로 향상시켰다.

[표 10.1]에서는 JEUS 4.2에서부터 JEUS 6에 이르기까지의 적용되는 J2EE 스펙을 간단하게 보여준다.

스펙의 내용에 따른 변경 사항에 대해서는 각각의 명시된 스펙을 참고한다.

[표 10.1] JEUS에서 지원하는 Specification

JEUS 6JEUS 5JEUS 4.2Spec

Java EE 5J2EE 1.4J2EE 1.3J2EE

WebtoB 4.1WebtoB 3.1.6WebtoB 3.1.6WebServer

1.0/1.11.0/1.11.0/1.1HTTP

1.11.11.1CGI

3.x/4.x/5.x3.x/4.x3.x/4.xPHP

ssl2/ssl3/tls1ssl2/ssl3/tls1ssl2/ssl3/tls1SSL

2.x/3.02.12.0 (2.1 일부분)EJB

1.0--Java Persistence API

지원지원지원RMI-IIOP

1.21.1-Deployment API

2.12.01.2JSP

제10장 JEUS 6.0 133

Page 152: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

JEUS 6JEUS 5JEUS 4.2Spec

2.52.42.3Servlet

1.2--JSF

1.2--JSTL

1.11.0.1B1.0.1BJTA

1.01.01.0JTS

1.11.11.1JMS

1.2.11.2.11.2.1JNDI

3.03.03.0JDBC

1.0.11.0.11.0.1JAAS

1.51.51.0JCA(Connector)

1.31.1/1.21.1/1.2SAAJ

1.01.0N/AJACC

1.1/1.21.1/1.21.1SOAP

1.11.11.1WSDL

2.0/3.02.0/3.02.0UDDI

1.11.11.0JAX-RPC

2.1--JAX-WS

2.0--Web Service Metadata

1.0--WS-Addressing

1.1--WS-Reliable Messaging

1.0/1.11.0-WS-Security

1.0--WS-Policy

1.2--WS-Security Policy

1.3--WS-Trust

1.3--WS-Secure Conversation

1.0--WS-Policy Attachment

1.0.21.0.2-JAF

2.11.0-JAXB

1.21.21.0JAXP

1.01.0-JAXR

1.01.01.0XSLT

1.0.21.0.2-JAF

134 JEUS Release Note

Page 153: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

JEUS 6JEUS 5JEUS 4.2Spec

지원지원-Java IDL API

지원지원미지원OTS

지원지원지원IDE Tool

미지원JEUSBuilderJManagerGUI Tool

WebAdminWebAdminWebAdminWeb Tool

1.11.0-J2EE Management

Console Tool, WebAd

min

Console Tool, WebAd

min

Jmanager, WebAdmin

Console ToolMonitoring Tool

5.0/6.01.4/5.01.3/1.4JDK

10.1.3. JEUS Server

10.1.3.1. 공유 라이브러리(Shared Library) 기능 추가

공유 라이브러리는 클래스 라이브러리를 여러 Application에서 공유해서 사용하도록 하는 기능이다. 기존

의 JEUS_HOME\lib\application 디렉터리와 차이점은 JEUS 전체에 영향을 미치지 않고, Application에서

설정해서 사용할 수 있다는 점이다.

만약 JSF 1.1을 사용하는 Application과 JSF 1.2를 사용하는 Application이 있을 경우, JSF 1.1과 1.2를 공

유 라이브러리로 추가하고 Application에서 선택해서 사용하면 서로간의 충돌 없이 동작하게 된다.

자세한 내용은 “JEUS Applications & Deployment 안내서”의 “1.2. 공유 라이브러리(Shared Library)” 과

“JEUS Web Container 안내서”의 “6.3.3. Shared Library에 대한 레퍼런스 추가”의 "JSF1.2, JSTL1.2 라이

브러리 설정"을 참조한다.

10.1.3.2. Auto deploy 기능 강화

기존에는 deploy_home을 통해서만 Auto deploy가 가능했었다. 그러나 JEUSMain.xml의 <application>

태그로 모듈별 Auto deploy가 가능하도록 하는 기능이 추가되었다.

..

<application>

<absolute-path>d:\jeus6\webhome\app_home</absolute-path>

<name>hello</name>

<path>hello.jar</path>

<deployment-type>COMPONENT</deployment-type>

<deployment-target>

<target>

<node-name>jeus6</node-name>

</target>

</deployment-target>

<classloading>ISOLATED</classloading>

제10장 JEUS 6.0 135

Page 154: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

<class-ftp-unit>JAR</class-ftp-unit>

<auto-deploy>

<check-absolute-path>true</check-absolute-path>

<auto-deploy-check-interval>10000</auto-deploy-check-interval>

</auto-deploy>

</application>

...

자세한 내용은 “JEUS Applications & Deployment 안내서”의 “3.5. AutoDeploy 설정 방법”을 참조한다.

10.1.3.3. Engine Container 부팅 여부 설정 기능

일반적으로 JEUS가 부팅될 때, 모든 Engine Container도 부팅하게 된다. 여기에 Engine Container가 부

팅될지 여부를 설정할 수 있다. 부팅이 되지 않도록 했더라도 부팅 후에 WebAdmin을 통해서 컨테이너를

부팅시킬 수 있다.

10.1.3.4. 다중 로거 기능 추가

JEUS Manager나 Engine Container에 여러 개의 로거를 등록할 수 있게 되었다. 이로써, 필요한 로그를

별도로 분리해서 로깅할 수 있게 되었다. 다음의 예제는, JEUS의 기본 로깅은 SEVERE 레벨로,

jeus.servlet.connection과 jeus.transaction 로거는 FINE 레벨로 로깅하는 설정이다.

..

<system-logging>

<name>jeus</name>

<level>SEVERE</level>

</handler>

</system-logging>

<system-logging>

<name>jeus.servlet.connection</name>

<level>FINE</level>

</system-logging>

<system-logging>

<name>jeus.transaction</name>

<level>FINE</level>

</system-logging>

...

자세한 내용은 “JEUS Server 안내서”의 “제11장 Logging”을 참조한다.

10.1.3.5. 콘솔 툴의 통합

기존에 용도 별로 따로 제공되던 콘솔 툴이 jeusadmin 하나로 통합되었다.

jeusadmin과 jmsadmin에 대한 내용은 각각 “JEUS Reference Book”의 “4.2. jeusadmin”과 “JEUS Reference

Book”의 “4.3. jmsadmin”을 참고한다.

136 JEUS Release Note

Page 155: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

10.1.4. EJB

10.1.4.1. 빠른 EJB Deployment

EJB 3.0을 사용할 경우 Stub/Skeleton을 생성하지 않고 빠르게 deploy할 수 있다.

10.1.4.2. JEUS RMI 지원

기존 JDK의 RMI가 아닌 JEUS 고유의 프로토콜을 사용하는 RMI를 사용할 수 있다. 최신 NIO 기술을 사

용함으로써, 대용량의 EJB Client 호출을 효율적으로 처리할 수 있다.

10.1.4.3. Stateful Session Bean의 Fail over 기능 강화

Stateful Session Bean에서 기본적으로 Session Manager를 사용하도록 하여, EJB passivation이나 EJB

Clustering에서 보다 완벽한 Fail over가 가능하다.

Fail over에 대한 자세한 설명은 “JEUS EJB 안내서”의 “제6장 EJB 클러스터링”과 “JEUS EJB 안내서”의 “제

7장 Session Bean”을 참조한다.

10.1.4.4. EJB Lifecycle timeout 일괄 적용 옵션 추가

모든 EJB의 passivate-timeout과 disconnect-timeout을 일괄적으로 적용하는 시스템 프로퍼티가 추가되

었다.

추가된 프로퍼티는 다음과 같다.

● jeus.ejb.all.passivate

● jeus.ejb.stateful.passivate, jeus.ejb.entity.passivate

● jeus.ejb.all.disconnect

● jeus.ejb.stateful.disconnect, jeus.ejb.entity.disconnect

각 프로퍼티에 대한 자세한 설명은 “JEUS Reference Book”의 “1.9. EJB 시스템 프로퍼티”를 참조한다.

10.1.5. Web Container

10.1.5.1. Non Blocking I/O 기반의 HttpListener 와 TCPListener

기존 Blocking HTTP Listener 에서는 요청 처리 스레드가 커넥션과 일대일로 대응되는 관계여서 동시에

처리할 수 있는 커넥션 개수가 worker thread 수만큼 제한되는 문제가 있었다. JEUS 6 에서는 JDK NIO

(Non-blocking I/O)에 기반한 HTTP Listener를 제공하고 있다. 따라서 많은 커넥션을 적은 수의 스레드로

안정적으로 처리할 수 있어서 시스템 리소스 사용을 줄일수 있다. HTTP Listener 뿐 아니라 TCP Listener

또한 NIO 기반의 Listener를 지원한다.

NIO Listener 의 사용은 기존의 Listener 설정에 <use-nio>true</use-nio> 태그를 추가하는 것만으로 간단

히 가능하다. 자세한 설명은 “JEUS Web Container 안내서”의 “4.3.1. HTTP, TCP, HTTPS 리스너 설정”을

참조한다.

제10장 JEUS 6.0 137

Page 156: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

10.1.5.2. HTTP response caching / JSP Caching

Servlet Filter를 사용하여 HTTP 응답 전체를 Caching하는 기능이 추가되었다. 빈번하게 요청되는 정적 컨

텐츠에 대해서 사용하면 Caching되어 있는 데이터를 사용하게 되므로 웹 애플리케이션의 전체적인 응답

시간을 향상시킬수가 있다.

태그 라이브러리(tag library)를 이용하여 JSP 내의 일부분을 Caching하는 기능이 추가되었다. 전체 페이

지 중에서 부분 변경이 발생하는 JSP 페이지를 요청할 때 적합하다. 최초 작성 이후 변경되지 않거나, 변

경 빈도수가 적은 부분을 JEUS WebCache에 저장하여 JSP 요청할 때 Caching되어 있는 데이터를 이용

함으로써 웹 애플리케이션의 성능을 향상할 수 있다.

자세한 설명은 “JEUS Web Container 안내서”의 “제8장 JEUS WebCache”를 참조한다.

10.1.5.3. Reverse Proxy

외부의 요청을 내부 서버에 전달하고 해당 응답을 다시 외부로 전달해주는 Reverse Proxy 기능이 추가되

었다. 자세한 설명은 “JEUS Web Container 안내서”의 “제9장 Reverse Proxy”를 참조한다.

10.1.5.4. 모듈별 Character Set Encoding 설정 가능

jeus-web-dd.xml을 사용하여 애플리케이션(웹 모듈)별로 request, response encoding을 설정하는 기능이

추가되었다. WEBMain.xml의 ContextGroup에서도 기존과 같이 설정할 수 있으며, 둘 다 설정된 경우 jeus-

web-dd.xml 설정이 우선한다. encoding 설정이 WEBMain.xml의 ContextGroup에서만 가능하여 일괄 적

용될 수밖에 없었던 불편함이 이 기능이 추가됨으로써 해소되었다.

10.1.6. Web Service

10.1.6.1. JAX-WS 2.1 지원

별도의 Deployment Description을 작성할 필요없이, 기존의 클래스에 간단히 Metadata Annotation을 추

가하는 것으로 Web Service를 개발할 수 있게 되었다. 또한 바이너리 파일 전송 등에서 효율적인 기능을

제공하며, 비동기 Web Service 기능을 제공한다.

10.1.6.2. SOAP과 Java간의 타입 매핑 지원

JAXB 2.1 프레임워크을 이용하여 SOAP과 Java 간의 타입 매핑을 제공함으로써, 다양한 형태의 스키마

타입으로 정의되는 SOAP 메시지를 빠른 속도로 처리 가능하게 되었다.

10.1.6.3. XML/HTTP 바인딩 지원

SOAP/HTTP 뿐만 아니라 XML/HTTP 기능을 제공하여, Web Service 제공자와 소비자 간에 주고받는 메

시지를 유연하게 처리할 수 있게 되었다. 이를 바탕으로 RESTful Web Service도 지원한다.

10.1.6.4. 다양한 WS-* Stack 지원

WS-ReliableMessaing, WS-Security, WS-Policy, WS-Addressing 등 부가적인 WS 확장 Stack을 지원하

여, 다양한 환경에서 최적을 솔루션을 제공하고 있다.

138 JEUS Release Note

Page 157: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

10.1.7. JMS

10.1.7.1. Non-Acknowledge 모드 추가

Session을 생성할 때 acknowledge모드를 jeus.jms.JeusSession.NONE_ACKNOWLEDGE로 설정할 수

있다.

이 모드는 producer는 send할 때 서버로부터 ack을 수신하지 않고, consumer는 receive할 때 서버로 ack

을 전송하지 않기 때문에 빠른 속도로 메시지를 주고받을 수 있다.

자세한 내용은 “JEUS MQ 안내서”의 “2.3.6. NONE_ACKNOWLEDGE 모드”를 참조한다.

10.1.7.2. JMS Message 타입으로 File Message 추가

JMS를 통해서 대용량의 파일을 보낼 수 있는 기능이 추가되었다. JMS는 메시지를 메모리에 올려서 송수

신 하기 때문에, 메시지 크기가 클 경우 OutOfMemoryError가 발생할 수도 있지만, FileMessage는 파일의

내용을 블록 단위로 전송하기 때문에 이와 같은 문제를 피할 수 있다.

FileMessage의 구조는 다음과 같다.

public interface FileMessage extends javax.jms.Message

{

public java.net.URL getURL();

public void setURL(javax.net.URL url) throws MessageNotWriteableException;

public boolean isURLOnly();

public void setURLOnly(boolean urlOnly);

}

10.1.7.3. ConnectionFactory Clustering의 Active-Standby Fail-Over 추가

Active-Standby기능은 2개의 JMS가 clustering되어 있을 때, Active로 설정된 JMS만 서비스하게 하고,

Active JMS가 down되었을 때에만 Standby JMS로 서비스하도록 하는 Fail-Over 기능이다.

이 기능을 제어하기 위해서 jmsadmin 콘솔 툴에 takeover, recover, cluster 명령이 추가되었다.

10.1.8. Session Server

10.1.8.1. 중앙 세션 서버 메모리 관리 기능 추가

중앙 세션 서버의 경우 모든 컨테이너들의 세션이 중앙으로 집중되어 전체 세션 크기가 클 경우 메모리를

감당하지 못하고 OutOfMemoryError가 발생할 수 있다. 이럴 경우 logical한 세션 메모리에 한계치를 적용

하여 그 이상이 될 경우 passivation을 시키는 기능이 추가되었다. 다음은 관련 시스템 프로퍼티이다.

● jeus.sessionserver.memory.max

● jeus.sessionserver.memory.passivationratio

● jeus.sessionserver.memory.enablegc

제10장 JEUS 6.0 139

Page 158: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

자세한 내용은 JEUS Reference Book 및 “JEUS Server 안내서”의 절 10.2.1. “Session Manager의 메모리

관리”를 참조한다.

10.1.8.2. 분산 세션 서버 자동 백업 설정 기능 추가

분산 세션 서버에서 백업을 설정할 때 어떤 컨테이너의 어떤 엔진을 설정해야 할지 고민할 필요 없이 JEUS

에서 가장 적절한 백업 서버를 자동으로 선택하여 클러스터링 한다. 물론 특정 백업 서버를 원할 경우 강

제적으로 지정해 주는 기능은 제공된다. 자세한 내용은 “JEUS Server 안내서”의 절 10.3.1. “분산 세션 서

버의 백업 서버 선택 방식”을 참조한다.

10.1.9. JDBC

10.1.9.1. Statement Query Time 설정 추가

사용자가 DataSource의 Statement를 이용해서 Query를 실행했을 때, Query가 지정된 시간 동안 끝나지

않으면 SQLException을 던지는 기능이 추가되었다. 자세한 내용은 “JEUS Server 안내서”의 “8.3. JDBC

데이터 소스 설정”을 참조한다.

10.1.9.2. 주기적인 Check Qeury 실행 기능 추가

지정한 시간이 지나면 주기적으로 Check Query를 실행시키는 기능이 추가되었다. JEUS와 DBMS 간에

방화벽이 있을 경우, DB connection 유지 등을 위해서 사용할 수 있다. 자세한 내용은 “JEUS Server 안내

서”의 “8.3. JDBC 데이터 소스 설정”을 참조한다.

10.1.10. Security

10.1.10.1. JAAS Login Module 강화

Java의 표준 기능인 Java Authentication&Authorization Service 기능을 이용해서 JEUS의 권한 인증과 부

여 기능을 작성할 수 있다. 기존 JEUS에서 Custom 서비스를 제공하고 있으나, 다양한 JAAS 모듈 적용이

가능하게 됨으로써 보다 광범위한 서비스 개발이 가능하게 되었다. 자세한 내용은 “JEUS Security 안내

서”의 “제7장 JAAS 사용”을 참조한다.

10.1.10.2. LDAP/DB Realm Repository 지원

LDAP과 DB Realm을 이용한 User Authentication과 Authrization 기능이 제공된다. 특히 DB Realm의 경

우에는 성능 향상을 위한 Caching을 제공하므로, 빠른 성능을 제공한다. 자세한 내용은 “JEUS Security

안내서”의 “제7장 JAAS 사용”을 참조한다.

10.1.10.3. JEUS Default Security Manager 옵션 제공

JEUS의 AP에서 System.exit()와 같은 잘못된 수행에 대한 권한 체크를 기본으로 제공하는 Default Secu

rity Manager 옵션을 제공한다. 또한 JEUS에서 사용하는 포트의 동작을 로깅할 때도 사용된다.

140 JEUS Release Note

Page 159: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

Engine Container에 -Djeus.security.enable.default.manager=true를 넣는 것으로 간단히 지원된다. 자세

한 내용은 “JEUS Reference Book”의 “1.10. 보안 시스템 프로퍼티”를 참조한다.

10.1.11. WebAdmin

10.1.11.1. MBean 모니터링 기능 추가

JEUS의 MBean 내용을 모니터링하는 화면이 추가되었다.

10.1.11.2. 트랜잭션 모니터링 기능 추가

현재 진행 중인 트랜잭션의 ID와 트랜잭션 정보를 모니터링할 수 있다.

10.1.11.3. 스레드 모니터링 기능 추가

JEUS에서 사용하는 스레드의 개수와 풀 정보, 현재 동작 중인 스레드의 개수 등을 모니터링하는 기능이

추가되었다.

10.1.11.4. WebAdmin 도움말 변경

WebAdmin의 화면에 따라서 적합한 도움말이 제공되도록 하였다.

10.2. 변경 사항

10.2.1. JEUS Server

JEUS 6에서는 새로운 기능을 위한 디렉터리가 추가되거나, 필요없는 디렉터리는 삭제되었다.

전체적인 디렉터리 구조는 "JEUS 설치 및 시작하기"를 참고한다.

10.2.1.1. vhost.xml이 vhost.properties로 대체

JEUS의 가상 노드를 설정하는 파일이 vhost.properties로 변경되었다.

설정 형태는 다음과 같다.

● jeus.vhost.enabled

가상 호스트의 사용 여부를 지정한다. 기본값은 false이다.

● <가상노드명>=<호스트명>:<JEUS Baseport>

가상 노드로 지정할 호스트명과 JEUS Base Port를 지정한다.

다음은 실제 사용한 예제이다.

jeus.vhost.enabled=true

jeus6=johan:9736

제10장 JEUS 6.0 141

Page 160: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

10.2.1.2. Auto deploy 디렉터리의 이름 변경

이전 버전까지 deploy_home이었던, Auto deploy 디렉터리 이름이 autodeploy로 변경되어 보다 명확한 의

미 전달이 되도록 하였다.

10.2.1.3. ISOLATED 방식 Class Loader를 기본으로 변경

기존에 제공하던 2가지의 Class Loader 중 ISOLATED 방식이 기본 Class Loader로 변경되었다.

ISOLATED 방식은 애플리케이션별로 각각의 Class Loader가 독립적으로 생성되어 동작하는 방식이다.

그러므로 Servlet에서 EJB를 호출하기 위해서는 다음 2가지 중 하나를 사용해야 한다.

● Servlet 모듈의 WEB-INF\lib나 WEB-INF\classes에 EJB의 interface를 반드시 가지고 있어야 한다.

● Servlet 모듈과 EJB 모듈을 하나의 EAR 모듈로 묶어서 사용한다.

ISOLATED 방식의 Class Loader에 대해서는“JEUS Server 안내서”의 “1.5.1. Isolated Class Loader”를 참

고한다.

10.2.1.4. Apache Derby 제공

기존에 제공하던 HSQL DB 대신에 Apache Derby을 제공한다. Apache Derby에 대한 자세한 내용은

Apache Derby 사이트를 참고한다.

10.2.1.5. WS engine 디렉터리와 WSMain.xml 파일 삭제

JEUS WebServer를 띄위기 위해서 사용하던 WS engine 디렉터리와 그 설정 파일인 WSMain.xml이 제거

되었다. JEUS WebServer를 JEUS를 부팅할 때 기동시키려면 단지 JEUSMain.xml에서 ws engine만 등록

해 주면 되도록 변경되었다.

10.2.1.6. COM Bridge, CAS 지원 중단

Microsoft의 COM과 EJB 연동을 지원하는 COM Bridge와 타 언어 기반에서 EJB를 호출할 수 있도록 지원

하는 CAS는 더 이상 지원하지 않는다. 타 플랫폼과의 연동은 표준 Web Serivce를 통하는 방법이 훨씬 안

정적이기 때문이다.

10.2.2. EJB

10.2.2.1. EJB 3.0의 기본 Transaction Attribute가 Required로 변경

EJB 3.0 Specification에 따라서 EJB 3.0에서 특별히 Transaction Attribute를 지정하지 않았을 때는 기본

적으로 Required가 적용된다. 그러나 EJB 2.x에서는 호환성을 위해서 그대로 Supports가 적용된다.

기본 Transaction Atrribute를 변경하려면 다음 시스템 파라미터를 JEUSMain.xml의 <command-option>

에 적용해서 변경할 수 있다.

-Djeus.ejb.transaction.attribute.default=<Transaction Attribute>

142 JEUS Release Note

Page 161: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

10.2.3. Web Container

10.2.3.1. JSP 컴파일러의 JSP 문법 체크 기능 강화

오픈소스 웹 프레임워크를 보다 잘 지원하고 호환성 문제를 줄이기 위해서 톰캣 Jasper 기반의 JSP

Parser를 디폴트로 변경하였다. 이 Parser는 JSP 스펙과 동일한 수준에서 엄격하게 문법 체크를 하기 때

문에 기존 JSP Parser에서 지원한 비표준적인 문법을 사용한 경우 에러가 발생할 수 있다. 기존 웹 모듈을

업그레이드하지 않는 경우에는 jeus-web-dd.xml에 jeus.servlet.jsp.modern 옵션을 false로 설정해서 JEUS5

에 디폴트로 제공된 Parser를 사용할 수 있다. 자세한 내용은 “JEUS Web Container 안내서”의 “6.3.4. 하

위 호환성을 위한 Context 레벨의 추가 옵션 설정”을 참조한다.

10.2.3.2. JSP 배치 컴파일러 툴 통합

기존에 jspc2로 제공되던 JSP 배치 컴파일러 콘솔 툴은 appcompiler에 통합되었다.

appcompiler의 자세한 사용법은 “JEUS Reference Book”의 “4.4. appcompiler”를 참고한다.

jspc 배치 컴파일러는 그대로 제공되지만 deploy할 때 JSP 프리 컴파일을 지원하기 때문에 일반적인 경우

에는 사용할 필요가 없다. 이에 대해서는 “JEUS Web Container 안내서”의 “6.3.8. 배치 컴파일러를 사용

한 JSP 프리컴파일”을 참조한다.

10.2.3.3. Encoding 설정 변경

ContextGroup뿐 아니라 각각의 애플리케이션 단위로도 encoding 설정이 가능하도록 기능이 향상되었다.

WEBMain.xml 의 ContextGroup과 jeus-web-dd.xml에 동시에 설정될 경우 jeus-web-dd.xml 설정이 우선

한다. 또한 애플리케이션에서 설정한 encoding 값이 최우선으로 적용되는 것도 변경되었다. 기존에는

forced로 설정한 encoding이 priority가 가장 높았다.

<request-encoding> 태그와 <postdata-encoding> 태그가 <request-encoding>로 통합되었으며, <request-

url-encoding>이 추가되었다.

<response-encoding>은 변동이 없다. <request-url-encoding>은 HTTP header 의 Request line을 Parsing

할 때만 적용되는 encoding으로 jeus-web-dd.xml에서는 설정할수 없다.

자세한 내용은 “JEUS Web Container 안내서”의 “3.3.2. 인코딩 설정”을 참조한다.

10.2.3.4. 컨텍스트, 컨텍스트 그룹, 컨테이너별 세션 설정

기존 설정의 경우 오직 WEBMain.xml에서 컨텍스트 그룹 단위로 세션의 세부 설정이 가능했으나(타임아

웃 설정 제외) <session-config>설정을 통해 개별 컨텍스트 단위(jeus-web-dd.xml)로까지 세션의 세부 설

정을 적용할 수 있도록 하였다.

또한 세션 서버 설정을 하였다 하여 모든 컨텍스트들이 무조건 세션 클러스터링에 참여하는 것이 아니라

<distributable>설정을 통해 세션 클러스터링 참여 여부를 개별적으로 적용할 수 있다.

컨텍스트, 컨텍스트 그룹, 컨테이너별 세션 설정은 차례대로 우선 순위를 가지며 계층적으로 Override하

면서 사용될 수 있다.

자세한 내용은 “JEUS Web Container 안내서”의 “3.3.5. Session 설정”을 참조한다.

제10장 JEUS 6.0 143

Page 162: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

10.2.4. Session Server

10.2.4.1. 중앙식 세션 서버 설정 변경

이전 버전에서는 중앙식 세션 서버를 설정할때 JEUSMain.xml, WEBMain.xml, 시스템 프로퍼티 모두를

같이 사용하는 설정의 복잡함으로 많은 동작 오류를 경험했다.

이를 방지하기 위해 모든 설정은 JEUSMain.xml으로 통합하며 노드 클러스터링을 전제로 동작하도록 한

다.

JEUS 6.0에서 변경된 설정은 필수값을 요구하지 않으며 세션 서버의 상호 인식은 오직 노드 이름을 통하

여 가능하다(기존 세션 서버의 이름 지정 및 IP, Port 지정 대신 JEUS의 노드 이름을 이용).

자세한 내용은 “JEUS Server 안내서”의 “10.2.2. 중앙 세션 서버의 설정”을 참조한다.

또한 JEUS 5의 세션 서버 설정으로부터 JEUS 6의 세션 서버 설정으로 변경하려면 “JEUS Server 안내서”

의 “10.2.4. JEUS 5에서 JEUS 6로 설정 변환”을 참조한다.

10.2.4.2. 분산 세션 서버 설정 변경

기존 설정의 경우 백업 서버를 설정할 경우에 노드, 컨테이너의 Listen 포트 등 여러 가지를 고려해야 했고,

가장 적절한 백업 서버가 무엇인지 선택해야 하는 어려움이 있었다.

이를 해결하기 위해 특정 백업 서버 지정을 설정에서 제거하고 노드 클러스터링을 전제로 동작하도록 하

였으며, 자동으로 가장 적절한 백업 대상을 찾는 기능을 추가하였다.

자세한 내용은 “JEUS Server 안내서”의 절 10.3.1. “분산 세션 서버의 백업 서버 선택 방식” 및 “JEUS

Server 안내서”의 “10.3.2. 분산 세션 서버의 설정 ”을 참조한다.

또한 JEUS5의 분산 세션 서버 설정으로부터 JEUS 6의 분산 세션 서버 설정으로 변경하려면 “JEUS

Server 안내서”의 “10.3.3. JEUS 5에서 JEUS 6로 설정 변환”을 참조한다.

10.2.5. JDBC

10.2.5.1. Operation Timeout 제거

기존에는 Datasource의 connection이 일정 시간 동안 사용되지 않을 경우, Timeout을 발생하게 하는 Op

eration Timeout이 제공되었다. 그러나, DB에 따라서 오동작하는 경우가 많았으며, connection 유실이 발

생하기 때문에 이를 제거하었다. Operation Timeout 대신에 DBA Timeout 기능을 사용하길 권장한다. DBA

Timeout은 “JEUS Server 안내서”의 절 8.3.4. “DB Session Kill 기능 : DBA 위임 데이터 소스 (DBA Delegation

Datasource)”를 참고한다.

10.2.6. Tool

10.2.6.1. JEUSBuilder 제거

Annotation을 이용한 프로그래밍의 도입으로 JEUSBuilder는 더 이상 제공하지 않는다.

144 JEUS Release Note

Page 163: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

10.2.6.2. 콘솔 툴 통합

기존에서 용도별로 따로 제공되던 콘솔 툴이 jeusadmin 하나로 통합되었다. jeusadmin의 자세한 사용법

은 “JEUS Reference Book”의 “4.2. jeusadmin”을 참고한다.

10.2.6.3. Deployment Ant Task 변경

● 이름이 "distribute"에서 "deploy"로 변경되었다.

● onlyDistribute라는 프로퍼티가 추가되었다. 이 값이 true일 경우에는 Java EE 모듈을 distribute만하고

start하지 않는다. 기본값은 false로서, distribute와 start를 함께 실행한다.

● Ant로 실행시키기 전에 반드시 ANT_OPTS에 "-Djava.endorsed.dirs=<JEUS_HOME Path>/lib/en

dorsed"를 추가해야 한다.

이에 대한 자세한 설정 및 사용법은 “JEUS Reference Book”의 “5.3. EJB Ant Task”를 참고한다.

10.2.7. 디렉터리 변경 사항

10.2.7.1. 추가된 디렉터리

● Client에서 사용할 클래스를 모아놓은 JEUS_HOME\lib\client 디렉터리가 추가되었다.

● Shared library를 위한 JEUS_HOME\lib\shared 디렉터리가 추가되었다.

● XML 구현체의 호환을 위한 JEUS_HOME\lib\endorsed 디렉터리가 추가되었다. 이 디렉터리는 JEUS가

정상적으로 동작하기 위해서 반드시 필요한 파일들을 가지고 있으므로 변경하지 말아야 한다.

10.2.7.2. 변경된 디렉터리

● XML Schema 디렉터리가 기존 "JEUS_HOME\config\xsds"에서 "JEUS_HOME\lib\schemas\javaee"와

"JEUS_HOME\lib\schemas\jeus"로 분리 변경되었다.

● "JEUS_HOME\webhome\deploy_home"이 "JEUS_HOME\webhome\autodeploy"로 변경되었다.

10.2.7.3. Endorsed 디렉터리

"JEUS_HOME\lib\endorsed"디렉터리가 추가 되었다.

이 디렉터리에는 JEUS 6 런타임이 JDK 환경에 영향을 받지 않게 하기 위해 Java 런타임이 JDK 기본 클

래스들 보다 먼저 읽어들여야 하는 클래스들을 JAR 파일 형태로 묶여서 존재한다.

현재 포함된 라이브러리들은 다음과 같다.

● dom.jar(DOM API Level 3)

● jaxb-api.jar(JAXB API 2.1)

● jaxp-api.jar(JAXP API 1.3)

● jaxws-api.jar(JAX-WS API 2.1)

제10장 JEUS 6.0 145

Page 164: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

● sax.jar(SAX API 2.0.1)

● xalan.jar(Xalan/XSLTC Transformer Impl of JAXP RI 1.3)

● xercesImpl.jar(Xerces 2 Parser Impl of JAXP RI 1.3)

이 파일들을 임의로 변경하게 되면 JEUS 6 런타임에 문제가 발생할 수 있다.

10.2.8. 기타 변경 사항

10.2.8.1. JEUS 설정 XML에 버전 속성 추가

JEUS의 설정 XML에 다음과 같이 해당 Schema의 버전을 명시하도록 되었다. JEUS 6 에서 사용하는

Schema 버전은 6.0 버전이다.

<?xml version="1.0"?>

<jeus-system xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="6.0">

...

</jeus-system>

참고

JMSMain.xml의 경우에는 version 속성을 사용하지 않는다.

10.3. 모듈별 설정 변경 사항본 절에서는 JEUS의 모듈별 설정의 변경 사항을 정리한다.

10.3.1. EJB

● jeus-ejb-dd.xml

– <bean-list> 태그가 Optional로 변경되었다. EJB 3.0를 사용할 경우에는 <bean-list>없이 jeus-ejb-

dd.xml을 작성할 수 있다.

– <ejb11-compatible> 태그가 추가되었다. <module-info> 태그 하위에서 설정한다. 이 설정이 true이면

CMP의 ejb-jar.xml에서 cmp version을 설정하지 않았을 때, 1.1로 취급한다. 기본값은 false이다.

– <jeus-rmi> 태그가 추가되었다. <jeus-bean> 태그 하위에 설정한다. 이 설정이 true이면 EJB의 통신

을 JEUS RMI를 사용하게 된다.

– <mdb-resource-adapter-name>, <activation-config> 태그 위치가 변경되었다. 기존의 <mdb-resource-

adapter> 태그 아래에서 <jeus-bean> 태그 아래로 이동하였다.

– <file-db-info> 태그가 삭제되었다. Stateful Session Bean에서 Session Server를 사용하도록 변경되

었다.

146 JEUS Release Note

Page 165: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94

– <library-ref> 태그가 추가되었다. 이 태그를 사용해서 사용하고자 하는 공유 라이브러리를 지정할 수

있다. 제세한 내용은 “JEUS Applications & Deployment 안내서”의 “1.2. 공유 라이브러리(Shared Li

brary)”를 참조한다.

10.3.2. WebContainer

JEUS 6에서의 WebContainer는 JSP 2.1 및 Servlet 2.5를 지원한다. 환경 설정에 대한 변경 사항은 다음

과 같다.

● WEBMain.xml

– <session-cluster> 설정이 삭제되었다.

● jeus-web-dd.xml

– <docbase> 태그가 삭제되었다.

– <jndi-properties> 태그가 삭제되었다.

– <session-config> 설정이 WEBMain.xml에서 뿐만 아니라, jeus-web-dd.xml에서도 가능하게 되었다.

– <attach-stacktrace-on-error> 태그가 추가되었다. 이 값이 true일 경우, JEUS에서 보내주는 error page

에 stacktrace를 첨부한다. 기본값은 false이다.

– <encoding> 태그가 추가되었다. 인코딩 설정이 WEBMain.xml에서 뿐만 아니라, jeus-web-dd.xml에

서도 가능하게 되었다.

10.3.3. Security

Security에서는 설정 파일이 간소화되어 새로운 파일과 위치로 변경되었다.

● accounts.xml

– 기존 subject.xml 파일이 accounts.xml로 변경되었다.

– 위치는 기존과 동일한 JEUS_HOME\config\<node-name>\security\SYSTEM_DOMAIN이다. 자세한

내용은 “JEUS Security 안내서”의 “제2장 보안 시스템의 설정”을 참고한다.

● JEUSmain.xml

– 기존 master.xml, slave.xml로 분리되어 있던 보안 설정을 정리하여, JEUSMain.xml의 <security-

manager>로 통합하였다. 자세한 내용은 “JEUS Security 안내서”의 “제2장 보안 시스템의 설정”을 참

고한다.

제10장 JEUS 6.0 147

Page 166: JEUS Release Note - TmaxSoft · 2019. 4. 9. · 6.2.1. Server ..... 93 6.2.2. Webcontainer ..... 94