anylink - tmaxsoft · 안내서에 대하여 안내서의 대상 본 안내서는 tmax anylink®...

116
AnyLink 서버 안내서 AnyLink v4.0 Copyright © 2012 TmaxSoft Co., Ltd. All Rights Reserved.

Upload: others

Post on 05-Mar-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

AnyLink

서버 안내서

AnyLink v4.0

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

Page 2: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

Copyright Notice

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

대한민국 경기도 성남시 분당구 서현동 272-6 우)463-824

Restricted Rights Legend

All TmaxSoft Software (Tmax AnyLink®) and documents are protected by copyright laws and the Protection Act

of Computer 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.

이 소프트웨어(Tmax AnyLink®) 사용설명서의 내용과 프로그램은 저작권법, 컴퓨터프로그램보호법 및 국제 조약

에 의해서 보호받고 있습니다. 사용설명서의 내용과 여기에 설명된 프로그램은 TmaxSoft Co., Ltd.와의 사용권 계

약 하에서만 사용이 가능하며, 사용권 계약을 준수하는 경우에만 사용 또는 복제할 수 있습니다. 이 사용설명서의

전부 또는 일부분을 TmaxSoft의 사전 서면 동의 없이 전자, 기계, 녹음 등의 수단을 사용하여 전송, 복제, 배포, 2

차적 저작물작성 등의 행위를 하여서는 안 됩니다.

Trademarks

Tmax ProBus®, JEUS® and Tmax AnyLink® are a registered trademark of TmaxSoft Co., Ltd. Other products,

titles or services may be registered trademarks of their respective companies.

Tmax ProBus®, JEUS® and Tmax AnyLink®는 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”에 기재된 사항을 참고해 주십시오.

안내서 정보

안내서 제목: AnyLink 서버 안내서

발행일: 2012-11-09

소프트웨어 버전: AnyLink v4.0

안내서 버전: v2.1.1

Page 3: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

내용 목차

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

제1장 AnyLink 서버 소개 ........................................................................................................... 1

1.1. 개요 ............................................................................................................................ 1

제2장 환경설정 ........................................................................................................................... 3

2.1. C 엔진 환경설정 ........................................................................................................... 3

2.1.1. 환경변수 ........................................................................................................... 3

2.1.2. 환경 파일 설정 .................................................................................................. 4

2.2. Java 엔진 환경설정 ...................................................................................................... 8

2.2.1. 환경변수 ........................................................................................................... 8

2.2.2. 환경 파일 설정 .................................................................................................. 8

제3장 사전 수행 작업 ................................................................................................................ 13

3.1. C 엔진 구동 ................................................................................................................ 13

3.2. JMapper 구동 ............................................................................................................. 13

제4장 AMM .............................................................................................................................. 15

4.1. AMM 기능 .................................................................................................................. 15

4.1.1. 공유 메모리 관리 ............................................................................................. 16

4.1.2. 컴포넌트 부팅 처리 및 제어 .............................................................................. 16

4.1.3. 컴포넌트 모니터링 ........................................................................................... 16

4.1.4. 동적 디플로이 .................................................................................................. 17

4.1.5. 멀티 노드 디플로이 .......................................................................................... 17

4.2. AMM 설정 .................................................................................................................. 18

4.2.1. Tmax 환경 파일 ............................................................................................... 18

제5장 ADM ............................................................................................................................... 19

5.1. ADM 기능 .................................................................................................................. 19

5.1.1. 디플로이 ......................................................................................................... 19

5.1.2. 데이터베이스 조회 ........................................................................................... 20

5.1.3. C 매핑 코드 생성 ............................................................................................. 20

5.2. ADM 설정 .................................................................................................................. 20

5.2.1. Tmax 환경 파일 ............................................................................................... 20

제6장 스케줄러 ......................................................................................................................... 23

6.1. 스케줄러 기능 ............................................................................................................ 23

6.2. 스케줄러 설정 ............................................................................................................ 24

6.2.1. Tmax 환경 파일 ............................................................................................... 24

제7장 통계 집계 대몬 ................................................................................................................ 25

7.1. 개요 ........................................................................................................................... 25

7.2. 기능 ........................................................................................................................... 25

7.3. 설정 ........................................................................................................................... 26

7.3.1. Tmax 환경 파일 ............................................................................................... 26

AnyLink iii

Page 4: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

7.3.2. 수행시간 설정 .................................................................................................. 26

7.4. 결과 조회 ................................................................................................................... 26

7.4.1. ...................................................................................................................... 26

제8장 Mapper .......................................................................................................................... 27

8.1. 개요 ........................................................................................................................... 27

8.2. Mapper 매핑 기능 ....................................................................................................... 27

8.2.1. 조합 매핑(Concatenation) ................................................................................ 28

8.2.2. 부분 매핑(Substring) ........................................................................................ 28

8.2.3. 배열 매핑 ........................................................................................................ 28

8.2.4. 코드 변환 ........................................................................................................ 28

8.2.5. 특수한 매핑 클래스(라이브러리) ....................................................................... 29

8.2.6. 크로스 매핑(Cross Mapping) ............................................................................ 29

8.2.7. 베이스 매핑(Base Mapping) ............................................................................. 29

8.2.8. 키워드 처리 ..................................................................................................... 29

8.2.9. Special word 처리 ............................................................................................ 30

8.3. Mapper 매핑 종류 ....................................................................................................... 32

8.3.1. 요청 매핑 ........................................................................................................ 32

8.3.2. 정상 응답 매핑 ................................................................................................. 33

8.3.3. 응답 오류 매핑 ................................................................................................. 33

8.3.4. 포맷 오류 매핑 ................................................................................................. 34

8.3.5. 시스템 오류 매핑 ............................................................................................. 34

8.3.6. 요청 포맷 오류 매핑 ......................................................................................... 36

8.3.7. 응답 포맷 오류 매핑 ......................................................................................... 37

8.4. 파라미터 정보 ............................................................................................................ 37

8.5. Pause/Resume 기능 ................................................................................................... 38

8.6. 중복 거래 체크 ........................................................................................................... 38

8.7. 플로우 체크 ................................................................................................................ 39

8.7.1. 프로토콜 정보 등록 .......................................................................................... 39

8.8. 결번 체크 ................................................................................................................... 40

8.9. 채번 ........................................................................................................................... 41

8.9.1. 메모리 채번 ..................................................................................................... 41

8.9.2. 데이터베이스 채번 ........................................................................................... 42

8.9.3. Cache 기능 ..................................................................................................... 42

8.10. 전문 로깅 ................................................................................................................. 42

8.10.1. 파일 로깅 ...................................................................................................... 42

8.10.2. 데이터베이스 로깅 ......................................................................................... 45

8.11. 사용자 서비스 .......................................................................................................... 45

8.11.1. CMapper ....................................................................................................... 45

8.11.2. JavaMapper .................................................................................................. 49

8.12. Mapper 호출 방법 ..................................................................................................... 56

8.12.1. CMapper ....................................................................................................... 56

8.12.2. JavaMapper .................................................................................................. 60

iv AnyLink 서버 안내서

Page 5: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

8.13. Mapper Cache .......................................................................................................... 63

제9장 마스터 로그 ..................................................................................................................... 65

9.1. 마스터 로깅 ................................................................................................................ 65

9.2. 마스터 로그 서비스 ..................................................................................................... 66

9.3. 커스텀 로깅(Custom Logging) ..................................................................................... 67

9.3.1. 전문 공통부의 필드 검색 기능 ........................................................................... 67

9.3.2. 전문 내의 특정 필드(공통부, 거래부 전부) 검색 기능 .......................................... 68

제10장 AnyLink API ................................................................................................................. 73

10.1. ADM API .................................................................................................................. 73

10.1.1. allineinq ........................................................................................................ 73

10.1.2. allinedeploy ................................................................................................... 73

10.1.3. albatapplinq ................................................................................................... 74

10.1.4. albatappldeploy ............................................................................................. 74

10.1.5. albatfileinq ..................................................................................................... 74

10.1.6. albatfiledeploy ............................................................................................... 75

10.1.7. altxparminq ................................................................................................... 75

10.1.8. altxparmdeploy .............................................................................................. 76

10.1.9. 예제 .............................................................................................................. 76

10.2. AMM 메시지 수신 API ............................................................................................... 80

10.2.1. init_tpionfo ..................................................................................................... 80

10.2.2. init_tpinfo ...................................................................................................... 80

10.2.3. 예제 .............................................................................................................. 81

10.3. UTIL API .................................................................................................................. 82

10.3.1. gen_log_id .................................................................................................... 82

10.3.2. 예제 .............................................................................................................. 82

10.4. Sched API ................................................................................................................ 83

10.4.1. alscheddeploy ............................................................................................... 83

10.4.2. 예제 .............................................................................................................. 83

Appendix A. 오류 메시지 및 조치 방법 ...................................................................................... 85

Appendix B. AnyLink 서버의 로그보는 방법 ............................................................................. 89

B.1. AMM ......................................................................................................................... 89

B.2. ADM .......................................................................................................................... 92

B.3. 게이트웨이 로그 ......................................................................................................... 94

B.4. CMapper 로그 ............................................................................................................ 97

색인 ............................................................................................................................................ 99

AnyLink v

Page 6: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템
Page 7: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

그림 목차

[그림 1.1] AnyLink 구성 ............................................................................................................... 1

[그림 4.1] AMM 공유 메모리 관리 구조 ....................................................................................... 15

[그림 4.2] 동적 디플로이 플로우 ................................................................................................. 17

[그림 4.3] 멀티 노드 디플로이 플로우 ......................................................................................... 18

[그림 5.1] 디플로이 호출 구조 .................................................................................................... 19

[그림 5.2] 데이터베이스 조회 호출 구조 ...................................................................................... 20

[그림 6.1] 스케줄러의 동작 플로우 .............................................................................................. 23

[그림 7.1] 통계 집계 플로우 ........................................................................................................ 25

[그림 8.1] 요청 매핑 .................................................................................................................. 32

[그림 8.2] 응답/오류 응답매핑 .................................................................................................... 33

[그림 8.3] 포맷 오류 매핑 ........................................................................................................... 34

[그림 8.4] 시스템 오류 매핑 ........................................................................................................ 35

[그림 8.5] 요청 포맷 오류 응답 매핑 ............................................................................................ 36

[그림 8.6] 응답 포맷 오류 응답매핑 ............................................................................................. 37

[그림 8.7] 사용자 서비스가 추가된 CMapper 구조 ....................................................................... 45

[그림 A.1] tmadmin 화면 ............................................................................................................ 85

AnyLink vii

Page 8: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템
Page 9: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

안내서에 대하여

안내서의 대상

본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

개발을 위한 사용자를 대상으로 기술한다.

안내서의 전제 조건본 안내서를 원활하게 이해하기 위해서는 Tmax에 관한 기본적 지식이 필요하다. 자세한 내용은 Tmax 매

뉴얼을 참고한다.

안내서의 제한 조건

본 안내서는 AnyLink를 시스템에 설치하는 것에 대한 필수사항만을 기술하고 있다. 실무에서의 구체적인

사용방법이나, 관리 및 운용에 관한 사항은 각 제품의 안내서를 참고한다.

안내서에 대하여 ix

Page 10: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

안내서 구성

본 안내서는 총 10개의 장과 2개의 Appendix로 구성되어 있다.

각 장의 주요 내용은 다음과 같다.

● 제1장: AnyLink 서버 소개

전체 엔진 구조 및 서버 컴포넌트들 간의 관계와 역할에 대해 설명한다.

● 제2장: 환경설정

Tmax 및 JEUS의 AnyLink 설정에 대해 설명한다.

● 제3장: 사전 수행 작업

환경설정을 마친 후 엔진 구동 방법에 대해 설명한다.

● 제4장: AMM(Anylink Monitoring Manager)

AMM의 기능 및 설정 방법에 대해 설명한다.

● 제5장: ADM(Anylink Deploy Manager)

ADM의 기능 및 설정 방법에 대해 설명한다.

● 제6장: 스케줄러

스케줄러의 기능 및 설정 방법에 대해 설명한다.

● 제7장: 통계 집계 대몬

통계 집계 대몬의 기능 및 설정 방법에 대해 설명한다.

● 제8장: Mapper

C/JavaMapper의 매핑 개념 및 기능, 개발 방법에 대해 설명한다.

● 제9장: 마스터 로그

마스터 로그와 기능에 대해 설명한다.

● 제10장: AnyLink API

AnyLink API에 대해 설명한다.

● Appendix.A: 오류 메시지 및 조치 방법

오류 메시지 조치 방법과 로그 메시지의 의미에 대해 설명한다.

● Appendix.B: AnyLink 서버의 로그보는 방법

AnyLink 서버의 로그보는 방법에 대해 설명한다.

x AnyLink 서버 안내서

Page 11: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

안내서 규약

의미표기

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

파일, 디렉터리 이름, 환경설정 변수Courier New

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

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

강조진하게

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

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

메일계정, 웹 사이트, 다른 장 및 절 참고하이퍼링크

메뉴의 진행 순서>

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

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

참고 또는 주의사항참고

그림 이름[그림 1.1]

표 이름[표 1.1]

명령어 수행 후 화면에 출력된 결과물, 예제코드AaBbCc123

안내서에 대하여 xi

Page 12: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

시스템 사용 환경

요구 사항

Microsoft Windows 2000/XP/2003/NT/VistaPlatform

Solaris

HP-UX

AIX

Linux

512MB 이상 메모리 공간 권장Hardware

500MB 이상 하드디스크 공간 필요

5.0 Update 4(JDK 1.5.0_12) 이상JDK

Oracle 9i 또는 10gDatabase

Tibero

DB2

xii AnyLink 서버 안내서

Page 13: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

관련 안내서

설명안내서

AnyLink Online 게이트웨이의 구조 및 용도에 대해 설명하고, 각 게이트

웨이별 설정 방법에 대해 설명한 안내서이다.

AnyLink

Online 게이트웨이 안내서

참고 자료

● Tmax

– Tmax Getting Started Guide

– Tmax Administration Guide

– Tmax Reference Guide

● JEUS

– JEUS Server 안내서

– JEUS Web Container 안내서

안내서에 대하여 xiii

Page 14: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

연락처

Korea

TmaxSoft Co., Ltd

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

Seongnam-si, Gyeonggi-do, 463-824

South Korea

Tel: +82-31-8018-1000

Fax: +82-31-8018-1115

Email: [email protected]

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

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

USA

TmaxSoft, Inc.

560 Sylvan Avenue Englewood Cliffs, NJ 07632

U.S.A

Tel: +1-201-567-8266

Fax: +1-201-567-7339

Email: [email protected]

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

Japan

TmaxSoft Japan Co., Ltd.

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

Japan

Tel: +81-3-5765-2550

Fax: +81-3-5765-2567

Email: [email protected]

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

xiv AnyLink 서버 안내서

Page 15: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

China

TmaxSoft China Co., Ltd.

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

Chaoyang District, Beijing, China, 100027

China

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

Fax: +86-10-6410-6144

Email: [email protected]

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

안내서에 대하여 xv

Page 16: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템
Page 17: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

제1장 AnyLink 서버 소개

본 장에서는 전체 엔진 구조 및 서버 컴포넌트들 간의 관계와 역할에 대해 설명한다.

1.1. 개요AnyLink는 다양한 대내외 채널을 통해 전달되는 정보를 프로토콜, 전문 및 코드 변환을 통해 하나로 통합

함으로써 대외 연계 및 내부 시스템 간 연동을 지원하는 채널 통합 솔루션이다.

다음은 AnyLink 구성을 나타낸 그림이다.

[그림 1.1] AnyLink 구성

AnyLink의 서버 컴포넌트들은 크게 AMM, ADM의 매니저(manager)와 통신 프로토콜을 담당하는 게이트

웨이 그룹, 전문 변환을 담당하는 CMapper, JavaMapper 그 외에 주기적인 작업을 위한 스케줄러, 통계

집계 데몬, 로깅 서비스 등이 존재한다.

본 안내서에서는 게이트웨이를 제외한 서버 컴포넌트들을 주로 설명한다. 각 컴포넌트의 기능 및 사용법

은 각 장을 참고한다.

제1장 AnyLink 서버 소개 1

Page 18: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템
Page 19: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

제2장 환경설정

본 장에서는 C 엔진과 Java 엔진의 환경설정에 대해서 설명한다.

2.1. C 엔진 환경설정

2.1.1. 환경변수

다음은 AnyLink의 C 엔진 환경변수에 대한 설명이다.

● Tmax 환경변수

다음의 기본적인 환경변수를 등록한다.

환경 파일 항목설명환경변수

TMAXDIRTmax 시스템 홈 디렉터리이다.TMAXDIR

Tmax 시스템이 수행될 서버의 IP 주소이다.TMAX_HOST_ADDR

TPORTNOTmax 시스템에 접속할 포트 번호 TPORTNO + 10에 해당하

는 포트를 AMM과 구성 요소 간의 통신 포트로 사용하므로

이 값이 비어있어야 한다.

TMAX_HOST_PORT

참고

기타 Tmax 환경변수는 "Tmax Administration Guide"를 참고한다.

● AnyLink 환경변수

데이터베이스 접속을 위한 환경변수를 등록한다.

설명환경변수

데이터베이스 접속할 때 필요한 ID와 패스워드 정보를 등록한다.ANYLINK_CONNECT_IN

FO 등록하지 않을 경우 'anylink/anylink'가 적용된다.

ANYLINK_CONNECT_INFO로 접속에 실패한 경우 ANYLINK_BACKUP_CON

NECT_INFO로 다시 접속을 시도한다. Oracle일 경우에만 적용된다.

ANYLINK_BACK

UP_CONNECT_INFO

제2장 환경설정 3

Page 20: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

2.1.2. 환경 파일 설정

본 절에서는 AnyLink의 C 엔진 환경 파일에 대해 설명한다.

Tmax 환경 파일

Tmax 환경 파일의 SERVER 절과 SERVICE 절에 AnyLink 구성 요소를 설정한다.

● NODE 절

다음은 Tmax 환경 파일 예이다.

*NODE

tmaxi7 TMAXDIR = "/data1/mnsvr/tmax",

APPDIR = "/data1/mnsvr/tmax/appbin",

PATHDIR = "/data1/mnsvr/tmax/path",

TLOGDIR = "/data1/mnsvr/tmax/log/tlog",

ULOGDIR = "/data1/mnsvr/tmax/log/ulog",

SLOGDIR = "/data1/mnsvr/tmax/log/slog",

EXTPORT = 9001,

EXTCLHPORT = "9002,9003"

– EXTPORT

• JEUS의 Tmax Listener에서 TMM으로 접속하는 포트이다.

• JEUS 컨테이너의 WEBMain.xml에서 <tmax-listener>의 <port>에 값을 설정한다.

– EXTCLHPORT

JEUS의 Tmax Listener에서 CLH로 접속하는 포트이다.

● SERVER 절

AMM, ADM, 스케줄러, 통계 집계 데몬, CMapper, JMapper, Online 게이트웨이, Batch 게이트웨이를

등록한다. (릴리즈 버전/디버그 버전 서버명)

다음은 Tmax 환경 파일 예이다.

*SERVER

al4_ammD SVGNAME = svg1, MIN=1, MAX=1, SVRTYPE=UCS, RESTART=N,

CLOPT="-o $(SVR).$(CDATE).log -e $(SVR).$(CDATE).log"

al4_admD SVGNAME = svg1, MIN=1, MAX=1, RESTART=N,

CLOPT="-o $(SVR).$(CDATE).log -e $(SVR).$(CDATE).log"

al4_schedD SVGNAME = svg1, MIN=1, MAX=1, RESTART=N, SVRTYPE=UCS,

CLOPT="-o $(SVR).$(CDATE).log -e $(SVR).$(CDATE).log"

al4_statdD SVGNAME = svg1, MIN=1, MAX=1, RESTART=N,

CLOPT="-o $(SVR).$(CDATE).log -e $(SVR).$(CDATE).log"

al4_cmapD SVGNAME = svg1, MIN=1, MAX=1, CPC=10, RESTART=N,

SVRTYPE=CUSTOM_GATEWAY,

CLOPT="-o $(SVR).$(CDATE).log -e $(SVR).$(CDATE).log"

4 AnyLink 서버 안내서

Page 21: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

al4_cmap_relay SVGNAME = svg1, MIN=1, MAX=1, RESTART=N,

CLOPT="-o $(SVR).$(CDATE).log -e $(SVR).$(CDATE).log"

al4_log SVGNAME=svg1, MIN=1, MAX=10, RESTART=N, SVRTYPE=UCS,

CLOPT=”-o $(SVR).$(DATE).log –e $(SVR).$(DATE).log”

alinkjmapp SVGNAME = svg1, MIN=1, MAX=1, CPC=10, SVRTYPE=EXTSVR

tcpgwext SVGNAME = svg1, MIN=1, MAX=1, CPC=10, RESTART=N,

SVRTYPE=CUSTOM_GATEWAY,

CLOPT="-o $(SVR).$(CDATE).log -e $(SVR).$(CDATE).log"

batgw SVGNAME = svg1, MIN=1, MAX=1, CPC=10, RESTART=N,

SVRTYPE=CUSTOM_GATEWAY,

CLOPT="-o $(SVR).$(CDATE).log -e $(SVR).$(CDATE).log"

다음은 각 서버 설정에 대한 설명이다. 괄호안에는 서버명을 나타내고, 서버명 뒤에 D가 있으면 릴리즈

버전이고, 없으면 디버그 버전을 의미한다.

설명구분

MIN, MAX를 1로 설정하고, SVRTYPE을 UCS로 설정한다.AMM 서버 설정

(al4_amm/al4_ammD)

MIN, MAX를 1로 설정한다.ADM 서버 설정

(al4_adm/al4_admD)

MIN, MAX를 1로 하고, SVRTYPE을 UCS로 설정한다.스케줄러 서버 설정

(al4_sched/al4_schedD)

MIN, MAX를 1로 한다. 등록할 경우 파일 통계 집계 대몬은 등록하

지 않는다.

DB 통계 집계 대몬 서버 설정

(al4_statd/al4_statdD)

SVRTYPE을 CUSTOM_GATEWAY로 설정한다.CMAPPER 서버 설정

(al4_cmap/ al4_cmapD)

MIN,MAX를 1로 설정한다.릴레이 서버 설정

(al4_cmap_relay)

SVRTYPE을 UCS로 설정한다.마스터 로그 서버 설정

(al4_log)

JEUS 컨테이너의 WEBMain.xml에서 tmax-listener의 listener-id에

설정된 값을 서버명으로 등록한다.

JMAPPER 서버 설정

(alinkjmapp)

MIN, MAX를 1로 설정하고, CPC는 WEBMain.xml에서 tmax-listener

의 min, max 값으로 설정하고, SVRTYPE을 EXTSVR로 설정한다.

MIN, MAX를 1로 설정하고, SVRTYPE을 CUSTOM_GATEWAY로

설정한다.

온라인 게이트웨이 서버 설정

(tcpgwext)

제2장 환경설정 5

Page 22: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

설명구분

MIN, MAX를 1로 설정하고, SVRTYPE을 CUSTOM_GATEWAY로

설정한다.

배치 게이트웨이 서버 설정

(batgw)

● SERVICE 절

다음과 같이 AMM, ADM, 스케줄러, 통계 집계 데몬, CMapper, JMapper, 온라인 게이트웨이, 배치 게이

트웨이의 서비스를 등록한다.

다음은 Tmax 환경 파일 예이다.

*SERVICE

AMMDEPLOY SVRNAME = al4_ammD

AMMSTATUS SVRNAME = al4_ammD

ALDBSVC SVRNAME = al4_admD

ALDEPLOY SVRNAME = al4_admD

ALDEPLOYDELT SVRNAME = al4_admD

ALSCHDEP SVRNAME = al4_schedD

ALSCHCOM SVRNAME = al4_schedD

ALSCHRELAY SVRNAME = al4_schedD

STICSRUN SVRNAME = al4_statdD

CMAPPER SVRNAME = al4_cmapD

MAPPRLYSVC SVRNAME = al4_cmap_relay

ALMSTLOGINS SVRNAME = al4_log

ALMSTLOGSEL SVRNAME = al4_log

BT_KFB SVRNAME = bt_kfb

TCPGWEXT SVRNAME = tcpgwext

TCPGWINT SVRNAME = tcpgwint

THRGWLSN SVRNAME = thrgwlsn

JMAPPER SVRNAME = alinkjmapp, SVCTIME = 30

각 서비스는 서버별로 구분하여 설정한다.

설명구분

AMMSTATUS, AMMDEPLOY 서비스를 등록한다.AMM 서비스 설정

ALDBSVC, ALDEPLOY, ALDEPLOYDELT 서비스를 등록한다.ADM 서비스 설정

ALSCHDEP, ALSCHCOM, ALSCHRELAY 서비스를 등록한다.스케줄러 서비스 설정

STICSRUN 서비스를 등록한다.통계 집계 데몬 서비스 설정

해당 MAPPER의 서비스명 및 MAPPRLYSVC(relay 서비스)를 등록한

다.

CMAPPER 서비스 설정

해당 MAPPER의 서비스명을 등록한다.JMAPPER 서비스 설정

MAPPRLYSVC 서비스를 등록한다.릴레이 서비스 설정

ALMSTLOGINS, ALMSTLOGSEL 서비스를 등록한다.마스터 로그 서비스 설정

6 AnyLink 서버 안내서

Page 23: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

설명구분

배치 서비스를 등록한다.배치 서비스 설정

해당 서비스명을 등록한다.기타 구성 요소 서비스 설정

참고

Tmax 환경 파일에 대한 기타 설정은 "Tmax Administration Guide"를 참조한다.

AnyLink 환경 파일

TMAXDIR 하위의 config 폴더에 anylink.properties 파일을 설정한다.

# AnyLink properties

DB_TYPE = SINGLE | MULTI

LOG_CHK_POINT_INTERVAL = log_chk_point_interval

LOG_CHK_POINT_COUNT = log_chk_point_count

DB_CHK_POINT_INTERVAL = db-chk_point_interval

DB_CHK_POINT_COUNT = db_chk_point_count

NODE_PING_INTERVAL = node_ping_interval

MAPPER_PING_INTERVAL = mapper_ping_interval

CC = cc

SEND_FAIL_LIMIT = send_fail_limit

TIMECHK_INTERVAL = timechk_interval

BYPASS_SVCFAIL = TRUE | FALSE

다음은 설정 항목에 대한 설명이다.

설명환경변수

AnyLink가 사용하는 데이터베이스 타입을 나타낸다.DB_TYPE

– SINGLE : 멀티 노드 환경에서 하나의 데이터베이스를 사용하는

환경인 경우 설정한다.

– MULTI는 : 멀티 노드 환경에서 각 노드별로 다른 데이터베이스를

사용하는 경우 설정한다.

파일을 로깅할 때 로깅 Thread의 체크 주기를 설정한다.LOG_CHK_POINT_INTERVAL

파일을 로깅할 때 로깅 Thread에서 파일에 쌓는 단위를 설정한다.LOG_CHK_POINT_COUNT

채번 Thread에서 데이터베이스에 sync 맞추는 주기를 설정한다.DB_CHK_POINT_INTERVAL

채번 Thread에서 데이터베이스에 쌓는 단위를 설정한다.DB_CHK_POINT_COUNT

AMM에서 타 노드의 AMM과의 재접속 간격 및 ping을 주고받는 주

기를 설정한다.

NODE_PING_INTERVAL

제2장 환경설정 7

Page 24: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

설명환경변수

AMM에서 Mapper로 ping을 보내는 주기를 설정한다.MAPPER_PING_INTERVAL

2.2. Java 엔진 환경설정

2.2.1. 환경변수

AnyLink의 Java 엔진을 사용하기 위해서 JEUS 환경변수와 AnyLink 환경변수를 설정해야 한다.

● JEUS 환경변수

JEUS 환경변수는 "JEUS Server 안내서"를 참고한다.

● AnyLink 환경변수

시스템 환경변수로 설정하는 것과 Admin 툴에서 프로퍼티로 등록하는 것들을 나누어서 설명한다

다음은 AnyLink 환경변수에 대한 설명이다.

설명환경변수

Tmax 시스템(Primary)이 수행될 서버의 IP 주소이다.ALSERVER_IP

Tmax 시스템(Primary)에 접속할 포트 번호이다.ALSERVER_PORT

TPORTNO + 10에 해당하는 포트를 AMM과 구성 요소 간의 통신 포트로 사

용하므로 이 값이 비어있어야 한다.

Tmax 시스템(Backup)이 수행될 서버의 IP 주소이다.ALBACKUP_IP

Tmax시스템(Backup)에 접속할 포트 번호이다.ALBACKUP_PORT

TPORTNO + 10에 해당하는 포트를 AMM과 구성 요소 간의 통신 포트로 사

용하므로 이 값이 비어있어야 한다.

Tmax 버전을 지정한다. (3 또는 4)ALSERVER_VERSION

2.2.2. 환경 파일 설정

AnyLink의 Java 엔진 환경 파일은 JEUS 환경 파일과 AnyLink 환경 파일 두 가지로 나뉘어진다.

AnyLink 환경 파일

Java 엔진 환경설정을 위한 AnyLink 환경 파일 설정에 대한 내용은 C 엔진 환경설정에서 설명한 내용에

포함되어 있으므로 본 절에서는 생략한다.

8 AnyLink 서버 안내서

Page 25: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

JEUS 환경 파일(JEUS 6.X 기준)

JEUS 환경 파일에 AnyLink 구성 요소를 등록한다.

AnyLink는 서블릿 형태로 전문을 받아들이므로 일반적인 WAS에서의 서블릿 설정과 매우 유사하고, 다른

점은 Tmax에서 구동되는 게이트웨이로 부터의 요청만 받아들이기 때문에 HTTP Listener 대신에 Tmax

Listener를 사용한다는 것이다.

참고

1. JEUS 6.X 에서 사용하는 서블릿 모듈은 컨텍스트 설정이 필요없으며, WAR 형태로 패키징하여,

$JEUS_HOME/webhome/deploy_home 아래 저장하면 JEUS가 기동할 때 자동으로 디플로이된다.

2. 각 설정 파일의 위치, 컨텍스트 설정 및 기타 설정은 "JEUS Server 안내서" 및 "JEUS Web Container

안내서"를 참고한다.

각 설정 파일의 예는 다음과 같다.

● JEUSMain.xml

– AnyLink 환경변수 설정

시스템 환경변수로 등록할 수도 있고, 다음과 같이 JEUS 구동할 때 설정할 수도 있다.

<node>

<name>tmaxh2</name>

<engine-container>

<name>container1</name>

<command-option>-DALSERVER_IP=192.168.1.4

-DALSERVER_PORT=1988 -DALBACKUP_IP=192.168.12.11

-DALBACKUP_PORT=8880 -DALSERVER_VERSION=4

</command-option>

</engine-container>

</node>

– 서블릿 엔진 설정

AnyLink를 기동하기 위해서는 서블릿 엔진의 구동이 필수적이다.

<engine-command>

<type>servlet</type>

<name>engine1</name>

</engine-command>

– DataSource 설정

AnyLink에서 사용하는 데이터베이스에 대한 정보를 입력한다.

제2장 환경설정 9

Page 26: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

<resource>

<data-source>

<database>

<vendor>oracle</vendor>

<export-name>anylink</export-name>

<data-source-class-name>

oracle.jdbc.pool.OracleConnectionPoolDataSource

</data-source-class-name>

<data-source-type>ConnectionPoolDataSource

</data-source-type>

<database-name>ora9</database-name>

<user>ora9</user>

<password>ora9</password>

<port-number>1520</port-number>

<server-name>192.168.1.4</server-name>

<driver-type>thin</driver-type>

<connection-pool>

<pooling>

<min>20</min>

<max>100</max>

<step>4</step>

<period>1</period>

</pooling>

</connection-pool>

</database>

</data-source>

</resource>

● WEBMain.xml

– <tmax-listener> 설정

게이트웨이에서 받은 전문을 전달받기 위해서 Tmax Listener를 구동시켜야 한다.

다음의 <listener-id>는 Tmax 설정 파일에서 alinkjmapp 서버명과 동일하게 설정하고, <port>는 Tmax

설정 파일에서 EXTPORT와 동일하게 설정한다.

<tmax-listener>

<listener-id>alinkjmapp</listener-id>

<dispatcher-config-class>

anylink.engine.AnyLinkDispatcherConfig

</dispatcher-config-class>

<server-name>alinkjmapp</server-name>

<tmax-version>40</tmax-version>

<server-group-name>svg1</server-group-name>

<server-type>server</server-type>

10 AnyLink 서버 안내서

Page 27: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

<tmax-address>127.0.0.1</tmax-address>

<port>9100</port>

<output-buffer-size>8192</output-buffer-size>

<thread-pool>

<min>10</min>

<max>20</max>

<step>2</step>

<max-idle-time>1000</max-idle-time>

</thread-pool>

</tmax-listener>

다음은 설정해야 하는 태그에 대한 설명이다.

설명태그

Tmax 서버 버전을 설정한다. 서버 버전이 4.0 이상인 경우 '40', 3.x 인 경우

'3X'로 설정한다.

<tmax-version>

tmconfig에 설정된 해당 서버(아래 예의 alinkjmapp)의 그룹명(SVRGROUP)

을 설정한다.

<server-group-name>

서버 타입을 설정한다.<server-type>

– server : Tmax Listener가 TCP 게이트웨이와 연결될 경우

– httpgw : Tmax Listener가 HTTP 게이트웨이와 연결될 경우

– 컨텍스트 설정

Anylink에서 전문을 받아들일 수 있도록 서블릿 컨텍스트를 설정한다.

<context>

<context-name>anylink</context-name>

<context-path>/anylink</context-path>

</context>

● jeus-web-dd_anylink.xml

JEUS 전용 DD(Deployment Descriptor)를 설정한다.

다음의 경로에 위치한 'jeus-web-dd_<context name>.xml'에 설정한다. 이를 통해, 컨텍스트 이름과 웹

애플리케이션 리소스(파일들)가 위치하는 곳인 docbase의 위치를 설정한다.

JEUS_HOME\config\<nodename>\<nodename>_servlet_<engine name>\

제2장 환경설정 11

Page 28: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

다음은 설정 예이다.

<?xml version="1.0"?>

<!DOCTYPE jeus-web-dd PUBLIC "-//Tmax Soft., Inc.//DTD JEUS WEB Deployment Info

4.0//EN"

"http://www.tmaxsoft.com/jeus/dtd/4.0/jeus-web-dd.dtd">

<jeus-web-dd>

<context>

<context-name>anylink</context-name>

<docbase>anylink</docbase>

<auto-reload>

<enable-reload>true</enable-reload>

<check-on-demand>true</check-on-demand>

</auto-reload>

</context>

</jeus-web-dd>

● web.xml

J2EE 표준 웹 모듈 DD(Deployment Descriptor)를 설정한다(Servlet Specification 참조).

파일의 경로는 다음과 같다.

SERVLET_HOME\<context group docbase>\<context docbase>\WEB-INF\

다음은 설정 예이다.

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

xmlns="http://java.sun.com/xml/ns/j2ee">

<servlet>

<servlet-name>anylink</servlet-name>

<servlet-class>

anylink.engine.servlet.AnyLinkTmaxServlet

</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>anylink</servlet-name>

<url-pattern>/anylink</url-pattern>

</servlet-mapping>

<!-- Servlet Context Listener -->

<listener>

<listener-class>

anylink.engine.AnyLinkContextListener

</listener-class>

</listener>

</web-app>

12 AnyLink 서버 안내서

Page 29: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

제3장 사전 수행 작업

본 장에서는 환경설정을 마친 후 엔진 구동 방법에 대해 설명한다.

3.1. C 엔진 구동C 엔진 환경설정이 완료되면, cfl을 통해서 Tmax config 파일을 컴파일한 후 tmboot를 통해서 다음과 같이

구동한다. C 엔진 환경설정에 대한 자세한 내용은 “제2장 환경설정”을 참고한다.

[/usr/anylink/tmax/config ] cfl –i <config 파일명>

[/usr/anylink/tmax/ ] tmboot

이때 엔진의 정상 기동 여부는 al4_amm(D), al4_adm(D)의 매니저 컴포넌트가 tmadmin에서 st –v 명령을

통해 확인할 수 있다. 매니저들이 기동하지 못한 경우는 주로 데이터베이스 접속 실패나 공유 메모리(Shared

Memory) 충돌의 문제이므로 al4_amm(D)의 ulog를 확인한다.

tmboot를 실행할 때 게이트웨이와 CMapper도 같이 구동되므로 'server abnormally closed'는 라는 오류가

발생한 경우, tmadmin에서 st –v 명령으로 상태를 조회해서 status가 'NRDY'인 서버의 ulog를 조회하여

기동에 실패한 원인을 파악한다. 주로 AMM 레지스터 에러가 발생한 경우는 AnyLink Admin에 해당 게이

트웨이나 Mapper를 등록하지 않은 경우이므로 AnyLink Admin 설정을 확인한다.

기동할 때 문제가 되는 사항은 “Appendix A. 오류 메시지 및 조치 방법”을 참고한다.

3.2. JMapper 구동본 절에서는 JMapper 구동에 대해 설명한다.

C 엔진이 기동된 후 다음의 명령을 수행하면 JEUS와 함께 JMapper가 구동된다.

[/usr/anylink/jeus/ ]jeus –xml –U<username> -P<password>

구동 후, Tmax의 콘솔 관리 도구인 tmadmin의 st –v 명령으로 C 엔진과 연결되었는지 확인해야 한다.

다음과 같이 alinkjmapp의 status가 'RDY'일 경우 연결이 성공한 것이다. 반면, status가 'NRDY'일 경우에

는 연결에 실패한 경우이므로 환경설정 및 C 엔진 기동 등 이전 단계 작업을 재확인해야 한다.

$$2 CHBU215 (tmadm): st -v

------------------------------------------------------------------------

clh svrname (svri) status count qcount qpcount emcount

------------------------------------------------------------------------

0 alinkjmapp ( 4) RDY 0 0 0 0

0 al4_ammD ( 5) RDY 0 0 0 0

0 al4_admD ( 6) RDY 8 0 0 0

제3장 사전 수행 작업 13

Page 30: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

0 al4_schedD ( 7) RDY 0 0 0 0

0 al4_statdD ( 8) RDY 0 0 0 0

0 algw_ext ( 9) NRDY 0 0 0 0

0 algw_in ( 10) NRDY 0 0 0

14 AnyLink 서버 안내서

Page 31: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

제4장 AMM

본 장에서는 AMM의 기능 및 설정 방법에 대해 설명한다.

4.1. AMM 기능AMM(Anylink Monitoring Manager)은 AnyLink 서버들의 매니저로서 ADM, 스케줄러, 온라인 게이트웨이,

배치 게이트웨이, Mapper 등의 컴포넌트들과 연결을 맺고, 이를 바탕으로 제어 및 모니터링을 수행한다.

[그림 4.1] AMM 공유 메모리 관리 구조

AMM은 다음과 같은 기능을 제공한다.

● 공유 메모리 관리

● 컴포넌트 부팅 처리 및 제어

● 컴포넌트 모니터링

● 동적 디플로이

● 멀티 노드 디플로이

제4장 AMM 15

Page 32: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

4.1.1. 공유 메모리 관리

AMM은 기동할 때 공유 메모리를 생성하고, 데이터베이스에 있는 파라미터 정보를 로딩한다. 또한 AnyLink

스튜디오나 Admin을 통해서 디플로이를 할 경우 공유 메모리를 갱신한다(동적 디플로이).

4.1.2. 컴포넌트 부팅 처리 및 제어

각 컴포넌트들이 부팅 후 AMM에 레지스터를 하는데 이때 AMM은 공유 메모리 접속 정보를 전달한다.

AMM 레지스터 에러가 발생한 경우는 구성 요소가 Admin을 통해서 등록되지 않아서 발생하는 것이다.

컴포넌트는 동적 추가가 되지 않으므로 C 엔진을 재기동한다. AMM에 등록 요청을 하면 AMM은 등록된

서버일 경우 공유 메모리 접속 정보를 넘겨준다. 그러면 각 구성 요소는 공유 메모리에 있는 테이블 정보

를 읽어서 부팅의 나머지 과정을 수행하고 거래를 처리할 준비를 완료한다. 게이트웨이에 기관업무가 할

당되어 있을 때 해당 기관업무가 동적으로 삭제되면 게이트웨이를 다운시킨다.

4.1.3. 컴포넌트 모니터링

컴포넌트가 살아있는지 여부는 AMM에 레지스터할 때 접속한 세션을 유지하고 있으면 살아 있다고 판단

하고 끊겼을 경우 죽었다고 판단한다.

레지스터가 되어 있던 컴포넌트가 죽어서 세션이 끊겼을 경우, 이 상황을 Admin에 broadcasting을 해서

끊긴 시점에 바로 상황을 확인할 수 있다. 새로 Admin을 구동시켰을 경우, AMMSTATUS라는 서비스를

Admin이 호출하면 컴포넌트들의 상태 정보를 전달해준다. 타 노드의 AMM과의 연결을 통해서 타 노드의

컴포넌트 정보를 전달받는다. 이 세션이 끊어지면 Admin이 붙어 있는 노드에서 타 노드의 상태를 모니터

링할 수 없게 된다. 양 노드 사이에 방화벽이 있는 경우, 특정 시간 동안 사용하지 않으면 세션이 끊기므로

노드 사이에는 주기적으로 ping을 보내서 해당 세션이 끊기지 않도록 유지해 준다. 또한 JMAPPER의 경

우 타 노드에 있을 수 있으므로 이 경우도 ping을 보낸다.

모니터링 항목은 다음과 같다.

설명항목

CMapper, JMapper, 온라인 게이트웨이, 배치 게이트웨이, 스케줄러 상태 정

보를 제공한다.

Component

노드별, 게이트웨이별, 회선별 상태 및 처리 건수 정보를 제공한다.회선

MAPPER의 상태 정보를 제공한다.MAPPER

멀티 노드의 상태 정보를 제공한다.멀티노드

16 AnyLink 서버 안내서

Page 33: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

4.1.4. 동적 디플로이

스튜디오나 Admin에서 디플로이한 정보는 노드와 게이트웨이 추가를 제외하고는 동적으로 반영된다. 이

과정에서 AMM은 디플로이 정보를 받으면 공유 메모리를 변경하고, 필요한 컴포넌트로 통보를 한다.

다음은 동적 디플로이의 경우 어떤 정보가 어떤 과정을 거쳐 컴포넌트로 통보되는지를 보여준다. 이런 과

정을 통해 엔진의 재기동 없이 변경에 대한 실시간 반영이 이루어진다.

[그림 4.2] 동적 디플로이 플로우

4.1.5. 멀티 노드 디플로이

AnyLink 스튜디오나 Admin은 한 노드와 접속하여 디플로이를 수행하기 때문에 타 노드에 변경된 정보를

전달하기 위해서는 AMM 간의 정보 전달 체계가 있어야 한다. AMM은 ADM으로부터 디플로이 요청을 받

으면 타 노드의 AMM으로 디플로이 정보를 전달하며, MAPPER에게도 정보를 전달하여 전문이 바뀌었을

때 클래스나 공유 라이브러리를 다시 로딩한다.

AnyLink 환경 파일에서 DB_TYPE을 MULTI로 설정한 경우에는 멀티 노드 디플로이에 대한 응답을 받게

된다.

다음 그림에서 Node#2에서의 디플로이가 실패하면 실패에 대한 응답을 받게 되며 이 사실은 디플로이를

수행한 툴에 나타나게 된다.

제4장 AMM 17

Page 34: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

[그림 4.3] 멀티 노드 디플로이 플로우

4.2. AMM 설정본 절에서는 AMM 설정에 대해 설명한다.

4.2.1. Tmax 환경 파일

Tmax 환경 파일에 다음과 같이 설정한다.

● SERVER 절

MIN, MAX를 1로 하고, SVRTYPE을 UCS로 한다.

● SERVICE 절

AMMSTATUS, AMMDEPLOY 서비스를 등록한다.

설명항목

AnyLink Admin에서 상태 정보를 수집할 때 호출하는 서비스이다.AMMSTATUS

ADM이 ALDEPLOY 서비스 처리 후 호출하는 서비스이다. AnyLink의 공유 메모리

수정, 게이트웨이로의 디플로이 내용 알림 및 타 노드로 디플로이 정보를 전파하

는 역할을 한다.

AMMDEPLOY

18 AnyLink 서버 안내서

Page 35: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

제5장 ADM

본 장에서는 ADM의 기능 및 설정 방법에 대해 설명한다.

5.1. ADM 기능ADM(Anylink Deploy Manager)은 AnyLink 스튜디오와 Admin을 통해 디플로이할 때 데이터베이스에 Insert

및 업데이트 수행, 데이터를 요청할 때 select를 해주는 역할을 담당한다. 데이터베이스 관련 작업의 수행

시간이 오래 걸리므로 AMM에서 그 기능을 추출해 별도의 매니저로 구성되었다.

TCS 형태의 서버로 데이터베이스 변경 후, AMM을 호출(AMM 디플로이)하는 구조이다.

5.1.1. 디플로이

ADM은 AnyLink 스튜디오와 Admin으로부터 디플로이 메시지를 직접 받아서 데이터베이스에 insert/update

를 수행하고 AMM에 전달해준다.

[그림 5.1] 디플로이 호출 구조

제5장 ADM 19

Page 36: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

5.1.2. 데이터베이스 조회

AnyLink 스튜디오와 Admin에서 데이터베이스를 조회할 경우 ALDBSVC를 호출해서 해당 테이블을 조회

한다. JMapper에서도 마찬가지 방법으로 테이블 내용을 얻어 데이터를 캐시(Cache)에 올려 놓는다.

[그림 5.2] 데이터베이스 조회 호출 구조

5.1.3. C 매핑 코드 생성

CMapper의 경우, 매핑 코드 생성 및 공유 라이브러리 생성 기능을 수행한다. 또한 CMapper를 사용하는

기관-업무에 대해서 커스텀 로깅(Custom Logging) 기능에서 사용되는 공유 라이브러리도 생성한다.

클래스 디플로이는 ADM이 해당 경로에 저장한다.

5.2. ADM 설정본 절에서는 ADM 설정에 대해 설명한다.

5.2.1. Tmax 환경 파일

Tmax 환경 파일에 다음과 같이 설정한다.

● SERVER 절

MIN, MAX를 1로 한다.

20 AnyLink 서버 안내서

Page 37: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

● SERVICE 절

ALDBSVC, ALDEPLOY , ALDEPLOYDELT 서비스를 등록한다.

설명항목

AnyLink 스튜디오와 Admin, JMapper에서 데이터베이스의 데이터를 읽어오기 위

해 요청하는 서비스이다.

ALDBSVC

AnyLink 스튜디오와 Admin에서 데이터베이스를 변경하려고 할 때 호출되는 서비

스로 데이터베이스에 Insert 및 업데이트 수행 후 AMM 디플로이를 호출한다.

ALDEPLOY

C 타입의 전문을 디플로이할 때 Header 파일을 생성하고, 매핑 디플로이의 경우

에 C 소스 파일을 생성한 후 컴파일을 수행한다. 헤더 검색 항목 디플로이의 경우

에는 커스텀 로그를 남기는 C 공유 라이브러리가 생성된다.

AnyLink 스튜디오와 Admin에서 데이터베이스에서 삭제하려고 할 때 호출되는 서

비스로 데이터베이스에 삭제를 수행한 후 AMMDEPLOY를 호출한다.

ALDEPLOYDELT

제5장 ADM 21

Page 38: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템
Page 39: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

제6장 스케줄러

본 장에서는 스케줄러의 기능 및 설정 방법에 대해 설명한다.

6.1. 스케줄러 기능스케줄러는 UCS 형태의 서버 프로세스로 ALSCHDEP, ALSCHCOM, ALSCHRELAY라는 서비스로 구성

된다. 스케줄러는 온라인 운영 전문, 배치 개시 전문 발송을 시작하는 주체이며, 통계 집계 대몬을 매일 수

행시키는 역할도 한다.

[그림 6.1] 스케줄러의 동작 플로우

스케줄러의 기능은 다음과 같다.

● 발송 유형

스케줄러는 다음과 같이 2가지의 발송 유형을 갖는다.

설명구분

특정 주기별, 일별, 주별, 월별 스케줄이 가능하다.주기적 발송

시작시간을 입력하면 스케줄은 그 시간 이후부터 동작하며 재시도 횟수와 재

시도 간격을 등록함으로써 첫 번째 시도 후 에러가 발생해도 자동 처리가 가

능하도록 한다.

스케줄 시간 내에 처리하지 못하거나 수동으로 파일을 받아오고 싶을 경우

등에 사용되는 기능이다.

즉시 발송

● 스케줄 대상

제6장 스케줄러 23

Page 40: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

스케줄 대상은 다음과 같다.

설명구분

특정 시간에 개시/종료 전문을 보내거나, 주기적으로 테스트 전문을 보내는

등의 용도에 사용된다.

운영(관리) 전문 발송

일괄전송 파일 송수신을 위한 스케줄링을 수행한다. 배치 게이트웨이를 호출

하여 파일 송수신을 시작한다.

배치 전문 발송

1일 1회에 한하여 지정된 시간에 통계 집계 대몬을 실행시킨다.통계 집계 대몬 수행

● 스케줄 상태 로그

스케줄을 시작하거나 종료할 때 스케줄 상태 로그를 남기며, 종료 후 Callback 서비스를 호출한다. 자세

한 내용은 "AnyLink Admin 안내서"의 로그 조회의 스케줄러 로그를 참조한다.

● 에러 처리

스케줄 수행 후 오류가 발생하면 재시도 간격을 주기로 재시도 횟수만큼 반복한다. 그 횟수 이내에 성공

하지 못하면 AnyLink Admin의 Event Viewer에 실패 내역이 출력된다.

참고

스케줄 등록 방법은 "AnyLink Admin 안내서"의 전문 발송을 참조한다.

6.2. 스케줄러 설정본 절에서는 스케줄러 설정에 대해 설명한다.

6.2.1. Tmax 환경 파일

Tmax 환경 파일에 다음과 같이 설정한다.

● SERVER 절

MIN, MAX를 1로 하고, SVRTYPE을 UCS로 설정한다. 멀티 노드로 구성해서 도메인으로 묶을 경우 스

케줄러는 도메인에 한 개만 있어야 한다. 즉, 한쪽 노드에만 등록한다.

● SERVICE 절

ALSCHDEP, ALSCHCOM, ALSCHRELAY 서비스를 등록한다.

설명항목

AnyLink Admin에서 스케줄을 등록 및 변경할 때 호출하는 서비스이다. 스케줄 정

보를 저장하는 역할을 한다.

ALSCHDEP

배치 게이트웨이가 송수신 작업 처리를 완료한 후 호출하는 서비스이다.ALSCHCOM

AnyLink Admin이 ALSCHDEP를 호출했을 때 이 서비스로 tprelay해서 리턴한다.ALSCHRELAY

24 AnyLink 서버 안내서

Page 41: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

제7장 통계 집계 대몬

본 장에서는 통계 집계 대몬의 기능 및 설정 방법에 대해 설명한다.

7.1. 개요통계 집계 대몬은 데이터베이스 통계 집계 방식을 사용한다. 데이터베이스 통계 집계 방식은 데이터베이

스 로그(ALMSTLOG)를 바탕으로 쿼리(Query)를 수행하여 ALSTICS에 직접 INSERT하는 방식이다.

3.2 이전 버전부터 지원하는 기능으로 모든 데이터가 데이터베이스에 로깅되어야 하며, 집계 시점에

ALMSTLOG를 전체 스캔하기 때문에 데이터베이스에 많은 부하를 주는 단점이 있다. 그러나 멀티 노드일

경우라도 한 번만 집계를 수행하면 되기 때문에 정합성이 잘 맞는다.

다음은 통계 집계의 플로우를 나타낸 그림이다.

[그림 7.1] 통계 집계 플로우

7.2. 기능데이터베이스에 남긴 마스터 로그의 통계를 내주는 서비스이다. 스케줄러가 호출함으로써 1일 1회 수행

한다. 매번 AnyLink Admin에서 조회할 때 데이터베이스에 쿼리를 전송하면 조회시간이 오래 걸리고 운영

시스템에도 영향을 줄 수 있으므로 비교적 트래픽이 적은 시간에 수행하도록 설정한다.

통계 남기는 단위는 거래별, 시간별, 에러 코드별로 남긴다. 3.1.1부터는 거래별 평균 거래시간을 조회할

수 있다.

참고

자세한 내용은 "AnyLink Admin 안내서"의 통계조회를 참조한다.

제7장 통계 집계 대몬 25

Page 42: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

7.3. 설정본 절에서는 데이터베이스 통계 집계 대몬 설정에 대해 설명한다.

7.3.1. Tmax 환경 파일

Tmax 환경 파일에 다음과 같이 설정한다.

● SERVER 절

MIN, MAX를 1로 한다. 멀티 노드로 구성해서 도메인으로 묶을 경우 스케줄러와 마찬가지로 도메인에

한 개만 있어야 한다.

● SERVICE 절

STICSRUN 서비스를 등록한다.

설명항목

스케줄러가 등록된 시간에 호출하는 서비스이다.STICSRUN

7.3.2. 수행시간 설정

수행시간은 AnyLink Admin의 [통계조회] > [집계대몬스케줄 설정]에서 등록한다.

7.4. 결과 조회통계 집계 결과는 AnyLink Admin의 [통계조회] > [날짜별 조회] 또는 [항목별 조회]에서 조회할 수 있다.

26 AnyLink 서버 안내서

Page 43: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

제8장 Mapper

본 장에서는 JMapper와 CMapper의 매핑 개념 및 기능, 개발 방법에 대해 설명한다.

8.1. 개요AnyLink에서 Mapper는 매핑을 담당하는 컴포넌트로 JMapper와 CMapper가 있다.

JMapper는 다양한 전문 유형(XML, VO, name value 등)을 지원하고, 다양한 거래 파라미터를 지원하는

장점을 가지고 있다. 반면에 CMapper는 주로 stream 전문을 대상으로 Non-block architecture로 설계되어

거래량이 많아 고성능을 요하는 시스템에 주로 사용된다. 시스템 특성에 따라 적합한 Mapper를 선택해야

한다.

AnyLink의 Mapper는 전문변환을 위해 코드 생성 방식을 선택하고 있다.

● 인터프리터(interpreter)를 사용하는 방식은 엔진을 패치할 때 인터프리터만 교체하면 되는 장점이 있는

반면 매번 거래가 있을 때마다 매핑 정보를 해석하는 과정을 거치기 때문에 코드 생성 방식에 비해 성능

이 떨어진다.

● 코드 생성 방식은 인터프리터 방식에 비해 성능이 좋다. 엔진 패치 시 기존에 디플로이했던 매핑을 전부

새로 디플로이해야 하는 단점은 있으나 동적 디플로이와 전체 디플로이 기능이 있으므로 큰 문제가 되

지 않는다. 코드 생성 방식을 통해 ADM에서 공유 라이브러리(shared library)를 생성하면 CMapper는

각 거래별로 적합한 라이브러리를 이용하여 매핑을 수행한다.

8.2. Mapper 매핑 기능CMapper의 전문 유형은 fixed stream, delimiter, bitmap stream 방식의 3가지에 대하여 지원하며 XML,

Value Object(VO), name value 방식은 지원되지 않는다.

본 절에서는 Mapper에서 지원되는 매핑 기능에 대해 설명한다.

참고

본 안내서에서 사용되는 '매핑 필드'는 AnyLink 스튜디오의 매핑 등록하는 항목 중 source 필드을 정

의하는 컬럼을 의미한다.

제8장 Mapper 27

Page 44: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

8.2.1. 조합 매핑(Concatenation)

2개의 필드를 조합해서 하나의 필드로 매핑시킬 경우에 '^'연산자를 이용하여 조합한다. 조합은 임의 개수

만큼 가능하다.

필드1명^필드2명^필드3명…^필드n명

예를 들어, fld1과 fld2를 조합하여 매핑할 경우 fld1^fld2와 같이 '매핑 필드'에 등록하면 된다. 다만 조합된

string의 총 길이가 256 Byte 이내이므로 규칙이 복잡할 경우 필드명을 짧게 입력하거나 target 필드를 여

러 개로 나눠서 등록한다.

또한 조합 내에 상수도 사용할 수 있어서 다음과 같은 표현도 가능하다.

fld1^"test"^fld3

8.2.2. 부분 매핑(Substring)

입력 필드의 특정 부분을 추출해서 매핑할 경우 다음과 같이 등록한다.

<필드명>[<from index>:<to index>]

Index는 0부터 시작한다. 예를 들어 fld1의 첫 번째 Byte부터 세 번째까지를 표현하는 방법은 다음과 같다.

fld1[0:2]

이런 방식은 조합 매핑과 연계되어 다음과 같이 표현이 될 수 있다.

fld1[0:2]^fld2[4:5]

한 Byte만 추출할 경우는 from index, to index를 동일하게 주거나, 다음과 같이 입력할 수도 있다.

<필드명>[<index>]

8.2.3. 배열 매핑

배열은 고정길이 배열과 가변길이 배열 전문을 정의할 수 있고 필드 간 매핑이 가능하다. 배열 간의 매핑

은 필드 간의 매핑을 정의함으로써 이루어진다.

배열의 경우, 입력/출력, 공통부/상세부에 같은 배열 이름이 있으면 안되며, 구조체 내에 있는 구조체의 이

름들도 유일해야 한다.

8.2.4. 코드 변환

ASCII 및 EBCDIC 코드 간 변환 기능이 제공된다. 필드 타입이 char일 때는 sosi가 있는 필드로 korean이

면 sosi 없는 한글 필드, binary는 매핑하지 않는 필드이다.

28 AnyLink 서버 안내서

Page 45: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

8.2.5. 특수한 매핑 클래스(라이브러리)

AnyLink가 단순히 게이트웨이 역할만 하는 경우는 1:1 매핑을 등록하지 않고 '__BY_PASS__'라는 특수한

매핑 클래스(라이브러리)명을 등록하여 1:1 매핑 기능을 사용할 수 있다.

또한 매핑 클래스명을 입력하지 않으면 기본적으로 입력에 있는 필드를 버리지만 응답 오류 매핑의 경우

는 응답 매핑이 적용되므로 입력에 있는 필드를 버리려면 '__NO_PASS__'라는 매핑 클래스명을 입력함

으로써 기능을 수행할 수 있다. 예를 들어 응답 오류 매핑에서는 헤더부만 내보낸다면 거래 일반 정보의

응답 오류 매핑 클래스명에 '__NO_PASS__'라고 입력하면 된다.

8.2.6. 크로스 매핑(Cross Mapping)

AnyLink 스튜디오에서 거래에 공통부에서 상세부로, 상세부에서 공통부로의 매핑을 정의할 수 있다. 이때

매핑 필드의 필드명이 입력 공통부와 입력 상세부에 모두 있을 경우, 공통부 매핑은 공통부에서 먼저 찾

고, 상세부는 상세부에서 먼저 찾는다.

8.2.7. 베이스 매핑(Base Mapping)

요청 입력 전문을 응답 출력 전문의 매핑 필드를 등록하지 않은 필드로 채워넣는 기능이다. 이 기능을 사

용하지 않으면 매핑 필드에 아무것도 등록하지 않은 것은 기본값(char는 space, numeric은 '0', int type들

은 '0x00')으로 채워진다.

8.2.8. 키워드 처리

미리 정의된 키워드를 등록함으로써 필드 단위의 특수 기능을 수행해주는 기능이다. AnyLink 스튜디오의

매핑 등록 화면에서 식별자 필드에 정의된 키워드를 등록하여 기능을 사용한다.

예를 들어 암호화해야 할 필드가 있을 경우 해당 암호화 알고리즘으로 암호화하는 미리 정의된 키워드를

식별자에 입력하면 그 필드는 매핑하는 과정에서 암호화할 수 있다.

CMapper에서 지원하는 키워드는 다음과 같다.

설명키워드

포맷 오류가 발생한 경우 비트맵 번호를 설정할 필드이다.ERR_FIELD_NO

출력 측에 이 키워드로 등록되어 있으면 기관 업무 정보의 요청/응답 TXID를

설정한다. 요청 매핑의 경우에는 요청 TXID, 그 외는 응답 TXID를 설정한다.

TRX_ID

참고

배치와 관련된 자세한 내용은 "AnyLink 배치 안내서"를 참조한다.

제8장 Mapper 29

Page 46: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

8.2.9. Special word 처리

Special word 기능은 매핑을 수행할 때 입력 전문에서 읽어와서 채울 수 없고, Mapper에서 제공하는 값을

이용해서 입력해야 하는 경우에 사용되는 기능이다.

예를 들어, 시스템 시간을 입력하거나, 난수를 생성해서 입력하거나 Process ID(PID)를 입력해야 할 경우

등에 사용된다. AnyLink 스튜디오의 매핑 등록을 할 때 '매핑 필드'에 '$'를 붙이고 입력한다. Special word

는 일반 필드와 조합 매핑이 가능하다(예 : $PID(3)^"1234").

● Process ID

– Syntax

$PID(길이)

– 예제

다음은 3자리의 PID string을 설정한 예이다.

$PID(3)

● Random Number

– Syntax

$RAND(길이)

– 예제

다음은 5자리 난수를 설정한 예이다.

$RAND(5)

● Sequence Number

각 mapping library 단위로 매기는 번호이다.

– Syntax

$SEQNO(길이)

– 예제

다음은 2자리 sequence number를 설정한 예이다.

$SEQNO(2)

● 일자

– Syntax

$DATE(YYYY|YY|MM|DD)

30 AnyLink 서버 안내서

Page 47: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

– 예제

2005/01/04일에 대해 다음과 같이 나타난다.

$DATE(YYYYMMDD) → 20050104

$DATE(MMYYDD) → 010504

$DATE(MMDDYY) → 010405

$DATE(MMDDYYYY) → 01042005

JMapper의 경우에는 $DATE와 다음에 설명할 $TIME이 동일하게 취급되므로 둘 중 어떤 것을 사용해

도 무방하다. 인자로 넘길 값은 패턴으로 입력해야 한다. 패턴에 대한 자세한 내용은 http://ja

va.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html을 참고한다.

– Syntax

$DATE(yyyy.MM.dd G 'at' HH:mm:ss z)

– 예제

$DATE(yyyy.MM.dd G 'at' HH:mm:ss z) → 2001.07.04 AD at 12:08:56 PDT

$TIME(EEE, d MMM yyyy HH:mm:ss Z) → Wed, 4 Jul 2001 12:08:56 -0700

● 시각

– Syntax

$TIME(hh|mm|ss|MI|US)

설명항목

시(0~23)hh

분 (0~59)mm

초(0~59)ss

milli second(3자리)MI

micro second(6자리)US

– 예제

12시30분 22.555555초에 대해 아래와 같이 나타난다.

$TIME(hhmmssMI) → 123022555

$TIME(UShhmmss) → 555555123022

JMapper의 경우 $DATE와 $TIME이 동일하게 취급되므로 $DATE에 대한 설명을 참고한다.

제8장 Mapper 31

Page 48: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

● Busy Flag

특정 거래나 업무의 수행시간이 초과된 경우는 1로, 정상적일 경우 0으로 설정한다.

– Syntax

$BUSYFLAG(길이)

– 예제

다음은 길이에 1을 설정한 예이다.

$BUSYFLAG(1)

8.3. Mapper 매핑 종류Mapper에서 지원되는 매핑은 요청, 응답, 응답 오류, 포맷 오류, 시스템 오류의 5가지 종류가 있다. 정상적

인 경우의 요청, 응답 매핑과 오류 상황에 대한 매핑을 등록하여 툴 설정만으로 오류 처리가 가능하다.

본 절에서는 AnyLink 스튜디오를 통해서 매핑 유형별로 정의하는 방법에 대해 설명한다.

8.3.1. 요청 매핑

Mapper로 요청 전문이 들어왔을 때 적용되는 매핑 방법이다.

[그림 8.1] 요청 매핑

● 공통부

[거래 - 일반정보] 탭의 요청 클래스 정보 영역에 '헤더 매핑 클래스명'이 설정된 경우 적용되고, 그렇지

않은 경우에는 [업무 - 일반정보] 탭의 요청 공통헤더 정보 영역에 설정된 '매핑 클래스명'(공통부 요청

매핑)이 적용된다.

● 상세부

[거래 - 일반정보] 탭의 요청 클래스 정보 영역에 설정된 '바디 매핑 클래스명'(거래의 요청매핑)이 적용

된다.

● 사용자 서비스

[거래 - 일반정보] 탭의 요청 클래스 정보 영역에 설정된 '사용자 클래스명'이 적용된다.

32 AnyLink 서버 안내서

Page 49: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

8.3.2. 정상 응답 매핑

Mapper가 요청 매핑 완료 후 비즈니스 서비스를 호출한 후 정상 응답 전문이 들어왔을 때 적용되는 매핑

이다.

[그림 8.2] 응답/오류 응답매핑

● 공통부

[거래 - 일반정보] 탭의 정상응답 클래스 정보 영역에 '헤더 매핑 클래스명'이 설정된 경우 적용되고, 그

렇지 않은 경우에는 [업무 - 일반정보] 탭의 응답 공통헤더 정보 영역에 설정된 '매핑 클래스명'(공통부

응답매핑)이 적용된다.

● 상세부

[거래 - 일반정보] 탭의 정상응답 클래스 정보 영역에 설정된 '바디 매핑 클래스명'(거래의 응답매핑)이

적용된다.

● 사용자 서비스

[거래 - 일반정보] 탭의 정상응답 클래스 정보 영역에 설정된 '사용자 클래스명'이 적용된다.

8.3.3. 응답 오류 매핑

요청 전문은 한 가지 형태로 들어오나 응답 전문은 호출한 서비스에서 정상 처리가 되어 돌아올 수가 있

고, 비즈니스 로직 에러(Business Logic Error)가 발생하여 에러 전문(응답 오류)이 돌아올 수 있다. 이때

이 2가지 형태가 서로 다른 전문 포맷을 가지는 경우가 있으므로 응답오류 전문의 경우 별도의 매핑을 등

록할 수 있어야 한다. 이때 공통부는 같고 상세부만 달리 재정의할 수 있다.

서비스 응답 코드에 정상 응답 코드가 아닌 값으로 채워져 있는 경우의 매핑이 응답 오류 매핑이다.([그

림 8.2] 참고)

● 공통부

[업무 - 일반정보] 탭의 응답 공통헤더 정보 영역에 설정된 '매핑 클래스명'(공통부 응답매핑)이 적용된

다.

● 상세부

[거래 - 일반정보] 탭의 응답오류 클래스 정보 영역에 '매핑 클래스명'이 정의된 경우 적용되고, 그렇지

않은 경우에는 정상 응답 매핑과 같이 적용된다.

● 사용자 서비스

[거래 - 일반정보] 탭의 응답오류 클래스 정보 영역에 '사용자 클래스명'이 정의된 경우 적용되고, 그렇

지 않은 경우에는 정상 응답 매핑과 같이 적용된다.

제8장 Mapper 33

Page 50: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

8.3.4. 포맷 오류 매핑

요청 매핑 도중 필드 검증에서 에러가 발생한 경우 포맷 오류 매핑이 적용되어서 요청한 곳으로 응답 전문

을 돌려준다.

[그림 8.3] 포맷 오류 매핑

● 공통부

[업무 - 일반정보] 탭의 오류 공통헤더 정보 영역에 설정된 '매핑 클래스명'(공통부 오류매핑)이 적용된

다.

● 상세부

[거래 - 일반정보] 탭의 포맷오류 클래스 정보 영역에 '매핑 클래스명'이 설정된 경우 적용하며, 그렇지

않은 경우 공통부 매핑만 수행한다. 공통부도 없는 경우에는 TPFAIL로 리턴한다.

● 사용자 서비스

[거래 - 일반정보] 탭의 포맷오류 클래스 정보 영역에 설정된 '사용자 클래스명'이 적용된다.

8.3.5. 시스템 오류 매핑

다음과 같은 상황에서 시스템 오류 매핑이 적용된다.

● 요청 매핑 완료 후 서비스 호출 시점에서 오류가 발생한 경우

● 서비스 호출 후 에러가 리턴된 경우

● 응답/응답 오류 매핑 도중 오류가 발생한 경우

● 중복 거래를 확인할 때 오류 전송일 경우

● 중지된 거래의 전문이 들어온 경우

34 AnyLink 서버 안내서

Page 51: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

다음은 시스템 오류 매핑의 흐름이다.

[그림 8.4] 시스템 오류 매핑

● 공통부

포맷 오류매핑과 같은 헤더 매핑을 사용한다. 자세한 내용은 “8.3.4. 포맷 오류 매핑”을 참고한다.

● 상세부

[거래 - 일반정보] 탭의 시스템오류 클래스 정보 영역에 '매핑 클래스명'이 설정된 경우 적용하며, 그렇

지 않은 경우 공통부 매핑만 수행한다. 공통부도 없는 경우에는 TPFAIL로 리턴한다.

● 사용자 서비스

[거래 - 일반정보] 탭의 시스템오류 클래스 정보 영역에 설정된 '사용자 클래스명'이 적용된다.

● 오류 코드 정보

시스템 오류 매핑을 하려면 AnyLink Stuidio의 [온라인 업무뷰] > [응답/오류 코드 정보] 탭 화면에서 다

음의 오류 코드 정보를 등록해야 한다.

원인에러 구분대내 에러 코드

기관 코드/업무 코드를 찾지 못한 경우 발생한다.파싱101

업무 코드를 찾지 못한 경우 발생한다.파싱102

종별 코드를 찾지 못한 경우 발생한다.파싱103

응답 포맷 에러 전문이 입력된 경우 발생한다.104

대외 파싱 중 거래 코드를 찾지 못한 경우 발생한다.파싱105

대내 파싱 중 key value들로 거래 코드를 찾지 못한 경우 발생한다.파싱106

기존에 내보냈던 요청 전문 목록에 없을 경우 타임아웃으로 간주한

다.

시스템110

게이트웨이가 Mapper를 호출한 결과가 실패로 돌아왔을 경우 발생

한다.

시스템111

'회선 재사용 여부'가 'No'일 때 대외 기관에서 들어온 전문이 응답

전문이 아닐 경우 발생한다.

시스템112

제8장 Mapper 35

Page 52: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

원인에러 구분대내 에러 코드

전문의 헤더 길이가 맞지 않을 경우에 발생한다.시스템113

요청 전문 매핑할 때 오류가 발생한다.매핑120

응답/응답 오류 전문 매핑할 때 오류가 발생한다.매핑121

전문 고유번호 정보의 유형이 오류 전송인 경우 중복 거래 오류가 발

생했을 때이다.

시스템122

중지된 거래일 경우 발생한다.시스템382

flow check에 어긋난 전문일 때 발생한다.시스템383

시스템999 – malloc 에러

– put_msg_info에서 에러 리턴

– 0 Byte 데이터를 보내려 할 때

– 파싱, 송수신 회선 선택 등의 처리를 마치고 리모트 노드로 송신하

려고 할 때 에러 발생의 경우

8.3.6. 요청 포맷 오류 매핑

Mapper가 요청 매핑을 완료한 후 비즈니스 서비스를 호출한 다음 정상응답 전문이 아닌 요청 포맷 오류

전문이 들어왔을 때 적용되는 매핑이다. 이것도 응답의 한 종류이다.

[그림 8.5] 요청 포맷 오류 응답 매핑

● 공통부

[거래 - 일반정보] 탭의 요청포맷오류 클래스 정보 영역에 '헤더 매핑 클래스명'이 설정된 경우 적용하며,

그렇지 않은 경우 [업무 - 일반정보] 탭의 요청포맷오류 공통헤더 정보에 설정된 '매핑 클래스명'(공통부

요청오류매핑)이 적용된다.

● 상세부

[거래 - 일반정보] 탭의 요청포맷오류 클래스 정보 영역에 설정된 '바디 매핑 클래스명'(거래의 요청포맷

오류매핑)이 적용된다.

● 사용자 서비스

[거래 - 일반정보] 탭의 요청포맷오류 클래스 정보 영역에 '사용자 클래스명'이 설정된 경우 적용되며,

그렇지 않은 경우 [업무 - 일반정보] 탭의 요청포맷오류 공통헤더 정보에 설정된 '사용자 클래스명'이 적

용된다.

36 AnyLink 서버 안내서

Page 53: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

8.3.7. 응답 포맷 오류 매핑

Mapper가 응답 매핑을 완료한 후 응답이 끝났을 때 대외/대내 기관에서 응답 전문의 포맷이 잘못되었음

을 알려주는 응답 포맷 오류 전문이 들어왔을 때 적용되는 매핑이다. 요청의 한 종류로, 내부적으로는 one-

way 요청 전문으로 처리된다.

[그림 8.6] 응답 포맷 오류 응답매핑

● 공통부

[거래 - 일반정보] 탭의 응답포맷오류 클래스 정보 영역에 '헤더매핑 클래스명'이 설정된 경우 적용하며,

그렇지 않은 경우 [업무 - 일반정보] 탭의 응답포맷오류 공통헤더 정보에 설정된 '매핑 클래스명'(공통부

응답오류매핑)이 적용된다.

● 상세부

[거래 - 일반정보] 탭의 응답포맷오류 클래스 정보 영역에 설정된 '바디 매핑 클래스명'(거래의 응답포맷

오류매핑)이 적용된다.

● 사용자 서비스

[거래 - 일반정보] 탭의 응답포맷오류 클래스 정보 영역에 '사용자 클래스명'이 설정된 경우 적용하며,

그렇지 않은 경우 [업무 - 일반정보] 탭의 응답포맷오류 공통헤더 정보에 설정된 '사용자 클래스명'이 적

용된다.

8.4. 파라미터 정보CMapper에서 사용 가능한 거래 파라미터 정보는 다음과 같다. 그 외의 것들은 JMapper에서만 지원되며,

Direct Return을 제외하고는 요청 사용자 서비스를 등록해서 사용할 수 있다. 응답 사용자 서비스는 모두

가능하다.

● Direct Return

● TP-Monitor

● AnyLink Gateway External

● AnyLink Gateway Internal

● HOST(LU0)

● HOST(LU6.2)

● HOST(ECI)

제8장 Mapper 37

Page 54: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

JMapper에서 추가적으로 지원되는 파라미터는 다음과 같다.

● HOST(CTG)

● Java Class

● Servlet, SOAP

● Tuxedo, Tuxedo with JOLT 등

참고

각 파라미터별 항목에 대한 자세한 설명은 "AnyLink 스튜디오 안내서"를 참조한다.

8.5. Pause/Resume 기능요청 전문의 특정 위치의 값에 허용되지 않는 값이 들어올 경우 시스템 오류 매핑을 적용해서 돌려보낸다.

필드 검증과 차이점은 요청 매핑 이전에 수행되며 시스템 오류 매핑이 적용된다는 것이다.

8.6. 중복 거래 체크중복 거래는 동일한 일자에 동일한 전문 고유번호를 가진 동일한 타입의 거래가 들어온 경우를 말한다. 이

경우 3가지 방식으로 처리가 가능하다.

메모리와 데이터베이스에서 중복 거래를 체크할 수 있는데 해당 기관-업무가 하나의 Mapper에서 실행될

경우는 메모리로 설정하고, 2개 이상일 경우에는 데이터베이스로 설정한다.

처리 방식은 다음과 같다.

설명구분

기존에 보냈던 거래의 응답 전문을 재전송한다. 이 기능을 사용하려면 데이터베이스

로깅을 해야 한다.

응답 전송

시스템 오류 매핑을 적용하여 응답 전문을 전송한다.오류 전송

Service Fail을 리턴한다.버림

설정 방법

설정 방법은 다음과 같다.

1. AnyLink 스튜디오 기관-업무정보에서 플래그 정보의 '중복 체크 여부'를 'Memory/DB'로 설정한다.

2. 업무 일반 정보의 '전문 고유번호 정보' 항목에 유형을 설정하고 위치/길이를 등록한다.

3. 거래별로 위치/길이가 다르면 거래 일반 정보의 '전문 고유번호 정보'에 등록한다.

38 AnyLink 서버 안내서

Page 55: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

8.7. 플로우 체크플로우 체크(Flow check) 기능은 전문 간의 선후 관계에 따라 다음에 올 수 있는 전문을 정의하고 그 규칙

에 위반된 전문은 에러 처리한다. 예를 들어 개시 전문이 온 후에 통상 전문이 올 수 있고 종료 전문 이후

에는 통상 전문이 오지 못한다와 같은 규칙이다.

8.7.1. 프로토콜 정보 등록

규칙을 정의하기 위해서 AnyLink 스튜디오에 정해진 방식에 따라 정의해야 한다.

다음과 같은 규칙을 재구성해보면 아래의 표와 같다.

● 개시 전문(0800/100) 후 통상 전문(0200/*)이 올 수 있고, 종료 전문(0800/200) 이후에는 통상 전문이 오

지 못하며, 개시 전문이 다시 와야 통상 전문을 받을 수 있다.

● 개시 전문은 초기화시켜주는 전문으로 AnyLink 기동 후 최초로 통과할 수 있는 전문이다.

● 테스트 전문(0800/400)은 어떤 상태에서도 통과가 가능하다.

● 장애 전문(0800/999)이 오면 장애회복(0800/888)이 와야만 다른 전문 처리가 가능하며 장애 전문이 들

어오기 직전 상태를 유지한다. 들어오기 직전에 개시 상태였으면 통상 전문이 통과가능하고 종료였으

면 불가능하다.

다음은 플로우 체크 규칙의 예이다.

설명다음 상태플래그현재 상태

init을 나타내는 것으로 개시전문인 0800/100이 해당된다.0800/100TrueI

pass를 나타내는 것으로 어느 상황에서나 통과 가능한 테

스트전문인 0800/400이 해당된다.

0800/400TrueP

repair를 나타내는 것으로 장애회복전문의 경우, 현상태를

이전상태로 돌려보내는 역할을 한다.

0800/888TrueR

key에 해당하는 것으로 현상태를 바꿀 수 있는 전문을 나

타낸다.

0800/100,

0800/200,

0800/999

TrueK

0800/100 전문은 다음에 모든 전문이 올 수 있다.*/*True0800/100

0800/200 전문은 통상전문이 올 수 없다(False로 설정되

면 다음 상태 항목에 있는 것이 올 수 없음).

0200/*False0800/200

0800/999 전문 다음에는 장애회복(0800/888)만 올 수 있

다. 물론 규칙에는 없지만 테스트전문도 가능하다.

0800/888True0800/999

제8장 Mapper 39

Page 56: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

다음은 위의 규칙에 따른 플로우 체크의 예를 표시한 것이다.(플로우 체크 예제 시나리오)

통과여부이전상태현재상태입력전문

X--0200/123456

O(Init)--0800/100

O-0800/1000200/333333

O(Pass)-0800/1000800/400

O(Key)-0800/1000800/200

X0800/1000800/2000200/123456

X0800/1000800/2000200/333333

O(Pass)0800/1000800/2000800/400

O(Key)0800/2000800/1000800/100

O0800/2000800/1000200/444444

O0800/2000800/1000200/444444

O(Key)0800/2000800/1000800/999

X0800/1000800/9990200/123456

O0800/1000800/9990800/888

O-0800/1000200/123456

설정 방법

설정 방법은 다음과 같다.

1. 온라인업무뷰의 프로토콜 정보에 규칙을 등록한 후 디플로이한다.

2. AnyLink 스튜디오의 기관-업무 정보에서 플래그 정보의 'Flow 체크 유무'에서 설정한다.

8.8. 결번 체크요청 전문의 전문 고유번호가 순차적으로 들어올 경우 중간에 누락된 전문 고유번호의 목록을 결번 데이

터베이스(ALSKIPNO)에 넣어주는 기능이다.

결번처리를 하려면 전문 고유번호는 순차적으로 들어와야 한다. 1,2,3,4,7,8,10 순으로 전문이 들어왔을

경우, 5,6,9번이 결번이 된다. 그러나 네트워크 상황이나 상대방 시스템에서 순서가 뒤바뀌어 들어올 수

있으므로 최종 결번 목록(ALSKIPNO 테이블)이 별도로 관리되어야 한다.

1,2,4,6,3,7,5,10순으로 들어왔다고 가정하면 다음과 같이 처리된다.

40 AnyLink 서버 안내서

Page 57: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

최종 전문고유번호 (ALMSGNO.RCV_TX_UID)결번 목록(ALSKIPNO)입력 전문고유번호

01

12

234

43.56

653

657

75

78,910

(1) 최종 전문 고유번호(ALMSGNO테이블의 RCV_TX_UID)보다 입력 전문 고유번호가 작으면 결번인 값

으로 처리가 된다. (3,5가 들어온 경우)

(2) 최종 전문고유 번호+1 보다 크면 결번이 발생한다. (4,6,10이 들어온 경우)

설정 방법

AnyLink 스튜디오의 기관-업무정보에서 플래그 정보의 '결번 체크 여부' 항목에 설정을 'Memory' 또는

'DB'로 적합하게 설정한다. 'Memory'로 설정할 경우 DBIO를 담당하게 될 서버인 skipno를 등록해서 띄워

야 한다.

8.9. 채번전문 추적번호와 전문 고유번호를 채번해주며 데이터베이스를 이용한 채번과 메모리를 이용한 채번으로

나뉜다. 채번은 요청 매핑을 한 직후에만 이루어진다.

● 전문 추적번호

전문 추적번호는 대외 기관과 비동기 통신을 할 경우 요청 전문에 대한 응답 전문을 찾아내기 위한 키에

해당하는 필드이다.

● 전문 고유번호

전문 고유번호는 당일의 한 거래에 유일하게 부여되는 번호로 중복 거래 체크, 결번 체크에 사용되는 필

드이다. 취소 거래가 올 경우 전문 추적번호는 달라지나 전문 고유번호는 유지된다.

8.9.1. 메모리 채번

해당 기관-업무가 한 개의 Mapper에서만 실행될 경우 채번을 위해 타 Mapper와 동기화할 필요가 없으므

로 성능 향상을 위해 메모리에서 채번을 한다. 채번한 값은 주기적으로 데이터베이스에 기록되며 이 값이

AnyLink 환경 파일의 DB_CHK_POINT_INTERVAL에 해당한다.

제8장 Mapper 41

Page 58: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

8.9.2. 데이터베이스 채번

여러 개의 Mapper에서 메모리 채번할 경우 동일한 번호가 발생할 수 있다. 이때 Mapper 간의 채번 동기화

가 이루어져야 하기 때문에 데이터베이스를 이용한 채번을 수행한다. 데이터베이스를 이용할 경우 요청

매핑 후 데이터베이스에서 Lock을 설정하고 값을 얻어와 1을 증가시킨 후 업데이트하기 때문에 거래 성

능이 떨어지게 되므로 유의해야 한다.

설정 방법

AnyLink 스튜디오의 기관-업무정보에서 플래그 정보의 '전문추적번호 채번 여부'와 플래그 정보의 '전문

고유번호 채번 여부'항목에 설정을 'Memory/DB'로 적합하게 설정한다.

8.9.3. Cache 기능

요청입력 전문의 특정 위치의 값을 저장해 두었다가, 응답출력 전문에 다시 붙여서 내보내는 기능이다. 기

관 업무별로 비즈니스 서비스로 넘기지 않고 다시 붙여서 돌려보내 주는 필드가 있을 경우에 사용된다.

요청입력 전문 Cache 기능과 차이점은 기관 업무별로 위치와 길이를 다르게 설정할 수 있는 것으로, 특정

기관에 따라 붙어오는 필드에 대해 적용된다.

설정 방법AnyLink 스튜디오의 기관-업무정보에서 'Cache 위치/Cache길이' 항목에 등록한다.

8.10. 전문 로깅전문 로깅은 요청 입력/출력, 응답 입력/출력 4곳에서 남기며 파일과 데이터베이스로 각각 남길 수 있다.

설정은 AnyLink 스튜디오에서 한다.

8.10.1. 파일 로깅

파일 로깅은 AnyLink 스튜디오의 기관-업무정보의 '파일 로깅 유무'나 거래 일반 정보에서 로그정보의 '파

일로그'가 'Yes'로 설정되어야 남길 수 있다. 온라인 게이트웨이처럼 별도의 에러 로깅은 남기지 않는다.

파일 로깅은 Sync 모드와 Async 모드로 구분해서 설정이 가능하므로 상황에 맞게 적합한 방식을 채택한

다.

● Sync 모드

Sync 모드는 거래 중에 파일 로깅 후 서비스를 호출하는 구조로, 장애가 발행하는 경우 데이터 유실 가

능성이 없는 것이 장점이다.

Sync 모드일 경우는 CLOPT 절에 다음과 같이 설정한다.

설명항목

설정할 경우 Sync 모드로 동작한다.s

42 AnyLink 서버 안내서

Page 59: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

● Async 모드

Async 모드는 파일 로깅 Thread를 별도로 두어 해당 Thread에서 주기적으로 파일 로깅을 한 번에 수행

하는 것으로, Sync 모드에 비해 성능이 좋다.

Async 모드일 경우는 CLOPT 절에 다음과 같이 설정한다.

설명항목

파일 로깅할 때 로그 pool의 크기로 이 개수만큼 파일에 쌓이지 않고 대기하고 있을 수 있

는 전문 수이다. (기본값 : 500개)

g

이 외에 파일 로그 관련 옵션은 다음과 같다.

설명항목

로그 파일을 특정 크기 단위로 나눠서 남기고자 할 경우 사용한다. 이 값은 Byte 단위로

여러 개의 Mapper를 띄웠을 때 하나의 Mapper가 최대한 남길 수 있는 크기이다. 그러므

로 여러 개의 Mapper를 띄웠을 때는 최대 Mapper 개수 * n Byte까지 커질 수 있다.

n

다음은 로그 파일의 경로, 파일명, 파일 구조에 대한 설명이다.

● 파일 경로

온라인 게이트웨이에서 남기는 것과 동일하다. 다음의 순서로 먼저 등록된 값이 적용된다.

– 게이트웨이별

1. 노드에 있는 로그 파일 경로

2. $TMAXDIR/appbin

– 기관별, 기관-업무별, 종별

1. 기관-업무에 등록된 로그 파일 경로

2. 노드에 있는 로그 파일 경로

3. $TMAXDIR/appbin

● 파일명

기관-업무정보의 '파일 로그 유형'의 설정에 따라 달라진다.

– 게이트웨이별(Mapper 서버명으로 남음)

c.<서버명>.YYYYMMDD.log

– 기관별

c.<기관코드>.YYYYMMDD.log

제8장 Mapper 43

Page 60: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

– 기관-업무별

c.<기관코드><업무코드>.YYYYMMDD.log

– 종별

c.<기관코드><업무코드>.<종별코드>.YYYYMMDD.log

● 파일 구조

시:분:초:밀리초;기관코드;업무코드;종별코드;거래코드;log_id;log_point;header_size;

tx_uid;err_code;tx_time;res_flag;xid;tx_state;session_index;전문길이;전문데이터

다음은 항목에 대한 설명이다.

설명항목

파일로깅 시점의 시각시:분:초:밀리초

기관코드기관코드

업무코드업무코드

종별코드종별코드

거래코드거래코드

해당 전문에 유일하게 붙여진 번호log_id

log_point – 게이트웨이에서의 ReqIn(1)

– Mapper에서 ReqIn(2)

– Mapper에서 ReqOut(3)

– 게이트웨이에서 ReqOut(4)

– 게이트웨이에서 ResIn(5)

– Mapper에서 ResIn(6)

– Mapper에서 ResOut(7)

– 게이트웨이에서 ResOut(8)

– 게이트웨이에서 응답 포맷 ReqIn(9)

– Mapper에서 응답 포맷 ReqIn(10)

– Mapper에서 응답 포맷 ReqOut(11)

– 게이트웨이에서 응답 포맷 ReqOut(12)

헤더크기header_size

전문 고유번호tx_uid

에러 코드(에러 발생 시 0이 아닌 값)err_code

Request Input을 받은 시점으로부터 수행시간(단위: ms)tx_time

응답 유무(통계 집계에 사용됨)res_flag

XA 거래 시 Global Tran IDxid

44 AnyLink 서버 안내서

Page 61: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

설명항목

TX Recovery statustx_state

게이트웨이에서 전문이 송수신된 세션의 index(게이트웨이 기동시 내부적으로 할당

됨)를 나타내는 것으로, Mapper에서는 session_index의 의미가 없으므로 -1로 고정

하여 로그를 남긴다.

session_index

전문의 길이전문길이

전문 데이터전문데이터

8.10.2. 데이터베이스 로깅

데이터베이스 로깅은 AnyLink 스튜디오의 기관-업무 정보의 'DB 로깅'이나 거래-일반 정보에서 로그 정보

의 'DB로깅'에서 원하는 로깅 구간을 선택하여 남길 수 있다. 자세한 내용은 “제9장 마스터 로그”를 참조

한다.

8.11. 사용자 서비스매핑 후 사용자의 코딩에 의한 처리를 하고 싶을 때 사용자 서비스를 작성해서 등록하면 Mapper가 호출

한다. 사용자 서비스에서 Mapper가 제공하지 않는 매핑 기능이나 데이터베이스에서 읽어와서 매핑하는

것, 암호화 라이브러리를 이용하여 처리하는 것 등의 작업을 수행할 수 있다.

8.11.1. CMapper

요청 사용자 서비스와 응답 사용자 서비스로 나누어진다. 요청 사용자 서비스는 tpacall로 호출되어 tpforward

로 비즈니스 서비스를 호출하며, 응답 사용자 서비스는 tprelay로 호출되어 tpreturn한다.

[그림 8.7] 사용자 서비스가 추가된 CMapper 구조

제8장 Mapper 45

Page 62: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

사용자 서비스 공통 함수

사용자 서비스를 작성할 때 usrinc/aluserapi.h 헤더 파일을 include해야 한다.

● 초기화

tpsvrinit() 함수에서 사용자 서비스 초기화를 위한 함수를 반드시 호출해야 한다. 호출하지 않으면 endian

문제가 발생해서 오동작할 수 있다.

int alsvrinit(int argc, char *argv[]);

0을 리턴하면 정상, 음수를 리턴하면 오류가 발생한 것이다.

● 비즈니스 서비스 설정 함수

요청 사용자 서비스를 수행한 후에 호출될 비즈니스 서비스는 거래의 파라미터 정보에 등록된 서비스

명이다. 이때 사용자 서비스에서 전문 내용에 따라 다른 서비스를 호출하고자 할 때 사용자 서비스 내에

서 라우팅 기능을 제공한다.

다음의 함수를 통해서 등록된 서비스가 아닌 다른 서비스를 호출할 수 있다. prolog와 epilog 함수 사이

에서 호출하면 된다.

void alusr_set_forward_svc(char *svcname);

다음은 현재의 호출될 비즈니스 서비스명을 얻어오는 함수이다.

void alusr_get_forward_svc(char *svcname);

● 사용자 API

온라인 게이트웨이의 custom.c 개발할 때 지원되는 것과 동일한 ASCII와 EBCDIC 간의 변환을 위한 함

수들이 지원된다. “AnyLink Online 게이트웨이 안내서”의 “2.3.3. 사용자 API”를 참고한다.

이 API를 사용할 때는 Tmax 라이브러리 디렉터리에 배포되는 libalcmapper2.a 파일을 사용자 서비스

linking 시점에 포함시켜야 한다.

요청 사용자 서비스

다음과 같이 2개의 prolog, epilog 함수를 호출하며, 그 사이에서 수행할 작업을 한다. epilog 함수에서 tp

forward를 수행하므로 그 다음에 수행하는 작업은 실행되지 않는다.

_anylink_request_prolog

_anylink_request_epilog

epilog로 종료할 경우 비즈니스 서비스를 호출하게 되는데, 그렇지 않고 바로 사용자 서비스에서 자신을

호출한 Mapper로 리턴할 수 있는 함수가 있다. 사용자 서비스만을 수행한 후 다시 돌아가는 것이다.

_anylink_request_direct_return

예제 코드는 다음과 같다.

#include <usrinc/alsvcapi.h>

#include <usrinc/aluserapi.h>

46 AnyLink 서버 안내서

Page 63: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

/* ----- user include header files ----- */

/* 헤더 파일은 매핑코드 생성 시 노드의 include 경로에 있는 파일을

* 활용하면 된다.

*/

#include "extheader.h"

#include "intheader.h"

#include "extbody.h"

#include "intbody.h"

USERREQMAP(TPSVCINFO *msg)

{

ALUSERSVC usersvc;

/* ---- declare in/out header/body struct ---- */

extheader_t *inhp;

intheader_t *outhp;

extbody_t *indp;

intbody_t *outdp;

char *filler2 = "user svc passed!!";

/* ---- call prolog ---- */

usersvc.rcvdata = msg->data;

usersvc.rcvlen = msg->len;

_anylink_request_prolog(&usersvc);

/* ---- in/out declare ---- */

inhp = (extheader_t *)usersvc.inmsg;

indp = (extbody_t *)(inhp + 1);

outhp = (intheader_t *)usersvc.outmsg;

outdp = (intbody_t *)(outhp + 1);

/* ---- user svc mapping ---- */

memcpy(outdp->filler2, filler2, strlen(filler2));

memcpy(outdp->aaa, indp->bbb, 10);

/* ---- call epilog ---- */

_anylink_request_epilog(&usersvc);

}

응답 사용자 서비스

응답 사용자 서비스의 작성 방법은 요청 사용자 서비스와 동일하고 prolog, epilog 함수를 다음과 같이 사

용하면 된다.

_anylink_response_prolog

_anylink_response_epilog

제8장 Mapper 47

Page 64: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

컴파일 방법

사용자서비스는 일반 TCS 서버를 컴파일하는 방법으로 컴파일하며 -laluserapi -lalcmapper2 옵션을 추가

해서 컴파일한다.

AnyLink Header 처리

요청 사용자 서비스와 응답 사용자 서비스에서 AnyLink Header를 읽어와서 처리할 수 있다. AnyLink

Header 포인터를 읽어오기 위해서는 다음 함수를 사용하며, 이 경우 AnyLink Header의 정의 때문에

alsvcapi.h 파일을 추가로 include해야 한다.

_get_anylink_header

위의 함수는 반드시 prolog 호출 뒤에 사용되어야 하며, 예제 코드는 다음과 같다.

#include <usrinc/alsvcapi.h>

#include <usrinc/aluserapi.h>

/* ----- user include header files ----- */

/* 헤더 파일은 매핑 코드 생성할 때 노드의 include 경로에 있는 파일을

* 활용하면 된다.

*/

#include "extheader.h"

#include "intheader.h"

#include "extbody.h"

#include "intbody.h"

USERREQMAP(TPSVCINFO *msg)

{

alinkhead_t *alheader;

ALUSERSVC usersvc;

/* ---- declare in/out header/body struct ---- */

extheader_t *inhp;

intheader_t *outhp;

extbody_t *indp;

intbody_t *outdp;

char *filler2 = "user svc passed!!";

/* ---- call prolog ---- */

usersvc.rcvdata = msg->data;

usersvc.rcvlen = msg->len;

_anylink_request_prolog(&usersvc);

/* ---- get AnyLink Header ---- */

alheader = get_anylink_header();

/* ---- in/out declare ---- */

inhp = (extheader_t *)usersvc.inmsg;

48 AnyLink 서버 안내서

Page 65: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

indp = (extbody_t *)(inhp + 1);

outhp = (intheader_t *)usersvc.outmsg;

outdp = (intbody_t *)(outhp + 1);

/* ---- user svc mapping ---- */

memcpy(outdp->filler2, filler2, strlen(filler2));

memcpy(outdp->aaa, indp->bbb, 10);

/* ---- call epilog ---- */

_anylink_request_epilog(&usersvc);

}

8.11.2. JavaMapper

JavaMapper는 Java로 작성한 서비스를 호출할수 있다. 서비스를 Java로 작성해서 AnyLink의 클래스 패

스(classpath)에 디플로이한다.

다음은 사용자 클래스의 상위 클래스이며, 사용자는 AnyBusiness클래스를 상속받아 process 메소드를

구현하면 된다.

1. AnyBusiness class를 상속한 형태로 정의한다.

public class Operation extends AnyBusiness {

2. process 함수 내에 수행할 biz logic을 정의한다.

public void process();

3. 전문을 얻어온다. 타입이 다른 경우 각 타입에 해당하는 함수를 사용한다.

● VO의 경우

OperationVO vo = (OperationVO) getRequestVo();

● NameValue일 경우

a. name얻어온다.

public String[] getRequestNames();

b. value를 얻어온다.

public String[] getRequestValues();

● XML일 경우

xml 전문을 얻어온다.

getRequestXMLObject()

제8장 Mapper 49

Page 66: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

● Stream일 경우

Stream 전문을 얻어온다.

getRequestBodyObject

getRequestHeaderObject

4. 전문을 리턴한다. 타입이 다른 경우 각 타입에 해당하는 함수를 사용한다.

● VO의 경우

setResponseVo(vo);

● NameValue일 경우

a. name을 리턴한다.

public void setResponseNames(String[] responseNames);

b. value를 리턴한다.

public void setResponseValues(String[] responseValues)

● XML일 경우

xml 전문을 얻어온다.

setResponseXMLObject()

● Stream일 경우

Stream 전문을 얻어온다.

setResponseBodyObject

setResponseHeaderObject

AnyBusiness 클래스는 다음과 같다.

package anylink.common.base;

public abstract class AnyBusiness {

// error

String error = null;

String errorMsg = null;

// request objects

Object requestVo = null;

AnyObject requestXmlObject = null;

AnyObject requestHeaderObject = null;

AnyObject requestBodyObject = null;

String[] requestNames = null;

50 AnyLink 서버 안내서

Page 67: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

String[] requestValues = null;

// response objects

byte[] responseBytes = null;

Object responseVo = null;

AnyObject responseXmlObject = null;

AnyObject responseHeaderObject = null;

AnyObject responseBodyObject = null;

String[] responseNames = null;

String[] responseValues = null;

// VO init

public void init(Object object) {

requestVo = object;

}

// XML init

public void init(AnyObject object) {

requestXmlObject = object;

}

// stream init

public void init(AnyObject header, AnyObject body) {

requestHeaderObject = header;

requestBodyObject = body;

}

// Name-Value init

public void init(String[] names, String values[]) {

requestNames = names;

requestValues = values;

}

// process

public abstract void process() throws Exception;

public String getError() {

return error;

}

public void setError(String error) {

this.error = error;

}

public String getErrorMsg() {

return errorMsg;

}

제8장 Mapper 51

Page 68: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

public void setErrorMsg(String errorMsg) {

this.errorMsg = errorMsg;

}

/*************************

* get & set method *

*************************/

public Object getRequestVo() {

return requestVo;

}

public void setRequestVo(Object requestVo) {

this.requestVo = requestVo;

}

public AnyObject getRequestXmlObject() {

return requestXmlObject;

}

public void setRequestXmlObject(AnyObject requestXmlObject) {

this.requestXmlObject = requestXmlObject;

}

public AnyObject getRequestHeaderObject() {

return requestHeaderObject;

}

public void setRequestHeaderObject(AnyObject requestHeaderObject) {

this.requestHeaderObject = requestHeaderObject;

}

public AnyObject getRequestBodyObject() {

return requestBodyObject;

}

public void setRequestBodyObject(AnyObject requestBodyObject) {

this.requestBodyObject = requestBodyObject;

}

public byte[] getResponseBytes() {

return responseBytes;

}

public void setResponseBytes(byte[] responseBytes) {

this.responseBytes = responseBytes;

52 AnyLink 서버 안내서

Page 69: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

}

public Object getResponseVo() {

return responseVo;

}

public void setResponseVo(Object responseVo) {

this.responseVo = responseVo;

}

public AnyObject getResponseXmlObject() {

return responseXmlObject;

}

public void setResponseXmlObject(AnyObject responseXmlObject) {

this.responseXmlObject = responseXmlObject;

}

public AnyObject getResponseHeaderObject() {

return responseHeaderObject;

}

public void setResponseHeaderObject(AnyObject responseHeaderObject) {

this.responseHeaderObject = responseHeaderObject;

}

public AnyObject getResponseBodyObject() {

return responseBodyObject;

}

public void setResponseBodyObject(AnyObject responseBodyObject) {

this.responseBodyObject = responseBodyObject;

}

public String[] getRequestNames() {

return requestNames;

}

public void setRequestNames(String[] requestNames) {

this.requestNames = requestNames;

}

public String[] getRequestValues() {

return requestValues;

}

public void setRequestValues(String[] requestValues) {

제8장 Mapper 53

Page 70: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

this.requestValues = requestValues;

}

public String[] getResponseNames() {

return responseNames;

}

public void setResponseNames(String[] responseNames) {

this.responseNames = responseNames;

}

public String[] getResponseValues() {

return responseValues;

}

public void setResponseValues(String[] responseValues) {

this.responseValues = responseValues;

}

}

Java 서비스의 예제 코드는 다음과 같다.

package com.bpr.dp.dp0103;

import java.lang.reflect.Method;

import anylink.common.base.AnyBusiness;

import com.bpr.co.DgbCommon;

import com.bpr.co.anymsg.Header;

public class CallFromHost extends AnyBusiness {

/* VO 샘플 process */

public void process() throws Exception {

try {

Object requestObject = this.getRequestVo();

/* 정상적인 처리 */

/* responseVo는 set을 해야 한다. */

if (requestObject != null) {

update(requestObject);

Object responseObject = requestObject;

this.setResponseVo(responseObject);

}

/* 비정상적인 처리

// : error, errorMsg, responseVo는 셋을 해줘야 합니다

else {

this.setError("334");

this.setErrorMsg("RequestVO Null");

Object responseObject = requestObject;

54 AnyLink 서버 안내서

Page 71: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

this.setResponseVo(responseObject);

}

// Exception을 던지더라도 error, errorMsg, responseVo는 셋을 해줘야합니다

} catch (Throwable t) {

this.setError("345");

this.setErrorMsg("Exception");

this.setResponseVo(null);

throw new Exception(t);

}

}

//Business Logic

public void update(Object obj){

Class callClass = obj.getClass();

String str = callClass.getName();

String accountNo = "";

String amount = "";

try{

DgbCommon common = DgbCommon.getInstance();

BPRDP0103Home bprDPHome = (BPRDP0103Home)

common.getEJBHome(BPRDP0103Home.JNDI_NAME);

BPRDP0103 bprDP0103 = bprDPHome.create();

//공통부 header 받아오기

Method m2 = callClass.getMethod("getHeader",null);

Header hdt = (Header)m2.invoke(obj,null);

//개별부 받아오기

Method[] callMethods = callClass.getMethods();

for (int i=0; i<callMethods.length; i++) {

Method m = callMethods[i];

String mName = m.getName();

if (mName.lastIndexOf("get")>=0

&& !mName.equals("getBytes")

&& !mName.equals("getClass")) {

try {

if(mName.equals("getRvsAllowPay")) {

accountNo = hdt.getHdrAccountBh();

amount = (String)m.invoke(

obj,null);

}

} catch (Throwable t) {

System.out.println("illegal method = "+mName);

}

제8장 Mapper 55

Page 72: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

}

}

}catch(Exception e){

System.out.println(e.toString());

}

}

}

8.12. Mapper 호출 방법Mapper는 2가지 방식으로 호출 가능하다.

● 하나의 Mapper에 기관-업무가 할당된 경우에는 AnyLink Header 없이 호출 가능하다.

● 그 외의 경우는 AnyLink Header를 생성해서 호출해야 한다.

8.12.1. CMapper

매퍼 호출 프로그램을 작성할 때 usrinc/alsvcapi.h 헤더 파일을 include해야 한다.

Mapper에 기관-업무가 할당되지 않은 경우

이 경우는 호출되는 Mapper에 임의의 기관-업무를 받을 수 있다는 의미이므로, AnyLink Header를 조립해

서 전달해야 한다.

● AnyLink Header 구조

typedef struct {

int magic;

int seqno;

int reqtype;

int msgtype;

int flags;

int etc;

int etc2;

char inst_code[LEN_INST_CODE];

char appl_code[LEN_APPL_CODE];

char kind_code[LEN_KIND_CODE];

char tx_code[LEN_TX_CODE];

char msg_uid[LEN_MSG_UID];

char log_id[LEN_LOG_ID];

char resvd[6];

} alinkhead_t;

56 AnyLink 서버 안내서

Page 73: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

각 파라미터에 대한 설명은 다음과 같다.

설명파라미터

대외요청(REQ_EXTERNAL) 또는 대내요청(REQ_INTERNAL)을 설정한다.reqtype

AL_MSG_DATA(101)로 고정된다.msgtype

기관 코드를 설정한다.inst_code

업무 코드를 설정한다.appl_code

대표 전문 종별 코드를 설정한다.kind_code

거래 코드를 설정한다.tx_code

전문 고유번호를 설정한다.msg_uid

마스터 로그의 LOG_ID를 설정한다.log_id

● 예제

다음은 CMapper를 호출하는 Tmax 클라이언트 예제이다.

#include <stdio.h>

#include <usrinc/alsvcapi.h>

char snddata[] = "abcdefg0200333XXXXXXX777777";

int main(int argc, char *argv[])

{

char *sndbuf, *rcvbuf, *dp, *datap;

long rcvlen, sndlen;

alinkhead_t *ahp;

datap = (char *)_fin_tx_data;

if (tpstart((TPSTART_T *)NULL) == -1)

return -1;

sndbuf = (char *)tpalloc("CARRAY", NULL, 4096);

if (sndbuf == NULL) {

tpend();

return -1;

}

rcvbuf = (char *)tpalloc("CARRAY", NULL, 4096);

if (rcvbuf == NULL) {

tpfree((char *)sndbuf);

tpend();

return -1;

}

memset(sndbuf, 0x00, 4096);

제8장 Mapper 57

Page 74: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

ahp = (alinkhead_t *)sndbuf;

ahp->magic = 5555;

ahp->reqtype = REQ_INTERNAL;

ahp->msgtype = AL_MSG_DATA;

/***** 주의 : AnyLink Header 에 들어가는 string 은 null term.하지

않으므로 strcpy 대신 memcpy 를 사용할 것 ****/

/* 스튜디오에 등록한 기관코드 4 자리 이내 */

memcpy(ahp->inst_code, "INST", LEN_INST_CODE);

/* 스튜디오에 등록한 업무코드 4 자리 이내 */

memcpy(ahp->appl_code, "APPL", LEN_APPL_CODE);

/* 스튜디오에 등록한 전문종별코드 8 자리 이내 */

memcpy(ahp->kind_code, "0200", 4);

/* 스튜디오에 등록한 거래구분코드 12 자리 이내 */

memcpy(ahp->tx_code, "333", 3);

/* 전문고유번호 10 자리 이내로 추출하여 처리함 : optional */

memcpy(ahp->msg_uid, "777777", 6);

dp = (char *)(ahp + 1); /* AnyLink 헤더 다음에 전문을 붙임 */

memcpy(dp, snddata, strlen(snddata));

sndlen = ALINK_HEADER_SIZE + strlen(snddata);

/* 해당 C-MAPPER 서비스명으로 tpcall or tpacall 함 */

if(tpcall("CMAPPER", sndbuf, sndlen, &rcvbuf, &rcvlen, 0)== -1) {

printf("Can't send request to service CMAPPER,"

"tperrno[%d]\n", tperrno);

tpfree((char *)sndbuf);

tpfree((char *)rcvbuf);

tpend();

return -1;

}

tpfree((char *)sndbuf);

tpfree((char *)rcvbuf);

tpend();

return 0;

}

Mapper에 기관-업무가 할당된 경우

AnyLink Admin에서 Mapper를 등록할 때 기관 코드, 업무 코드를 선택한다.

호출할 때 AnyLink 헤더 없이 전문 데이터만 보낸다.

● 예제

다음은 CMapper를 호출하는 Tmax 클라이언트 예제이다.

58 AnyLink 서버 안내서

Page 75: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

#include <stdio.h>

#include <usrinc/alsvcapi.h>

char snddata[] = "abcdefg0200333XXXXXXX777777";

int main(int argc, char *argv[])

{

char *sndbuf, *rcvbuf, *dp, *datap;

long rcvlen, sndlen;

alinkhead_t *ahp;

datap = (char *)_fin_tx_data;

if (tpstart((TPSTART_T *)NULL) == -1)

return -1;

sndbuf = (char *)tpalloc("CARRAY", NULL, 4096);

if (sndbuf == NULL) {

tpend();

return -1;

}

rcvbuf = (char *)tpalloc("CARRAY", NULL, 4096);

if (rcvbuf == NULL) {

tpfree((char *)sndbuf);

tpend();

return -1;

}

memset(sndbuf, 0x00, 4096);

memcpy(sndbuf, snddata, strlen(snddata));

sndlen = strlen(snddata);

/* 해당 C-MAPPER 서비스명으로 tpcall or tpacall함 */

if(tpcall("CMAPPER", sndbuf, sndlen, &rcvbuf, &rcvlen, 0)

== -1) {

printf("Can't send request to service CMAPPER,"

"tperrno[%d]\n", tperrno);

tpfree((char *)sndbuf);

tpfree((char *)rcvbuf);

tpend();

return -1;

}

tpfree((char *)sndbuf);

제8장 Mapper 59

Page 76: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

tpfree((char *)rcvbuf);

tpend();

return 0;

}

8.12.2. JavaMapper

JavaMapper의 경우는AnyLink Admin에 Mapper를 등록할 때, 기관-업무를 등록한 경우에는 처리하고 있

지 않다. 즉, 게이트웨이에서 들어온 요청에 대하여 JavaMapper는 항상 AnyLink Header를 필요로 한다.

AnyLink Header의 구조는 다음과 같다.

public class AnyLinkHeader {

int magic;

int seqno;

int reqtype;

int msgtype; /* 거래별 message type */

int flags; /* 에러시 에러코드 set */

int etc;

int etc2; /* Mapper에서 버리고 c 엔진에

버렸다고 알리기위함 4번을 보낸다 */

String inst_code; // 기관코드

String appl_code; // 업무코드

String kind_code; // 종별코드

String tx_code; // 거래코드

String msg_uid; /* message unique id.(전문추적번호) */

String log_id; // online인 경우 log-id, scheduler에서

명령 내릴때는 filecode

/* online(tmax-generated):

일자(8) + 시간(6) + 마이크로초(6) + process_id(6) + node_id(2) */

/* library call(jeus-generated):

일자(8) + 시간(6) + 밀리초(3) + "000" + container name hash(6) + node name hash(2) */

String resvd; // scheduler에서 명령 내릴때는 (sched_type)(op_type)

}

각 파라미터에 대한 설명은 다음과 같다.

설명파라미터

대외요청(REQ_EXTERNAL) 또는 대내요청(REQ_INTERNAL)을 설정한다.reqtype

AL_MSG_DATA(101)으로 고정된다.msgtype

기관 코드를 설정한다.inst_code

업무 코드를 설정한다.appl_code

60 AnyLink 서버 안내서

Page 77: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

설명파라미터

대표 전문 종별 코드를 설정한다.kind_code

거래 코드를 설정한다.tx_code

전문 고유번호를 설정한다.msg_uid

마스터 로그의 LOG_ID를 설정한다.log_id

그러나 AnyLink 클라이언트 라이브러리를 사용하여 송신하거나 게이트웨이를 통해 전문을 수신하는 경

우에, AnyLink Header는 각 라이브러리 및 게이트웨이에서 조립하므로 별도로 설정할 필요는 없다.

다음은 JavaMapper를 호출하는 Java Client 샘플이다. 일반적인 라이브러리 형태로 사용할 경우와 AnyLink

클라이언트 라이브러리를 사용하는 경우를 예로 든다.

라이브러리 형태로 사용할 경우

모든 타입의 전문에 대하여 라이브러리 형태로 사용하는 것은 가능하다. 특히, VO(Value Object) 타입의

전문은 JAVA Application단에서 AnyLink 라이브러리를 이용해서 process를 생성하여 업무 서비스를 수행

하는 것이 일반적이다. AnyLink가 구동되고 있는 WAS의 JSP, 서블릿, EJB에서 AnyLink process를 생성

한 서비스가 가능하다.

반면, 이러한 AnyLink process를 생성하는 인터페이스를 별도로 제공하지 않으며, 사이트의 해당 업무에

맞는 성격으로 별도의 Wrapper를 생성한 후 사용한다.

예제 코드는 다음과 같다.

<%@ page contentType="text/html; charset=EUC-KR" %>

<%@ page import="java.util.*" %>

<%@ page import="com.bprtest.*" %>

<%@ page import="anylink.engine.*" %>

<%@ page import="anylink.common.object.*" %>

<%@ page import="anylink.common.base.*" %>

<html><body>

Call Start :

<%

try {

AnyLink al = new AnyLink();

Map _paramMap = new HashMap();

System.out.println("==================DP0203Action3==================");

_paramMap.put("trxCode","TABPR001 ");

_paramMap.put("hdrDocCode","0800");

_paramMap.put("hdrBizCode","100000000");

_paramMap.put("hdrHb","1890705");

_paramMap.put("hdrInMedia","I");

_paramMap.put("hdrInGbn","N");

_paramMap.put("hdrOutMedia","I");

_paramMap.put("hdrOutGbn","0");

제8장 Mapper 61

Page 78: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

_paramMap.put("hdrStateKey","11111111111111111111");

_paramMap.put("hdrJuminDbh","7104251787513");

_paramMap.put("hdrAccountBh","2222222222222222");

_paramMap.put("hdrBrch","000");

_paramMap.put("hdrChiBrch","111");

_paramMap.put("hdrPosNo","22");

_paramMap.put("hdrWkProGb","7194");

OpenTest start = new OpenTest();

Header header = new Header(_paramMap);

start.setHeader(header);

com.bprtest.OpenTestR output =

(com.bprtest.OpenTestR)al.process("01","100000000",start);

out.println("<p>");

out.println("DATE ==>>> " + output.getHeader().getHdrSndDate());

out.println("<p>");

out.println("TIME ==>>> " + output.getHeader().getHdrSndTime());

out.println("<p>");

//out.println("DocSeq ==>>> " +

output.getHeader().getHdrDocseq());

%>

<%

} catch ( Exception e ) {

e.printStackTrace();

out.println("Error");

}

%>

</body>

</html>

AnyLink 클라이언트 라이브러리를 사용할 경우

AnyLink 클라이언트 라이브러리를 사용하면 anylink.tsclient.tcp 패키지의 TCPClient/VO 클래스,

anylink.tsclient.soap 패키지의 SOAPClient 클래스를 사용하여 스트림 전문, VO 객체 등을 AnyLink 게이

트웨이로 쉽게 송신할 수 있다. 또한 AnyLink Header를 조립하는 번거로움을 줄일 수 있다.

스트림 전문 송신의 예제는 다음과 같다.

import anylink.engine.*;

import anylink.common.object.*;

import anylink.common.base.*;

import anylink.tsclient.tcp.*;

public class RevN200910 {

public static void main(String[] args) {

String messageHeader = "KFBCIF 90 03016TN010102 ";

String messageBody = "7405112065617155 ";

62 AnyLink 서버 안내서

Page 79: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

System.out.println("=== Begin Reverse ===");

try {

TCPClient tcpClient = new TCPClient(

"192.168.2.129", 11002 );

byte[] returnedData = tcpClient.send("0200",

"910", messageHeader.getBytes(),

messageBody.getBytes());

} catch(Exception e) {

e.printStackTrace();

}

System.out.println("=== End Reverse ===");

}

}

8.13. Mapper CacheMapper Cache 기능은 Mapper로 전달된 데이터 중 매핑에 사용되지 않는 부분을 잘라서 저장해 놓은 후

응답 전문에 다시 붙여서 내보내는 기능이다.

전문 일부를 잘라야 하는 경우 대부분 게이트웨이 Cache를 사용함으로써 해결할 수 있지만 잘려나가는

데이터의 일부가 파싱에 사용되는 경우에는 불가능하다. 그렇기 때문에 게이트웨이에서는 잘라내지 못하

고 Mapper에서 잘라내는 것이다. VO 클라이언트에서 수신된 전문이 대표적인 예이다.

제8장 Mapper 63

Page 80: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템
Page 81: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

제9장 마스터 로그

마스터 로그는 거래 전문을 데이터베이스에 저장하거나 데이터베이스에서 조회하는 역할을 담당한다.

AnyLink 스튜디오에서 구간별 로그 포인트를 설정할 때 해당하는 구간의 전문을 데이터베이스에 저장하

며, AnyLink Admin에서 조회할 수 있다.

9.1. 마스터 로깅마스터 로깅(Master Logging)은 파일 로깅으로 남기는 데이터를 데이터베이스로 남기는 것으로, Mapper

가 마스터 로그(Master Log) 서비스를 호출하여 ALMSTLOG라는 테이블에 넣는다.

ALMSTLOG 테이블 구조는 다음과 같다(Master Log DB Schema).

설명크기타입필드명

년월일(YYYYMMDD)8CHARPROC_DATE

시분초마이크로초(hhmmssUS)9CHARPROC_MTIME

해당 전문에 유일하게 붙여진 번호28CHARLOG_ID

기관 코드4VARCHAR2INST_CODE

업무 코드4VARCHAR2APPL_CODE

종별 코드8VARCHAR2KIND_CODE

매핑 상태(파일 로깅과 동일)2NUMBERLOG_POINT

거래 코드32VARCHAR2TX_CODE

전문 데이터LONG RAWMSG_DATA

헤더크기5NUMBERHEADER_SIZE

전문 고유번호128VARCHAR2TX_UID

에러 코드(에러 발생 시 0이 아닌 값)4NUMBERERR_CODE

Request Input을 받은 시점으로부터 수행시간(단위: ms)6NUMBERTX_TIME

응답 유무(통계 집계에 사용됨)2NUMBERRES_FLAG

시(hh)(통계 집계에 사용됨)2CHARPROC_HOUR

XA 거래 시 Global Tran ID16VARCHAR2XID

TX Recovery status4NUMBERTX_STATE

게이트웨이에서 내부적으로 할당된 세션의 index6NUMBERSESSION_INDEX

Mapper 로깅 시 -1로 고정

제9장 마스터 로그 65

Page 82: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

설정 방법

데이터베이스 로깅을 남기기 위해서는 mstlog라는 Tmax 서버를 등록해야 한다.

● Server 절

다음과 같이 서버를 등록한다. MIN, MAX를 적합한 값으로 설정한다.

al4_log SVGNAME = svg1, MIN=3, MAX=6, RESTART=N, SVRTYPE=UCS,

CLOPT="-o $(SVR).$(DATE).log -e $(SVR).$(DATE).log"

● Service 절

다음과 같이 서비스를 등록한다.

ALMSTLOGINS SVRNAME = al4_log

ALMSTLOGSEL SVRNAME = al4_log

9.2. 마스터 로그 서비스

ALMSTLOGINS

테이블에 전문을 로깅하는 서비스로, AnyLink 스튜디오에서 구간별 로그 포인트를 설정했을 경우 해당하

는 구간의 전문을 데이터베이스에 저장한다.

TCP 게이트웨이, CMapper, JMapper에서 데이터베이스 로깅을 남길 때마다 al4_log의 ALMSTLOGINS

서비스를 호출하여 ALMSTLOG 테이블에 저장한다. 그러나 매번 데이터베이스에 입력할 경우 거래량이

많으면 데이터베이스에서 병목 현상이 발생하기 때문에 호출 즉시 al4_log가 데이터베이스에 입력하지

않고 버퍼에 일정한 크기 이상으로 쌓이거나, 일정시간이 지나야만 데이터베이스에 flush한다.

ALMSTLOGSEL

테이블에서 전문을 조회하는 서비스로, AnyLink Admin에서 온라인 전문 로그를 조회할 때 ALMSTLOGSEL

서비스를 호출하여 ALMSTLOG 테이블의 데이터 조회를 수행한다. AnyLink v4.0 이전 버전에서는 AnyLink

Admin에서 데이터베이스에 연결을 맺고 직접 ALMSTLOG 테이블을 조회했지만 AnyLink v4.0부터는

al4_log를 통해 온라인 로그 조회 기능을 수행한다.

일반적으로 연구소에서 배포하는 al4_log 기본 바이너리를 사용하지만 al4_log 바이너리를 커스터마이징

하여 사용할 수도 있다. al4_log.c의 함수 프로토타입을 참고하여 after_select_mstlog() 함수를 작성하면,

데이터베이스 조회 수행 직후 AnyLink Admin에 전달하기 전에 암호화된 전문을 복호화한다거나 그 외 사

용자 정의 작업을 수행할 수 있다.

바이너리를 빌드할 때 libalmstlogapi.so 라이브러리를 링크하여 사용하면 된다.

66 AnyLink 서버 안내서

Page 83: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

< al4_log.c >

/* -------------------------------------------------------------------------- */

/* int after_mstlog_proc(mstlog_tab_t *mstlog, int len, int flag) */

/* mstlog : mstlog content */

/* len : log data length */

/* flag : result of mstlog table insert */

/* -------------------------------------------------------------------------- */

int

after_mstlog_proc(mstlog_tab_t *mstlog, int len, int flag)

{

return flag;

}

/* -------------------------------------------------------------------------- */

/* int after_select_mstlog(char **data, int len) */

/* data : mstlog content */

/* len : log data length */

/* return : log data length */

/* -------------------------------------------------------------------------- */

int

after_select_mstlog(char **data, int *len)

{

return *len;

}

9.3. 커스텀 로깅(Custom Logging)사용자가 선택한 필드에 대해 커스텀 로그를 남겨서 향후에 특정 필드별 검색이 가능하도록 하는 기능이

다.

9.3.1. 전문 공통부의 필드 검색 기능

특정 업무의 전문 공통부의 필드에 한하여 커스텀 테이블에 로그를 남겨서 검색할 수 있는 기능으로, 다음

과 같이 설정하면 이용할 수 있다.

1. AnyLink 스튜디오에서 해당 기관 업무의 [헤드검색항목 설정] 탭에서 검색하려는 필드를 등록한 후 디

플로이한다.

이때 ADM에서 커스텀 로그를 남기는 공유 라이브러리를 생성한다. 생성된 공유 라이브러리는 노드의

'동적라이브러리경로(C)'에 다음과 같은 이름으로 생성된다.

lib_custlog (기관코드)_(업무코드)_(대내외구분).(so/sl)

설명항목

대내외구분 – 1 : 대외

제9장 마스터 로그 67

Page 84: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

설명항목

– 2 : 대내

HP 장비에서는 '.sl' 그 외는 '.so'로 생성된다.(so/sl)

2. AnyLink 스튜디오의 [도구] > [DDL 생성] 메뉴에서 DDL을 생성한다.

3. 생성된 DDL로 데이터베이스에 커스텀 로그 테이블을 생성한다.

4. AnyLink 스튜디오에서 데이터베이스 로깅을 남길 수 있도록 설정하고 C 엔진을 재기동하면 그 이후의

거래부터 커스텀 로그가 남는다.

9.3.2. 전문 내의 특정 필드(공통부, 거래부 전부) 검색 기능

전문 내의 특정 필드(공통부, 거래부 전부)를 검색하는 기능은 3.2.5 버전 이상에서만 지원되는 기능이다.

3.2.5 이전에는 특정 업무의 전문 공통부의 필드만 커스텀 로그 테이블을 생성하여 검색할 수 있었으나,

3.2.5부터는 after_mstlog_proc() 라는 Callback 함수에서 전문 내의 특정 필드를 추출해서 특정 테이블에

로깅하는 작업이 가능하다.

설정과정은 크게 다음과 같다.

1. 테이블 생성

2. al4_log.pc 파일 작성

3. 컴파일

4. 커스텀 로그 조회(Property)

본 절에는 Oracle에서 AL_MSTLOG_TEST 테이블을 생성하고 Callback 함수에서 로깅 정보를 insert 하

는 작업을 예제로 설명한다.

테이블 생성

log_id, log_point와 전문의 특정 필드를 넣을 테이블을 생성한다.

CREATE TABLE AL_MSTLOG_TEST(

LOG_ID CHAR(28) NOT NULL,

LOG_POINT NUMBER(2) NOT NULL,

FLD VARCHAR2(10) NULL

);

ALTER TABLE AL_MSTLOG_TEST

ADD ( PRIMARY KEY (LOG_ID, LOG_POINT) );

68 AnyLink 서버 안내서

Page 85: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

al4_log.pc 파일 작성

after_mstlog_proc Callback 함수를 포함하는 al4_log.pc 파일을 작성한다.

다음의 샘플 코드는 AL_MSTLOG_TEST란 테이블에 log_id, log_point 및 전문의 특정 필드(offset:16,

len:10)를 insert 하는 작업을 한다.

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <usrinc/almstlogapi.h>

#define FLD_OFFSET 16

#define FLD_LEN 10

EXEC SQL include sqlca;

/* -------------------------------------------------------------------------- */

/* int after_mstlog_proc(mstlog_tab_t *mstlog, int len, int flag) */

/* mstlog : mstlog content */

/* len : log data length */

/* flag : result of mstlog table insert */

/* -------------------------------------------------------------------------- */

int after_mstlog_proc(mstlog_tab_t *mstlog, int len, int flag)

{

char fld[FLD_LEN+1];

printf("======= mstlog svc all !! =======\n");

printf("len: %d\n", len);

printf("flag: %d\n", flag);

printf("proc_date: %s\n", mstlog->proc_date);

printf("log_id: %s\n", mstlog->log_id);

printf("log_point: %d\n", mstlog->log_point);

printf("inst_code: %s\n", mstlog->inst_code);

printf("appl_code: %s\n", mstlog->appl_code);

printf("kind_code: %s\n", mstlog->kind_code);

printf("tx_code: %s\n", mstlog->tx_code);

printf("msg_data: %s\n", mstlog->msg_data);

printf("------ set field --------\n");

memset(fld, 0x00, sizeof(fld));

memcpy(fld, mstlog->msg_data + FLD_OFFSET, FLD_LEN);

printf("field: %s\n", fld);

printf("------ insert fields --------\n\n");

insert_log(mstlog->log_id, mstlog->log_point, fld);

제9장 마스터 로그 69

Page 86: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

return flag;

}

/* -------------------------------------------------------------------------- */

int insert_log(char *alog_id, int alog_point, char *afld)

{

EXEC SQL BEGIN DECLARE SECTION;

char log_id[LEN_LOG_ID + 1];

int log_point;

char fld[FLD_LEN + 1];

EXEC SQL END DECLARE SECTION;

strcpy(log_id, alog_id);

log_point = alog_point;

strcpy(fld, afld);

EXEC SQL INSERT INTO AL_MSTLOG_TEST(

LOG_ID,

LOG_POINT,

FLD)

VALUES (

:log_id,

:log_point,

:fld);

if (sqlca.sqlcode != 0) {

printf("AL_MSTLOG_TEST table insert error: [%d]\n", sqlca.sqlcode);

EXEC SQL ROLLBACK;

return -1;

}

EXEC SQL COMMIT;

return 1;

}

/* -------------------------------------------------------------------------- */

/* int after_select_mstlog(char **data, int len) */

/* data : mstlog content */

/* len : log data length */

/* return : log data length */

/* -------------------------------------------------------------------------- */

int

after_select_mstlog(char **data, int *len)

{

return *len;

}

70 AnyLink 서버 안내서

Page 87: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

컴파일

컴파일을 위해 다음과 같이 작업을 수행한다.

1. $TMAXDIR/usrinc/almstlogapi.h에서 mstlog_tab_t 구조체의 msg_data가 char msg_data[LEN_MSG_DA

TA + 1] 가 아니라 char* msg_data로 선언되어 있는지 확인하고, 그렇지 않을 경우 char* msg_data로

수정해야 한다.

2. $TMAXDIR/sampe/server/Makefile.pc를 참고하여 makefile을 만들면 되는데, 이때 makefile의 내용 중

몇 가지 항목을 다음과 같이 수정해야 한다.

TARGET = al4_log

LIBS = -loras -lalmstlogapi

OBJS = $(APOBJS)

CFLAGS = -q64 -O -I$(TMAXDIR) -D_GYYOO

LIBS에는 -lalmstlogapi 가 반드시 포함되어야 하고, 그 이외에 LIBS에 정의되어야 하는 라이브러리는

DBMS에 따라 다르게 설정해 주면 된다. 위의 예는 Oracle에 해당한다.

3. 기존의 al4_log 바이너리는 백업한 뒤, 생성한 al4_log 바이너리를 $TMAXDIR/appbin 아래로 옮긴다.

커스텀 로그 조회(Property)

Admin에서 커스텀 로그를 조회하는 방법은 다음과 같다.

1. aladmin.properties에 다음과 같은 설정을 추가한다.

# ex) <table명1>:<field명1(한글명)>,<field명2(한글명)>!<table명2>:<field명1(한글

명)>,<field명2(한글명)>

LogView.custom.table.info = AL_MSTLOG_TEST:fld(필드)

커스텀 로그 조회(property) 기능을 사용하기 위해 'LogView.custom.table.info' 항목을 "Table명:필드명

(한글명 또는 설명)" 형식으로 설정한다.

설명항목

사용자가 추가한 커스텀 로그 Table명을 입력한다.Table명

사용자가 추가한 커스텀 로그 Table이 여러 개일 경우에는 속성을 입력할 때 '!'를 구

분자로 사용한다.

전문의 필드 중 사용자가 검색할 때 사용할 필드명을 입력한다.필드명

사용자가 추가한 커스텀 로그 Table이 여러 개일 경우에는 콤마(',')를 구분자로 사용

한다.

참고

'LogView.custom.table.info' 항목을 설정할 때 한글명은 없어도 상관없지만 field명은 DB 쿼리문을

만들 때 사용되기 때문에 반드시 있어야 한다.

제9장 마스터 로그 71

Page 88: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

2. Admin 구동 후 [로그 조회] > [온라인전문 로그] > [커스텀 로그 조회] 탭을 선택한다.

3. aladmin.properties에 설정한 필드가 검색 조건 아래 표시되고 검색할 조건을 입력한 후 [조회] 버튼을

클릭하면 조건에 맞는 조회 결과를 확인할 수 있다.

4. '처리구간' 컬럼을 클릭하면 전문 상세보기 화면이 나타나면서 자세한 내용을 확인할 수 있다.

72 AnyLink 서버 안내서

Page 89: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

제10장 AnyLink API

본 장에서는 AnyLink API에 대해 설명한다.

10.1. ADM APIAnyLink 스튜디오를 통하지 않고 Tmax 클라이언트에서 ADM을 직접 호출하여 조회 및 디플로이를 수행

할 수 있는 API이다.

이때 제공되는 조회 및 디플로이에 대한 기능은 일부로 한정된다. ADM API를 통해서 회선 정보, 배치 업

무 정보, 배치 파일 정보를 변경할 수 있다.

10.1.1. allineinq

회선에 대한 정보를 ADM을 통해 조회하는 함수이다.

● 사용법

int allineinq(char *symbname, line_tab_t **line);

설명파라미터

조회할 회선명에 대한 char 포인터이다.symbname

조회한 결과에 대한 포인터이다.line

● 반환값

조회된 회선의 수이다.

10.1.2. allinedeploy

회선에 대한 정보를 ADM을 통해 동적으로 디플로이하는 함수이다.

● 사용법

int allinedeploy(line_tab_t *line)

설명파라미터

디플로이할 회선 정보를 갖고 있는 lint_tab_t 구조체에 대한 포인터이다.line

제10장 AnyLink API 73

Page 90: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

● 반환값

성공했을 경우 0, 실패했을 경우 -1을 리턴한다.

10.1.3. albatapplinq

배치 업무에 대한 정보를 ADM을 통해 조회하는 함수이다.

● 사용법

int albatapplinq(char *appl_code, batappl_tab_t **batappl)

설명파라미터

조회할 업무 코드에 대한 char 포인터이다.appl_code

조회한 결과에 대한 포인터이다.batappl

● 반환값

조회된 배치 업무의 수이다.

10.1.4. albatappldeploy

배치 업무에 대한 정보를 ADM을 통해 동적으로 디플로이하는 함수이다.

● 사용법

int albatappldeploy(batappl_tab_t *batappl)

설명파라미터

디플로이할 배치 업무 정보를 갖고 있는 batappl_tab_t 구조체에 대한 포인터이다.batappl

● 반환값

성공했을 경우 0, 실패했을 경우 -1을 리턴한다.

10.1.5. albatfileinq

배치 파일에 대한 정보를 ADM을 통해 조회하는 함수이다.

● 사용법

int albatfileinq(char *inst_code, char *appl_code, char *file_code, batfile_tab_t

**batfile)

74 AnyLink 서버 안내서

Page 91: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

설명파라미터

조회할 기관 코드에 대한 char 포인터이다. 반드시 space가 아닌 값이 입력되어야

한다.

inst_code

조회할 업무 코드에 대한 char 포인터이다. 반드시 space가 아닌 값이 입력되어야

한다.

appl_code

조회할 파일 코드에 대한 char 포인터이다.file_code

조회한 결과에 대한 포인터이다.batfile

● 반환값

조회된 배치 파일의 수이다.

10.1.6. albatfiledeploy

배치 업무에 대한 정보를 ADM을 통해 동적으로 디플로이하는 함수이다.

● 사용법

int albatfiledeploy(batfile_tab_t *batfile)

설명파라미터

디플로이할 배치 파일 정보를 갖고 있는 batfile_tab_t 구조체에 대한 포인터이다.batfile

● 반환값

성공했을 경우 0, 실패했을 경우 -1을 리턴한다.

10.1.7. altxparminq

거래 파라미터에 대한 정보를 ADM을 통해 조회하는 함수이다.

● 사용법

int altxparminq(char *appl_code, char *rep_kind_code, char *tx_code, txparm_tab_t

**txparm)

설명파라미터

조회할 업무 코드에 대한 char 포인터이다. 반드시 space가 아닌 값이 입력되어야

한다.

appl_code

조회할 대표 종별 코드에 대한 char 포인터이다. 반드시 space가 아닌 값이 입력

되어야 한다.

rep_kind_code

조회할 거래 코드에 대한 char 포인터이다.tx_code

제10장 AnyLink API 75

Page 92: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

설명파라미터

조회한 결과에 대한 포인터이다.txparm

● 반환값

조회된 거래 파라미터의 수이다.

10.1.8. altxparmdeploy

거래 파라미터에 대한 정보를 ADM을 통해 동적으로 디플로이하는 함수이다.

● 사용법

int altxparmdeploy(txparm_tab_t *txparm)

설명파라미터

디플로이할 거래 파라미터 정보를 갖고 있는 txparm_tab_t 구조체에 대한 포인터

이다.

txparm

● 반환값

성공했을 경우 0, 실패했을 경우 -1을 리턴한다.

10.1.9. 예제

라이브러리명은 libaladmapi이고, 예제 코드는 다음과 같다.

#include <usrinc/aladmapi.h>

#include <stdio.h>

int

main(int argc, char *argv[])

{

int i, count;

char symbname[LEN_SERVER_NAME +1];

char inst_code[LEN_INST_CODE +1];

char appl_code[LEN_APPL_CODE +1];

char file_code[LEN_FILE_CODE +1];

char rep_kind_code[LEN_KIND_CODE +1];

char tx_code[LEN_TX_CODE +1];

line_tab_t *line_inq;

batappl_tab_t *batappl_inq;

batfile_tab_t *batfile_inq;

txparm_tab_t *txparm_inq;

76 AnyLink 서버 안내서

Page 93: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

line_tab_t line_dep;

batappl_tab_t batappl_dep;

batfile_tab_t batfile_dep;

txparm_tab_t txparm_dep;

if (tpstart((TPSTART_T *)NULL) == -1)

return -1;

/* 회선 조회 */

memset(symbname, 0x00, sizeof(symbname));

strcpy(symbname, "line000");

count = allineinq(symbname, &line_inq);

if (count < 0) {

/* 에러처리 */

}

for (i=0; i<count; i++) {

printf("symbname[%s] sta_type[%d]\n",

line_inq->symbname, line_inq->sta_type);

line_inq++;

}

line_inq -= count;

free(line_inq);

/* 배치업무 조회 */

memset(appl_code, 0x00, sizeof(appl_code));

strcpy(appl_code, "APPL");

count = albatapplinq(appl_code, &batappl_inq);

if (count < 0) {

/* 에러처리 */

}

for (i=0; i<count; i++) {

printf("appl_code[%s]\n", batappl_inq->appl_code);

batappl_inq++;

}

batappl_inq -= count;

free(batappl_inq);

/* 배치 파일 조회 */

memset(inst_code, 0x00, sizeof(inst_code));

제10장 AnyLink API 77

Page 94: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

memset(appl_code, 0x00, sizeof(appl_code));

memset(file_code, 0x00, sizeof(file_code));

strcpy(inst_code, "INST");

strcpy(appl_code, "APPL");

strcpy(file_code, "FILE");

count = albatfileinq(inst_code, appl_code, file_code, &batfile_inq);

if (count < 0) {

/* 에러처리 */

}

for (i=0; i<count; i++) {

printf("file_code[%s]\n", batfile_inq->file_code);

batfile_inq++;

}

batfile_inq -= count;

free(batfile_inq);

/* 거래 파라미터 조회 */

memset(appl_code, 0x00, sizeof(appl_code));

memset(rep_kind_code, 0x00, sizeof(rep_kind_code));

memset(tx_code, 0x00, sizeof(tx_code));

strcpy(appl_code, "APPL");

strcpy(rep_kind_code, "KIND");

strcpy(tx_code, "TX");

count = altxparminq(appl_code, rep_kind_code, tx_code, &txparm_inq);

if (count < 0) {

/* 에러처리 */

}

for (i=0; i<count; i++) {

printf("tx_code[%s]\n", txparm_inq->tx_code);

txparm_inq++;

}

txparm_inq -= count;

free(txparm_inq);

/* 회선 정보에 디플로이할 내용을 채운다 */

memset(&line_dep, 0x00, sizeof(line_tab_t));

strcpy(line_dep.symbname , "anylink");

78 AnyLink 서버 안내서

Page 95: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

strcpy(line_dep.nodename , "anylink");

strcpy(line_dep.gwname , "anygw");

line_dep.sta_type = 8; /* 1=정상(재개), 8=중지, 9=삭제 */

line_dep.session_num = 1;

line_dep.connect_type = 1;

line_dep.direction = 3;

line_dep.retry_interval = 5;

if (allinedeploy(&line_dep) < 0) {

printf("tpurcode [%d]\n", tpurcode);

printf("Can't send request to service tperrno[%d]\n", tperrno);

}

else {

printf("line udpate completed\n");

}

memset(&batappl_dep, 0x00 sizeof(batappl_tab_t));

/* 배치 업무 정보에 디플로이할 내용을 채운다 */

if (albatappldeploy(&batappl_dep) < 0) {

printf("tpurcode [%d]\n", tpurcode);

printf("Can't send request to service tperrno[%d]\n", tperrno);

}

else {

printf("batappl udpate completed\n");

}

memset(&batfile_dep, 0x00 sizeof(batfile_tab_t));

/* 배치 파일 정보에 디플로이할 내용을 채운다 */

if (albatfiledeploy(&batfile_dep) < 0) {

printf("tpurcode [%d]\n", tpurcode);

printf("Can't send request to service tperrno[%d]\n", tperrno);

}

else {

printf("batfile udpate completed\n");

}

memset(&txparm_dep, 0x00 sizeof(txparm_tab_t));

/* 거래 파라미터 정보에 디플로이할 내용을 채운다 */

if (altxparmdeploy(&txparm_dep) < 0) {

printf("tpurcode [%d]\n", tpurcode);

printf("Can't send request to service tperrno[%d]\n", tperrno);

}

else {

printf("txparm udpate completed\n");

}

tpend();

제10장 AnyLink API 79

Page 96: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

return 0;

}

10.2. AMM 메시지 수신 APIAMM은 각 컴포넌트의 상태와 회선의 상태에 대해서 메시지를 출력한다. 기본적으로 이 메시지는 AnyLink

Admin이 수신해서 상태를 화면에 보여주기 위한 것이지만, AnyLink 컴포넌트와 회선의 상태 변경에 따라

사용자가 Operation을 하기 위해서 Tmax 클라이언트에서 AMM이 출력한 메시지를 받아서 처리할 수 있

는 API를 제공한다.

라이브러리명은 libaladminmsgapi이고, 포함되어 있는 함수는 2개이다.

10.2.1. init_tpionfo

AMM이 보내는 메시지를 받을 때마다 호출되는 함수이다.

● 사용법

get_admin_noti(int msgtype, char *msg1, char *msg2)

설명파라미터

메시지 유형(컴포넌트의 UP/DOWN 메시지, 회선에 대한 메시지)을 지정한다.msgtype

msgtype에 지정된 메시지 유형에 따라 다음과 같이 설정한다.msg1

– 컴포넌트의 UP/DOWN 메시지인 경우 : 노드명을 설정한다.

– 회선에 대한 메시지인 경우 : 게이트웨이명을 설정한다.

msgtype에 지정된 메시지 유형에 따라 다음과 같이 설정한다.msg2

– 컴포넌트의 UP/DOWN 메시지인 경우 : 콤포넌트명을 설정한다.

– 회선에 대한 메시지인 경우 : 회선명을 설정한다.

● 반환값

성공했을 경우 0, 실패했을 경우 -1을 리턴한다.

10.2.2. init_tpinfo

시작할 때 호출되는 함수이다.

● 사용법

init_tpinfo(TPSTART_T * tpinfo)

80 AnyLink 서버 안내서

Page 97: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

설명파라미터

Tmax 엔진 정보를 가지고 있는 구조체이다.tpinfo

● 반환값

성공했을 경우 0, 실패했을 경우 -1을 리턴한다.

10.2.3. 예제

예제 코드는 다음과 같다.

#include <usrinc/aladminmsgapi.h>

#include <stdio.h>

int

init_tpinfo(TPSTART_T * tpinfo)

{

/* 원하는 작업을 수행 */

return 0;

}

int

get_admin_noti(int msgtype, char *msg1, char *msg2)

{

switch (msgtype) {

case AL_MAPPER_UP_NOTIFY :

case AL_MAPPER_DOWN_NOTIFY :

case AL_GW_UP_NOTIFY :

case AL_GW_DOWN_NOTIFY :

case AL_SCHD_UP_NOTIFY :

case AL_SCHD_DOWN_NOTIFY :

case AL_LINE_UP_NOTIFY :

case AL_LINE_DOWN_NOTIFY :

case AL_LINE_PAUSE_NOTIFY :

case AL_LINE_RESUME_NOTIFY:

printf("msgtype[%d] msg1[%s] msg2[%s]\n",

msgtype, msg1, msg2);

break;

}

return 0;

}

제10장 AnyLink API 81

Page 98: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

10.3. UTIL APIAnyLink에 관련된 애플리케이션을 생성하면서 사용될 수 있는 API로 라이브러리명은 libalutilapi이다.

10.3.1. gen_log_id

AnyLink의 Header에 들어갈 log_id를 생성하는 함수이다.

● 사용법

int gen_log_id(char *dest_log_id, int nodeno)

설명파라미터

생성된 log_id가 들어갈 char 배열의 포인터이다.dest_log_id

노드 번호이다. 0~9의 값을 입력해야 한다.Nodeno

● 반환값

성공했을 경우 1, 실패했을 경우 -1을 리턴한다.

10.3.2. 예제

예제 코드는 다음과 같다.

#include <usrinc/alutilapi.h>

#include <stdio.h>

int

init_main(void)

{

char dest_log_id[LEN_LOG_ID+1];

gen_log_id(dest_log_id, 0);

printf("log_id[%s]\n", dest_log_id);

return 0;

}

82 AnyLink 서버 안내서

Page 99: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

10.4. Sched APIAnyLink의 스케줄러를 호출하는 API로 라이브러리명은 libalschapi이다.

10.4.1. alscheddeploy

AnyLink의 스케줄러를 통해 배치 게이트웨이나 통계 집계 대몬을 호출한다.

● 사용법

int alscheddeploy(sched_tab_t *sched)

설명파라미터

스케줄 정보가 포함되어 있는 구조체에 대한 포인터이다.sched

● 반환값

성공했을 경우 1, 실패했을 경우 -1을 리턴한다.

API 호출이 성공하면 스케줄 정보가 하나 추가된다. 추가된 스케줄 정보는 ALSCHED 테이블에 레코드

로 저장되며 등록된 스케줄은 AnyLink Admin이나 Java API를 통해서 등록된 것과 동일하게 실행된다.

sched_tab_t 구조체는 usrinc/alschapi.h에 정의되어 있다.

10.4.2. 예제

예제 코드는 다음과 같다.

#include <usrinc/alschapi.h>

#include <stdio.h>

int

main(int argc, char *argv[])

{

sched_tab_t sched;

memset(&sched, 0x00, sizeof(sched));

strcpy(sched.inst_code , "BTST");

strcpy(sched.appl_code , "DEDI");

strcpy(sched.file_code , "AAAAAA");

sched.seqno = -1; /* select new seqno */

sched.sched_type = 4;

sched.op_type = 7; /* BATCH */

sched.sr_flag = 2; /* SNED:1, RECV:2 */

sched.per_type = 0;

sched.period = 0;

제10장 AnyLink API 83

Page 100: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

sched.retry_cnt = 0;

sched.retry_time = 0;

sched.enc_type = 0;

sched.mcall_flag = -1;

if (alscheddeploy(&sched) < 0) {

printf("tpurcode [%d]\n", tpurcode);

printf("Can't send request to service tperrno[%d]\n", tperrno);

}

else {

printf("udpate completed\n");

}

return 0;

}

84 AnyLink 서버 안내서

Page 101: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

Appendix A. 오류 메시지 및 조치 방법

본 부록에서는 오류 메시지 조치 방법과 로그 메시지의 의미에 대해 설명한다.

tmboot를 실행하면 시스템이나 사용자 오류에 따라 서버가 도중에 다운(Down)될 수 있다. 이런 비정상적

인 서버 다운(Server Down)이 발생할 경우 다음과 같은 메시지가 콘솔에 출력된다.

(E) TMM2058 server abnormally closed: SVR, pid = 39436 [TMM0116]

조치 방법은 다음과 같다.

tmadmin으로 다운된 서버 확인

tmadmin 실행 후 si 명령을 입력한다.

[그림 A.1] tmadmin 화면

다운된 서버의 ulog 확인

다운 된 서버의 ulog를 열어서 에러 메시지를 확인한다. 각 에러 메시지와 그에 따른 조치 방법은 다음과

같다.

● SVR0013 anylink option is wrong

서버 옵션이 잘못된 경우에 발생한다.설명

해당 매뉴얼을 참조하여 잘못된 옵션을 수정한다.해결 방법

Appendix A. 오류 메시지 및 조치 방법 85

Page 102: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

● SVR2013 database connect failed

$ANYLINK_DB_NAME, $ANYLINK_CONNECT_INFO 환경변수의 값이 잘못된 경우

에 발생한다.

설명

해당 매뉴얼을 참조하여 해당 데이터베이스에 유효한 형태로 값을 입력한다.해결 방법

● SVR0100 invalid shared memory key

SVF0091 can't open shared memory segment

SVR0090 can't attach shared memory segment

공유 메모리를 가져오지 못하는 오류이다.설명

공유 메모리 키(Shared memory key)를 변경한다.해결 방법

● SVR2046 Engine version mismatch

엔진 버전이 맞지 않는 경우에 발생한다.설명

AnyLink 바이너리의 버전을 확인한다.해결 방법

● SVR2013 not found remote session

게이트웨이인 경우에 발생한다.설명

회선이 하나도 등록되어 있지 않았음을 의미한다.해결 방법

● ANYLINK1220 register to AMM error

컴포넌트를 AMM에 등록할 수 없는 경우나, 등록되어 있지 않은 컴포넌트이거나 공

유 메모리 오프셋(Shared memory Offset)이 맞지 않는 경우 발생한다.

설명

먼저, 등록되어 있는 컴포넌트인지를 확인한 다음 al4_amm 로그와 공유 메모리 오프

셋이 일치하는지를 확인한다.

해결 방법

● GW5005 Error loading certificate form file

게이트웨이에서 SSL 프로토콜을 사용할 경우에 인증서를 가져오다가 실패했을 때

발생한다.

설명

정해진 위치에 인증서가 있는지, 올바른 인증서인지 확인한다.해결 방법

● GW5006 Error loading private key from file

게이트웨이에서 SSL 프로토콜을 사용할 경우에 Private Key를 가져오다가 실패했을

때 발생한다.

설명

정해진 위치에 Private Key가 있는지, 올바른 Private Key인지 확인한다.해결 방법

86 AnyLink 서버 안내서

Page 103: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

● GW5003 Error loading CA file and/or directory

게이트웨이에서 SSL 프로토콜을 사용할 경우에 발생한다.설명

CA 파일의 위치가 올바른지 확인한다.해결 방법

● GW5002 Error loading default CA file and/or directory

게이트웨이에서 SSL 프로토콜을 사용할 경우에 발생한다.설명

CA 파일이 올바른 인증서인지 확인한다.해결 방법

● SVR0111 signal SIGXFSZ catched [ALINK1013]

로그 파일의 크기가 현재 파일 시스템에서 가용한 크기(Linux 32bit인 경우 2GB)보다

큰 경우 발생한다.

설명

각 로그 파일의 크기를 확인한다.해결 방법

Appendix A. 오류 메시지 및 조치 방법 87

Page 104: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템
Page 105: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

Appendix B. AnyLink 서버의 로그보는 방법

AnyLink 서버를 디버그 모드로 설치하면 ulog에 많은 정보를 출력한다. 본 부록에서는 그 중 중요한 것들

만 설명한다.

B.1. AMM

Boot할 경우의 로그

● AnyLink에 사용할 정보를 공유 메모리에 담기 위해서 데이터의 수를 카운드한다.

TABLE.190884.140135.577: get_node_table_cnt: sqlcode=[0] count=[13]

● 데이터의 수에 기초해서 공유 메모리 내의 각 데이터의 오프셋을 설정한다.

AMM.190884.140135.633: node offset = 768

● 확보한 공유 메모리 내로 테이블 데이터를 올린다.

TABLE.190884.140135.642: load_node_table: count = 13, sqlcode=1403

● 다른 노드에 있는 AnyLink와 연결을 맺는다.

AMM.190884.140145.685: node_connect: nodename[AnyLink] fd[3]

● 데이터베이스에 입력되어 있지만 연결을 맺지 못한 경우 다음과 같이 에러가 발생한다.

(E) SVR1062 node connect error: [192.168.1.31:20002] [AMM0103]

● 컴포넌트로부터 연결 요청이 들어와서 연결한다.

AMM.190884.140145.685: add_component: fd[10]

AMM.190884.140145.685: add_component: fd[11]

● 연결된 컴포넌트로부터 메시지가 들어오다.

AMM.190884.140145.685: request_from_component: ind = 0

● 101번 메시지는 등록 요청 메시지이다.

AMM.190884.140145.685: msg from component: msgtype[101] seqno[00000000] cd[0]

len[129] clhi[0]

Appendix B. AnyLink 서버의 로그보는 방법 89

Page 106: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

● ibm5l_cmapperd000 컴포넌트가 등록되었다

AMM.190884.140145.686:component_procreg_msg_proc: name[ibm5l_cmapperd000] type[1]

● 컴포넌트로의 응답이 완료된다.

AMM.190884.140145.687: reply_to_component complete: qcount[0]

Polling할 경우의 로그

● 다른 노드로부터 메시지가 들어온다.

AMM.190884.141446.092: request_from_node: ind = 0

● 14번 메시지는 Polling 메시지이다.

AMM.190884.141446.092: msg from node: msgtype[14] seqno[00000000] cd[0] len[96]

clhi[0]

● Polling 메시지를 보낸 노드는 tmaxh2이다.

AMM.190884.141446.092: request_from_node: nodename[tmaxh2] msgtype[14:0]

● Polling 메시지에 대한 응답을 보낸다.

AMM.190884.141446.092: reply_to_node: ind[0] mgtype[1014] fd[14] len[96]

● 노드로 응답이 완료된다.

AMM.190884.141446.092: reply_to_node complete: qcount[0]

AMMSTATUS(상태조회) 서비스를 호출할 경우의 로그

● CLH로부터 요청이 들어온다.

AMM.190884.141524.495: request_from_clh: ind = 0

● 3번이므로 요청 메시지이다.

AMM.190884.141524.495: msg from clh: msgtype[3] seqno[00000019] cd[0] len[129]

clhi[0]

● 현재 상태를 조회하는 요청이 들어온다.

AMM.190884.141524.495: amm_status_msg: clhi[0] msgtype[3] len[129] flags[00000000]

cd[0]

90 AnyLink 서버 안내서

Page 107: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

● 512번이므로 컴포넌트의 상태를 조회해서 리턴한다.

AMM.190884.141524.495: amm_status_msg: msgtype[512]

● CLH로 리턴을 완료한다.

AMM.190884.141524.495: reply_to_clh complete: qcount[0]

● CLH로부터 요청이 들어온다.

AMM.190884.141524.503: request_from_clh: ind = 0

AMM.190884.141524.503: msg from clh: msgtype[3] seqno[0000001A] cd[0] len[146]

clhi[0]

● 513이면 회선 상태 정보에 대한 요청이다.

AMM.190884.141524.503: msg from clh: anylink msgtype[513] proc_type[0] svc[AMMSTATUS]

● 회선 정보를 조회한다.

AMM.190884.141524.503: get_line_status: nodename[1] gwname[]

● 결과의 리턴을 완료한다.

AMM.190884.141524.504: reply_to_clh complete: qcount[0]

AMMDEPLOY(정보저장) 서비스를 호출할 경우의 로그

● CLH로부터 요청이 들어온다.

AMM.5812.211307.490: request_from_clh: ind = 2

● msgtype이 4이므로 요청 메시지이다.

AMM.5812.211307.490: msg from clh: msgtype[4] seqno[00000309] cd[0] len[1143] clhi[2]

● 52번이면 기관-업무 매핑 정보 디플로이이다.

AMM.5812.211307.490: msg from clh: anylink msgtype[52] proc_type[0] svc[AMMDEPLOY]

● 디플로이 정보를 타 노드에도 전송한다.

AMM.5812.211307.490: ready_for_send_to_node: nodename[tmaxh4] ind[1] len[1143]

AMM.5812.211307.490: ready_for_send_to_node: nodename[tmaxh5] ind[10] len[1143]

● 디플로이된 정보를 공유 메모리에 반영한다.

AMM.5812.211307.490: set_deploy_data_to_shm: msgtype[52] db_proc[2] engine_type[0]

Appendix B. AnyLink 서버의 로그보는 방법 91

Page 108: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

● 컴포넌트 타입 1(Mapper)인 컴포넌트에게 디플로이 정보를 알린다.

AMM.5812.211307.490: deploy_to_component: len = 1143 compt_type=1, msgtype=52

● 디플로이 작업이 완료되면 aladmin과 Tmax 클라이언트에 tpbroadcast를 보낸다.

AMM.5812.211307.490: amm_deploy_msg: tpbroadcast send: len=1143

● CLH로 리턴한다.

AMM.5812.211307.490: reply_to_clh complete: qcount[0]

B.2. ADM

Boot할 경우의 로그

● AMM으로 연결한다.

connect(ibm5l, 0, 9268), fd = 3 success

● 여러 번의 시도 끝에 연결되면 AMM에 등록한다.

ALINK.189574.140145.775: register_to_amm: shmkey[12340] shmsize[3795272]

● AMM에 등록한 후 공유 메모리 키를 가져오고 각 요소들의 오프셋을 가져온다.

ALINK.189574.140145.776: init_alshm_sub: shmkey=[12340] shmsize=[3795272] new!!

● 노드를 비롯한 나머지 오프셋 값은 AMM과 반드시 정확하게 일치해야 한다.

ALINK.189574.140145.776: node offset = 768

ADMDBSVC(DB 조회) 서비스를 호출할 경우의 로그

● ADMDBSVC 서비스가 호출된다.

SVR: request_from_clh 3 ALDBSVC 96 0

● ALUSERROLE 테이블을 조회하는 것임을 알 수 있다.

ADM.189574.141514.418: ALDBSVC: al_userrole_inq: role_id = [0]

● 14개 행이 조회된다.

ADM.189574.141514.422: ALDBSVC: n[2] count[14] sndlen[1178]

92 AnyLink 서버 안내서

Page 109: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

ADMDEPLOY(DB 저장) 서비스를 호출할 경우의 로그

● ADMDEPLOY 서비스가 호출된다.

SVR: request_from_clh 3 ALDEPLOY 3000 0

● 저장되는 정보를 출력한다.

TABLE.193200.153540.921: class_name = [ncbn_54002_ReqBody]

TABLE.193200.153540.922: src_class_name = [msg.AnyAPP1020054002ReqIn_Object]

TABLE.193200.153540.922: dst_class_name = [msg.AnyAPP1020054002ReqIn_Object1]

TABLE.193200.153540.922: map_name = [msg.AnyAPP1020054002ReqIn_Object]

● Insert에서 DUP 오류가 발생하면 업데이트로 전환한다.

TABLE.193200.153540.933: transaction map table insert error: [-1]

● ALCHGLOG 테이블에 변경 내역을 저장한다.

TABLE.193200.153540.934: proc_date = [20051020]

TABLE.193200.153540.934: proc_mtime = [153540934]

TABLE.193200.153540.934: user_id = [anylink]

TABLE.193200.153540.934: chg_type = [2]

TABLE.193200.153540.934: tbl_name = [ALTXMAP]

TABLE.193200.153540.934: pk_list = [ncbn_54002_ReqBody]

● 데이터베이스에 저장한다.

ADM.193200.153540.939: al_txmap_field_deploy: commit

● 매핑에 관련된 내용일 경우 라이브러리를 다시 생성한다.

ADM.193200.153540.939: make_library_file: etc[1] seqno[3] appl_code[APP10200]

kind_code[0200] tx_code[54002]

● 라이브러리 컴파일에 성공한다.

전문변환 모듈 <ncbn_54002_ReqBody>을 rebuild 하고 있습니다...

/user1/long21s/bin/3.1.2/

전문변환 라이브러리 생성 성공...

Appendix B. AnyLink 서버의 로그보는 방법 93

Page 110: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

B.3. 게이트웨이 로그

Boot할 경우의 로그

● AMM으로 연결한다.

connect(ibm5l, 0, 9268), fd = 3 fail

connect(ibm5l, 0, 9268), fd = 3 fail

connect(ibm5l, 0, 9268), fd = 3 fail

connect(ibm5l, 0, 9268), fd = 3 fail

connect(ibm5l, 0, 9268), fd = 3 success

● 여러 번의 시도 끝에 연결되면 AMM에 등록한다.

ALINK.165192.140145.752: register_to_amm: shmkey[12340] shmsize[3795272]

● AMM에 등록한 후 공유 라이브러리 키를 가져오고 각 요소들의 오프셋을 가져온다.

ALINK.165192.140145.752: init_alshm_sub: shmkey=[12340] shmsize=[3795272] new!!

● 노드를 비롯한 나머지 오프셋 값은 AMM과 반드시 정확하게 일치해야 한다.

ALINK.165192.140145.752: node offset = 768

● 서버 모드 회선의 수를 구한다.

GATEWAY.165192.140145.753: get_listen_size: protocol_type[1] sidx[5]

● 서버 모드 회선의 포트를 열고 fd를 할당한다.

ALINK.165192.140145.753: init_listen: gwname[tcpgwext:tcpgwext2] connect_type=[1]

● 클라이언트 모드 회선의 세션 수를 구한다. 현재 outgw 값으로부터 클라이언트 회선은 없다는 것을 알

수 있다.

ALINK.165192.140145.755: get_session_size: outgw[0] session[5]

● 세션을 초기화한다.

ALINK.165192.140145.755: init_session: next_glidx[44]

● 클라이언트 모드 회선이 있을 경우 다음과 같은 로그가 출력된다.

ALINK.186252.142109.744: connect_to_session_tcpip: line_idx[7] sess_idx[7]

host[192.168.1.31:4999]

● 열어 놓은 서버 모드 회선에 연결 요청이 들어오면 요청을 받아들이고 세션에 연결한다.

ALINK.165192.140157.111: gw_add: gwl->line_idx[5]

94 AnyLink 서버 안내서

Page 111: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

외부로부터 들어온 전문 처리 로그

● 외부로부터 메시지가 들어왔다.

GATEWAY.165192.140157.112: request_from_session: ind = 0

● 메시지의 기관, 업무, 종별, 거래를 판별하기 위해 리모트 파싱을 수행한다.

GATEWAY.165192.140157.112: remote_req_message_parsing: len[113] cache_offset[0]

cache_len[0]

● 기관 코드 MST, 업무 코드 APP1을 찾았다.

GATEWAY.165192.140157.112: remote_req_message_parsing: gwi[0] inst_code[MST]

appl_code[APP1] ext_type[1]

● 요청 메시지이다.

GATEWAY.165192.140224.934: external_remote: kind_type[1]

● External 게이트웨이인 경우에는 external_remote 파싱을 추가적으로 해서 종별(APP1), 거래 코드(0200)

까지 찾는다.

GATEWAY.165192.140224.934: external_remote: appl_code[APP1] rep_kind_code[0200]

tx_code[54002]

● 하나의 전문이 여러 조각으로 나뉘어져 전송되어 온 경우 이 부분에서 하나로 취합한다.

GATEWAY.165192.140224.934: data_packet_reconstruct: ext_type[1] reqtype[1]

● 기관-업무 정보에 등록되어 있는 Mapper를 찾는다(CMapper).

search_mapper: max_mapper[8] mapper[CMAPPER]

● CLH로 처리한 전문을 보낸다(CLH는 CMapper로 보낸다).

GATEWAY.165192.140224.935: reply_to_clh complete: qcount[0]

CLH로부터 들어온 전문 처리 로그

● CLH로부터 메시지가 들어온다.

GATEWAY.89490.163650.299: request_from_clh: ind = 11

● msgtype이 1004이므로 응답 메시지이다.

GATEWAY.89490.163650.299: msg from clh: msgtype[1004] seqno[0000400B] cd[1] len[113]

clhi[11]

Appendix B. AnyLink 서버의 로그보는 방법 95

Page 112: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

● CLH로부터 들어온 메시지는 local_message_parsing을 수행한다. local_message_parsing으로 기관

(MST), 업무(APP1), 종별(0200), 거래(54002) 정보를 찾았다.

GATEWAY.89490.163650.299: local_message_parsing_by_idx: inst_code[MST ]

appl_code[APP1] kind_code[0200 ] tx_code[54002 ]

● 전문을 여러 패킷으로 나눠 전송할지 여부를 판단하고 필요하면 나눈다

ALINK.89490.163650.300: data_packet_split: hsize[0] comm_head_size[64]

comm_head_type[1]

● 세션으로의 전문 전송이 완료되었다.

GATEWAY.89490.163650.300: reply_to_session complete: max_num[1] cur_num[2]

게이트웨이 정보 수정 로그

● CLH로부터 메시지가 들어온다.

GATEWAY.15217.105019.300: request_from_clh: ind = 0

● 43번이면 게이트웨이 수정 메시지이다.

GATEWAY.15217.105019.300: msg from clh: anylink msgtype[43]

● 수정된 정보를 저장한다.

GATEWAY.15217.105019.300: set_gateway_info: inst_code[] appl_code[] gwname[tcpgwext]

comm_head_size[64]

● 게이트웨이 수정이 완료되면 CLH로 리턴한다.

GATEWAY.15217.105019.300: reply_to_clh complete: qcount[0]

게이트웨이 회선 정보 수정 로그

● CLH로부터 메시지가 들어온다.

GATEWAY.15217.104900.670: request_from_clh: ind = 0

● 44이면 게이트웨이 회선 수정 메시지이다.

GATEWAY.15217.104900.670: msg from clh: anylink msgtype[44]

96 AnyLink 서버 안내서

Page 113: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

● 회선 정보를 수정한다.

GATEWAY.15217.104900.690: set_line_info: proc_type[2] idx[41] gwname[tcpgwext]

symbname[yoon00]

● 회선 정보 수정이 완료되면 CLH로 리턴한다.

GATEWAY.15217.104900.700: reply_to_clh complete: qcount[0]

B.4. CMapper 로그

Boot할 경우의 로그

● AMM에 등록한다.

ALINK.80668.140145.692: register_to_amm: shmkey[12340] shmsize[3795272]

● AMM에 등록한 후 공유 메모리 키를 가져오고 각 요소들의 오프셋을 가져온다.

ALINK.80668.140145.692: init_alshm_sub: shmkey=[12340] shmsize=[3795272] new!!

● 노드를 비롯한 나머지 오프셋 값은 AMM과 반드시 정확하게 일치해야 한다.

ALINK.80668.140145.692: node offset = 768

전문 처리(매핑) 로그

● CLH로부터 메시지가 들어온다.

MAPPER.80668.140157.114: request_from_clh: ind = 0

● msgtype이 4이므로 요청 메시지임을 알 수 있다.

MAPPER.80668.140157.114: msg from clh: msgtype[4]

seqno[00000000] cd[1] len[113] clhi[0]

● 로컬 파싱을 수행해서 기관(MST), 업무(APP1), 종별(0200), 거래(54002) 코드를 찾는다.

MAPPER.80668.140157.115: local_message_parsing: inst_code[MST ]

appl_code[APP1] kind_code[0200 ] tx_code[54002 ]

● 로컬 파싱이 완료되었다.

local_message_parsing OK

Appendix B. AnyLink 서버의 로그보는 방법 97

Page 114: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

● 요청 매핑(요청 메시지이므로 요청 매핑을 수행한다)에 사용할 클래스명을 설정한다.

MAPPER.80668.140157.116: request_mapping_info:

appl.req_head_mapp_class[ncbn_54002_ReqHeader] tx.req_head_mapp_class[]

MAPPER.80668.140157.116: request_mapping_info:

req_body_mapp_class[ncbn_54002_ReqBody]

● 매핑에 사용할 헤더부 라이브러리를 설정한다.

ALINK.80668.140157.116: make_lib_name: lib_name[ncbn_54002_ReqHeader]

ALINK.80668.140157.116: lib_copy:

org_path[/user1/long21s/maplib/libncbn_54002_ReqHeader.so]

target_path[/user1/long21s/bin/3.1.2/work/ibm5l_cmapperd000/libncbn_54002_ReqHeader.so]

● 매핑에 사용할 바디부 라이브러리를 설정한다.

ALINK.80668.140157.181: make_lib_name: lib_name[ncbn_54002_ReqBody]

ALINK.80668.140157.181: lib_copy:

org_path[/user1/long21s/maplib/libncbn_54002_ReqBody.so]

target_path[/user1/long21s/bin/3.1.2/work/ibm5l_cmapperd000/libncbn_54002_ReqBody.so]

● 요청 매핑을 수행한다.

MAPPER.80668.140157.209: req_message_mapping: len[113]

● 요청 매핑 라우팅할 서비스는 TCPGWINT이다.

MAPPER.80668.140157.211: service_get_bytes: svcname[TCPGWINT] len[113]

● 서비스로 전달하기 위해서 CLH로 리턴이 완료된다.

MAPPER.80668.140157.211: reply_to_clh complete: qcount[0]

98 AnyLink 서버 안내서

Page 115: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

색인

Symbols<tmax-listener>, 10

<server-group-name>, 11

<server-type>, 11

<tmax-version>, 11

AADM, 19

ADM API

albatappldeploy, 74

albatapplinq, 74

albatfiledeploy, 75

albatfileinq, 74

allinedeploy, 73

allineinq, 73

altxparmdeploy, 76

altxparminq, 75

albatappldeploy, 74

albatapplinq, 74

albatfiledeploy, 75

albatfileinq, 74

allinedeploy, 73

allineinq, 73

alscheddeploy, 83

altxparmdeploy, 76

altxparminq, 75

AMM, 15

AMM 메시지 수신 API

init, 80

init_tpinfo, 80

AnyLink 환경변수

ALBACKUP_IP, 8

ALBACKUP_PORT, 8

ALSERVER_IP, 8

ALSERVER_PORT, 8

ALSERVER_VERSION, 8

ANYLINK_BACKUP_CONNECT_INFO, 3

ANYLINK_CONNECT_INFO, 3

anylink.properties

BYPASS_SVCFAIL=TRUE|FALSE,

CC,

DB_CHK_POINT_COUNT, 7

DB_CHK_POINT_INTERVAL, 7

DB_TYPE = SINGLE | MULTI, 7

LOG_CHK_POINT_COUNT, 7

LOG_CHK_POINT_INTERVAL, 7

MAPPER_PING_INTERVAL, 8

NODE_PING_INTERVAL, 7

SEND_FAIL_LIMIT,

TIMECHK_INTERVAL,

ANYLINK1220 register to AMM error, 86

Ggen_log_id, 82

GW5002 Error loading default CA file and/or directory,

87

GW5003 Error loading CA file and/or directory, 87

GW5005 Error loading certificate form file, 86

GW5006 Error loading private key from file, 86

Iinit, 80

init_tpinfo, 80

JJava 엔진 환경설정

jeus-web-dd_anylink.xml, 11

JEUSMain.xml, 9

web.xml, 12

WEBMain.xml, 10

JEUSMain.xml

AnyLink 환경변수 설정, 9

DataSource 설정, 9

서블릿 엔진 설정, 9

SSched API

alscheddeploy, 83

색인 99

Page 116: AnyLink - TmaxSoft · 안내서에 대하여 안내서의 대상 본 안내서는 Tmax AnyLink® (이하 AnyLink) C/Java 엔진 설치와 설정 및 C/JavaMapper를 이용한 시스템

SVF0091 can't open shared memory segment, 86

SVR0013 anylink option is wrong, 85

SVR0090 can't attach shared memory segment, 86

SVR0100 invalid shared memory key, 86

SVR0111 signal SIGXFSZ catched [ALINK1013], 87

SVR2013 database connect failed, 86

SVR2013 not found remote session, 86

SVR2046 Engine version mismatch, 86

TTmax 환경변수

TMAX_HOST_ADDR, 3

TMAX_HOST_PORT, 3

TMAXDIR, 3

UUTIL API

gen_log_id, 82

WWEBMain.xml

<tmax-listener>, 10

데이터베이스 통계 집계, 25

마스터 로그 서비스

ALMSTLOGINS, 66

ALMSTLOGSEL, 66

마스터 로깅(Master Logging), 65

스케줄러, 23

주기적 발송, 23

즉시 발송, 23

전문 고유번호, 41

전문 추적번호, 41

파일 로깅

Async 모드, 43

Sync 모드, 42

100 AnyLink 서버 안내서