Morpheus Server IDE manual v1.2

사 용 권 한

본 문서에 대한 서명은 ㈜유라클 내부에서 본 문서에 대하여 수행 및 유지관리의 책임이 있음을 인정하는 것임.

제.개정 이력

버전

변경일자

제.개정 내용

작성자

1.0.0

2015.03.10

문서작성, 문서검수

기술연구소

이호철

1.0.1

2015.08.20

대쉬보드 신규 기능 설명 추가

기술연구소

고동우

1.1.0

2015.11.06

IDE 1.1 업데이트 사항 반영

1.2.0

2016.03.08

IDE 1.2 업데이트 사항 반영

본 문서는 MSP IDE의 구성, 기능에 대해 기술하며, MSP IDE 에 대한 소개 자료로 활용 될 수 있습니다.

1. 소개

Morpheus Server Platform (이하 MSP) 은 모바일 서비스 구축 시 게이트웨이 서버 개발에 활용되며, 기존 개발 방식보다 쉽고 빠르게 개발할 수 있도록 통합 개발 환경(Integrated Development Environment:이하 IDE)을 제공합니다.

1.1. MSP IDE 개요

MSP IDE는 MSP 서버 프로젝트를 개발하기 위한 통합 개발 환경을 의미합니다. IDE에서는 개발 환경 설정, 프로젝트 생성, 코딩, 컴파일, 실행, 디버깅, Export 기능을 지원하고 다양한 프로토콜의 레거시 시스템과의 연동을 위한 개발 툴을 지원합니다.

1.2. IDE 문의 / 기술지원

*www.morpheus.co.kr* 기술지원 게시판을 이용하시기 바랍니다.

1.3. 라이선스

MSP IDE를 사용하기 위해서는 ㈜유라클 에서 발급하는 라이선스키 파일이 반드시 존재해야 합니다. 라이선스키 파일은 클라이언트, 서버 모두 필요하므로 개발용 또는 정식 라이선스를 발급 받기 위해서는 기술지원팀에 문의하시기 바랍니다.

1.4. 구성

MSP IDE는 Eclipse Plug-In 기반으로 개발되었으며, Eclipse와 동일한 형태의 개발 환경을 제공합니다.

IDE는 다음과 같은 기능별 구성 요소로 이루어져 있습니다.

  1. MSP 플랫폼

  2. MSP Perspective

  3. MSP 프로젝트

  4. Resource 매니저

  5. Manifest Overview

  6. Dashboard

  7. Deploy Tool

Eclipse JAVA EE Perspective 와 유사한 MSP Perspective의 기본 메뉴 구성은 File | Edit | Navigate | Search | Project | Run | Windows | Help 로 구성됩니다.

2. 설치

MSP IDE 가 구동하기에 적합한 환경과 서버 플랫폼을 탑재한 게이트웨이 서버가 구동하기에 필요한 하드웨어 및 소프트웨어 요구사항을 설명합니다.

2.1. 시스템 요구사항

항 목

사 양

CPU

Intel Core2Duo 2.7 Ghz (또는 유사 성능의 AMD Processor)

Memory

2,048MB Ram

HDD

30GBytes 이상

방화벽

IDE 구동 시 외부 참조 url. 내부망에서 사용 시 outbound 오픈이 필요할 수 있음.

공지 사항 54.64.141.236:80

Error Report 54.64.141.236:5436

SDK Manager 211.241.199.245:3690

IDE Update site 211.241.199.245:80

MSP nexus 211.241.199.217:8080

2.2. 소프트웨어 요구사항

항 목

사 양

OS

Windows XP 이상, MAC OS X 10.7(64bit) 이상

Java

IDE: Java 1.8.x Version 이상

Framework: Java 1.6.x Version 이상 (1.8.x 부분 지원)

DBMS

Oracle, MySQL, MS-SQL, Informix, DB2

WAS

Tomcat 6.1.x Version 이상

2.3. JDK 설치

2.3.1. Windows 용

  1. JDK(Java Developer’s Kit) 설치

image3

그림 2.3.1-1 Java 설치

Java 홈페이지에서 (*http://www.oracle.com/*) 자신의 OS 환경에 맞는 Java 설치 파일을 다운로드 받아 설치합니다

  1. 시스템 환경변수 설정

    시작 메뉴를 클릭하여 환경변수를 검색하면 아래 그림과 같이 계정의 환경변수 편집 메뉴가 검색됩니다.

image4

그림 2.3.1-2 환경변수 메뉴 찾기(1)

환경 변수(N)를 설정하는 창은 위와 같은 방법으로 간단히 접근하거나, ‘내 컴퓨터’ 우 클릭 후 속성 또는 ‘윈도우 키 + Pause/Break 키’를 통해 들어간 시스템 창의 고급 탭 하단의 환경 변수 버튼을 클릭합니다.

image5

그림 2.3.1-3 환경변수 메뉴 찾기(2)

윈도우에 설치된 Java 설치 경로를 확인합니다. Java를 설치할 때 경로를 수정하지 않았다면 보통 C:\Program Files\Java에 설치되게 됩니다.

image6

그림 2.3.1-4 JAVA_HOME 추가

위 그림과 같이 환경변수 창의 하단 새로 만들기 버튼을 누르고 아래와 같은 값을 입력한 후 확인 버튼을 누릅니다.

  • 변수 이름(N): JAVA_HOME

  • 변수 값(V): Java 설치 경로

    아래 그림과 같이 시스템 변수 리스트에서 Path항목을 찾아 선택한 후 편집 버튼을 누릅니다.

image7

그림 2.3.1-5 Path 추가

변수 값(V)의 마지막에 세미콜론(;)을 붙여준 뒤 %JAVA_HOME%\bin을 추가로 붙여줍니다.

다음으로 아래 그림과 같이CLASSPATH 항목을 찾아 편집 버튼을 누르고 위에서와 마찬가지로 변수 값(V) 마지막에 세미콜론(;)을 붙여준 뒤 %JAVA_HOME%\lib\tools.jar을 추가로 붙여줍니다.

image8

그림 2.3.1-6 ClASSPATH 추가

윈도우의 커맨드 창을 열어서 java혹은 javac라고 쳤을 때 반응이 있으면 Java 설정이 정상적으로 완료된 것입니다.

image9

그림 2.3.1-7 Java 설치 확인

*참고*

MSP IDE는 이클립스 Luna (4.4.1) 버전을 기반으로 패키징 되어 있습니다. 이클립스 Luna 버전은 JDK 1.8 버전 이상을 최소사양으로 요구하고 있습니다.

2.3.2. Mac 용

image10

그림 2.3.2-1 Java 설치 또는 업데이트

MAC OS는 기본적으로 JAVA가 설치되어 있습니다. 현재 OS 버전에 맞게 SE 업데이트 합니다.

2.4. MSP IDE 설치

MSP IDE는 압축 파일로 패키징된 형태로 기술지원팀을 통하여 전달되거나 별도의 다운로드 url에서 다운로드 받을 수 있습니다.

Windows

32bit : *http://docs.morpheus.kr/ide/download/win32.win32.x86/MSP_1.3.1-i18n.zip*

64bit : *http://docs.morpheus.kr/ide/download/win32.win32.x86_64/MSP_1.3.1-i18n.zip*

Mac

64bit : *http://docs.morpheus.kr/ide/download/macosx.cocoa.x86_64/MSP_1.3.1-i18n.zip*

(다운로드 url은 바뀔 수 있습니다.)

압축 파일을 작업 PC의 대상 디렉토리에 압축을 풀면 MSP.exe 실행 파일을 클릭하여 이클립스를 기동할 수 있습니다.

2.5. DBMS 설치

MSP 플랫폼은 게이트웨이 서버의 리소스 업데이트, 통계 데이터 관리 등의 기본 기능 수행을 위해 관련된 테이블 구조가 필요하며, 이에 대한 생성 스크립트를 별도로 제공하고 있습니다. 기본 테이블 생성 스크립트는 기술지원팀을 통하여 전달받을 수 있습니다.

MSP 플랫폼이 지원하는 DBMS 종류는 Oracle, MS-SQL, MySQL, Informix, DB2 가 있으며 IDE가 실행되는 로컬 개발 PC에 DB를 설치하고자 하는 경우 DB 벤더별 홈페이지에서 다운로드 받아 설치하시기 바랍니다.

종류

홈페이지

Oracle

*http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html*

MS-SQL

*https://www.microsoft.com/ko-kr/download/*

MySQL

*http://www.mysql.com/downloads/*

Informix

*http://www-01.ibm.com/software/data/informix/downloads.html*

DB2

http://www-01.ibm.com/software/data/db2/linux-unix-windows/downloads.html

2.6. Tomcat 설치

MSP IDE로 생성된 서버 프로젝트는 WAS 컨테이너 위에 마운트되어 동작됩니다. 로컬 개발 환경에 별도의 WAS를 설치해야 할 경우 무료로 제공되는 Tomcat을 홈페이지에서 다운로드 받아 설치하여 연동할 수 있습니다. Tomcat 버전은 6.X 이상 사용할 것을 권장합니다.

  1. Tomcat 다운로드 *http://tomcat.apache.org/download-60.cgi* 주소로 이동하여 해당 설치 파일을 다운로드 합니다.(32-bit Windows zip)

    image11

그림 2.6-1 톰캣 홈페이지

  1. 해당 디렉토리에 압축 파일을 해제합니다.(예: C:\apache-tomcat\)

    image12

그림 2.6-2 톰캣 압축해제

  1. C:\apache-tomcat\conf\Catalina\localhost\ROOT.xml 파일을 생성해서 웹 루트 디렉토리를 서버 소스 파일의 WebContent 로 설정합니다.

  2. C:\apache-tomcat\bin\startup.bat 파일을 실행하여 톰캣을 기동시킵니다.

  3. 브라우저(Webkit 기반 브라우저 크롬 또는 IE9 이상)에서 http://localhost:8080/ 접속 하여 확인합니다.

기능

MSP IDE는 스프링 기반의 MSP Platform을 활용하여 효과적인 Back End Integration 구현을 위한 툴들을 제공하고 있습니다.

MSP IDE

MSP IDE는 모바일 게이트웨이 용도의 서버 프로젝트를 개발하기 위한 도구로, MSP 프레임워크에서 제공하는 기능을 쉽고 빠르게 적용할 수 있습니다.

IDE 시작

MSP.exe 실행 파일을 더블 클릭하여 프로그램을 실행시키면 아래 그림과 같은 로고를 볼 수 있으며, 프로그램 로딩 진행상황을 나타내는 진행 바가 나타나고 MSP IDE가 실행 됩니다.

image13image14

그림 3.1.1-1 Workspace 설정

실행 후 첫 번째로 나타나는 화면은 MSP IDE를 통해 생성되는 프로젝트들을 저장할 작업 공간을 선택하는 화면입니다. 프로젝트를 저장할 위치를 선택하고, OK 버튼을 누르면 MSP Perspective로 구성된 초기 화면이 나타납니다.

MSP Perspective

image15

그림 3.1.2-1 MSP IDE 초기화면

이클립스 화면 구성은 웹 프로젝트 개발에 사용되는 JAVA EE Perspective 구성과 동일합니다. IDE 상단 메뉴모음에는 플랫폼에서 제공하는 라이브러리를 관리하는 리소스 매니저 호출 버튼이 있고, 왼쪽 영역에는 프로젝트 리소스들을 관리할 수 있는 Project Explorer 가 위치합니다. 중앙에 위치한 편집기 영역에는 파일의 특성에 맞는 에디터가 열리게 됩니다. 중앙 에디터 영역 아래엔 에디터 기능을 보조하여 오류나 표준 출력 메시지 확인, 서버 연동을 할 수 있는 뷰들이 위치해 있습니다.

image16

그림 3.1.2-2 퍼스팩티브 지정

만약 IDE 실행 후 위와 같은 레이아웃이 아닐 경우, 도구 메뉴 중 Window → Perspective → Open Perspective → MSP를 선택하면 위와 같은 화면으로 재구성 됩니다.

image17

그림 3.1.2-3 공지사항

공지사항이 있는 경우 IDE 로딩이 완료되고 위 그림과 같은 공지사항을 확인하실 수 있습니다. 공지사항을 통해 업데이트 내역 및 최신 이슈를 확인할 수 있습니다. 이미 확인한 공지라면 공지사항 대화상자 하단의 ‘이 공지 다시 보지 않기’를 선택하시면 해당 공지 내용이 다음 시작할 때부터 보이지 않게 됩니다.

IDE Preferences

업데이트 동작 설정이나 라이선스 관리 등의 환경 설정을 하기 위해서는 아래 그림과 같이 환경설정 메뉴를 선택합니다.

image18

그림 3.1.3-1 환경설정 메뉴

  • Mac : Morpheus → 환경설정

  • Window : Window → Preferences

메뉴를 선택하면 환경설정 다이얼로그가 실행되고, 왼쪽 메뉴에 Morpheus 트리를 선택 하면 Dashboard , License 환경 설정 페이지를 확인할 수 있습니다.

  • Morpheus

image19

그림 3.1.3-2 공지사항 수신 설정

Morpheus 트리를 선택하면 공지사항 수신 여부를 선택할 수 있는 기본 설정 페이지가 나타납니다.

  • Dashboard

image20

그림 3.1.3-3 대쉬보드 뷰 타입 설정

Dashboard 에디터 설정 페이지에서는 다음과 같은 동작을 할 수 있습니다.

  • 방사형의 다이어그램: 대쉬보드에 보여지는 컨트롤러 클래스 노드를 방사형의 다이어그램 형태로 보여줍니다. 기본 설정값입니다.

  • 패키지명으로 그룹핑된 트리뷰: 대쉬보드에 보여지는 컨트롤러 클래스 노드를 패키지명 단위로 그룹핑하여 트리뷰 형태로 보여줍니다.

  • License

image21

그림 3.1.3-4 라이선스 설정

라이선스 관리 페이지에서는 다음과 같은 동작을 할 수 있습니다.

  • 추가하기 : 라이선스를 추가합니다. 추가된 라이선스는 프로젝트를 생성할 때와 생성된 프로젝트 라이선스를 변경할 때 사용됩니다.

  • 삭제하기 : IDE에 설치된 라이선스를 삭제합니다.

    1. 리소스 매니저

MSP IDE를 이용하여 모바일 게이트웨이 서버를 개발하기에 앞서 개발에 필요한 파일들을 리소스 매니저를 통해 설치해야 합니다. 제공되는 리소스는 게이트웨이 서버용 프로젝트 리소스와 관리자 페이지용 Admin 프로젝트 리소스, 이와 관련된 프레임워크 라이브러리들이 있습니다. 리소스 매니저를 통해 개발에 필요한 파일들을 설치, 삭제, 업데이트 할 수 있습니다.

image22

그림 3.1.4-1 툴바 메뉴

도구 상단 메뉴 중 image23리소스 매니저 열기 버튼을 클릭하면 리소스 매니저 대화상자가 아래 그림과 같이 나오게 됩니다.

image24

그림 3.1.4-2 리소스 매니저

리소스 매니저가 실행되면 각 프로젝트 별 리소스들을 확인할 수 있고, 프로젝트 별로 등록된 라이브러리들이 API 단위로 나열됩니다. 여기에서 선택되는 리소스에 대한 설명이 아래 그림과 같이 정보 대화상자를 통해 나타납니다.

image25

그림 3.1.4-3 리소스 정보 확인

각 항목들에 대한 설치 상태를 확인하고 설치할 항목들을 체크 합니다. 설치가 되어있지 않을 경우 미 설치로 상태 값이 표기되며, 설치된 파일들 중 업데이트된 항목이 있을 경우 업데이트를 받을 수 있습니다. 리소스 매니저의 각 기능들은 다음과 같습니다.

  • File -> Refresh : 서버에서 최신목록을 받아와 화면에 표시 합니다.

  • File -> Exit : 리소스 매니저를 종료합니다.

  • 리소스 설치 : 선택된 파일을 설치 또는 업데이트 합니다.

  • 리소스 삭제 : 선택된 파일을 삭제합니다.

    1. 프로젝트 생성

프로젝트 생성 Wizard를 통해 게이트웨이 서버 프로젝트, 관리자 페이지 프로젝트를 생성할 수 있습니다. 생성된 프로젝트는 각각의 기능을 수행하기 위한 기본 리소스를 포함하고 있으므로 개발자는 커스터마이징 영역을 구현하는 방식으로 활용할 수 있습니다.

MSP Server Project

서버 프로젝트는 모바일용 게이트웨이 서버 프로젝트를 의미합니다. New Server Project Wizard를 통해 신규 Server 프로젝트를 생성하게 됩니다. New Server Project Wizard를 호출 하는 방법은 다음과 같습니다.

  • 상단 메뉴 중 File → New → New MSP Server Project

  • 마우스 오른쪽 버튼 → New → New MSP Server Project

  • 메뉴 바 New 아이콘 → New MSP Server Project

image26

그림 3.1.5.1-1 New Server Project Wizard 첫 번째 페이지

프로젝트 기본 정보를 입력하는 첫 번째 페이지가 호출 됩니다. 각 입력 항목들에 대한 설명은 다음과 같습니다.

  • Project Name : 프로젝트 이름을 입력합니다.

  • Project location : 프로젝트가 설치될 위치를 지정합니다. 특별한 경로를 지정하지 않을 경우 IDE 실행 시 설정한 Workspace에 프로젝트가 생성됩니다.

  • License: 프로젝트에 적용할 라이선스를 선택합니다. 만약 라이선스가 없을 경우 교육용 라이선스를 선택하여 생성할 수 있고, 발급받은 라이선스가 존재한다면 추가하기 버튼을 눌러 라이선스를 추가한 후 선택 할 수 있습니다.

  • Target runtime : 프로젝트를 실행할 웹 컨테이너를 선택합니다. IDE에 추가된 웹 컨테이너가 없을 경우 New Runtime 버튼을 눌러 추가 할 수 있습니다. Target runtime을 선택하지 않고 프로젝트를 생성해도 무관하며 프로젝트 생성 후 웹 컨테이너를 지정할 수 있습니다.

  • Execution Environment : 프로젝트 빌드에 사용할 Java 버전을 선택합니다. Environments 버튼을 통해 새로운 실행 환경을 추가 할 수 있습니다.

  • Working sets : 프로젝트를 이클립스 UI 좌측에 보여지는 Project Explorer의 Working set에 추가합니다.

첫 페이지에 입력할 필수 정보들을 모두 입력했으면 하단의 Next 버튼이 활성화 됩니다. Next 버튼을 눌러 다음단계로 넘어갑니다.

image27

그림 3.1.5.1-2 New Server Project Wizard 두번째 페이지

위 그림은 프로젝트에 적용할 API를 선택하는 화면 입니다. API 선택 콤보에서 선택하는 API가 프로젝트에 적용됩니다. API가 선택되면 프로젝트에 적용될 라이브러리가 아래 뷰를 통해 보여집니다. 만약 Server API가 하나도 설치되어 있지 않다면 New API를 통해서 새로운 API를 설치하실 수 있습니다. API를 선택하셨으면 Finish 버튼이 활성화 됩니다. Finish 버튼을 누르면 설정된 정보가 반영된 프로젝트가 생성 됩니다.

image28

그림 3.1.5.1-3 MSP 서버 프로젝트 구조

생성된 서버 프로젝트는 모바일 서비스를 위한 기본적인 라이브러리와 리소스, 샘플 코드를 포함합니다. 이클립스 Project Explorer 영역에 image29표시가 된 프로젝트를 확인할 수 있습니다.

MSP Admin Project

MSP Admin 프로젝트는 관리자 페이지 프로젝트를 의미합니다. MSP 서버 프로젝트를 생성하는 방법과 유사하게 Wizard를 호출합니다. New Admin Project Wizard를 호출 하는 방법은 다음과 같습니다.

  • 상단 메뉴 중 File → New → New MSP Admin Project

  • 마우스 오른쪽 버튼 → New → New MSP Admin Project

  • 메뉴 바 New 아이콘 → New MSP Admin Project

프로젝트 기본 정보를 입력하는 첫 번째 페이지와 프로젝트 적용 API를 선택하는 두번째 페이지는 MSP Server Project를 생성하는 화면과 같습니다.

image30

그림 3.1.5.2-1 MSP Admin 프로젝트 구조

생성된 Admin 프로젝트는 관리자 페이지 구성을 위한 기본적인 라이브러리와 리소스들을 포함하고 있습니다.

MSP Manifest Editor

Server Manifest Editor 는 서버 프로젝트 관련 설정 정보를 확인하고 변경할 수 있는 UI 에디터로서 Overview, Configuration, Library Manager, msp.xml 탭으로 이루어져 있습니다. . Server Manifest Editor 는 프로젝트 생성과 동시에 열리게 되며, Project Explorer에서 프로젝트 내부에 있는 manifest.xml 파일을 더블 클릭하여 열 수 있습니다. 에디터에서 설정 정보를 변경한 후에는 Ctrl + S(Mac : command + S) 버튼을 눌러 변경 내용을 저장 할 수 있습니다.

Overview

image31

그림 3.1.6.1-1 Overview

개요 탭에서는 프로젝트의 기본정보를 설정하고 실행과 배포를 할 수 있는 링크들을 제공합니다. 각 그룹별 기능은 다음과 같습니다.

  • 프로젝트 기본정보

    • 프로젝트 이름 : 해당 프로젝트 이름입니다.

    • 라이선스 상태 : 라이선스 적용 유무를 나타냅니다. 라이선스를 변경해야 할 경우 변경하기 버튼을 누르면 다음과 같은 라이선스 대화상자가 나타납니다.

image32

그림 3.1.6.1-2 라이선스 변경

변경하려는 라이선스를 선택하고 OK 버튼을 누르면 선택된 라이선스가 프로젝트에 적용됩니다. 만약 변경하려는 라이선스가 등록되어 있지 않은 경우 추가하기 버튼을 눌러 라이선스를 추가할 수 있습니다.

  • 설정 페이지들

    • Configuration : msp.xml 관련 설정 탭으로 이동합니다.

    • 라이브러리 매니저 : 라이브러리 매니저 탭으로 이동합니다.

  • 실행 / 배포

    • 프로젝트 실행하기 : 이클립스에 연동설정 되어있는 WAS 컨테이너에서 프로젝트를 실행합니다.

    • 프로젝트 디버깅하기 : 이클립스에 연동설정 되어있는 WAS 컨테이너에서 프로젝트를 디버깅합니다.

    • Maven install : 프로젝트 pom.xml 에 정의되어 있는 war 형태로 프로젝트를 패키징합니다.

    • WAR 파일로 배포하기 : 프로젝트를 WAR 파일로 배포합니다. WAR 파일로 배포하기는 파일 배포와 FTP 전송 기능을 지원합니다.

  • Dashboard

    • Dashboard 열기 : 대쉬보드 에디터를 실행합니다.

      1. Configuration

image33

그림 3.1.6.2-1 Configuration

Configuration 탭에서는 서버 프로젝트 관련 설정들을 합니다. 왼쪽에 설정 항목들이 있고 항목을 클릭하면 선택한 항목에 대한 설명을 확인할 수 있습니다.

  • Admin 기본설정

    • API Upload: 파일 업로드 시 저장 경로를 지정합니다.

  • 서버

    • 이벤트 로그 경로: 모바일 통계 정보 로그가 쌓일 디렉토리를 지정합니다.

  • 스토어

    • Service URL : 스토어에서 배포한 앱을 다운로드 받을 수 있는 URL을 지정합니다.

    • Bin : 앱의 확장자를 지정합니다.

    • Upload path : 스토어에서 배포할 앱이 저장될 물리적인 경로를 지정합니다.

  • 데이터베이스

    • JNDI

      • DB Type : 사용할 데이터 베이스 종류를 지정합니다.

      • JNDI Name : 사용할 데이터 베이스로 WAS에 지정된 JNDI 이름을 설정합니다.

    • JDBC

      • DB Type : 사용할 데이터 베이스 종류를 지정합니다.

      • Driver Class : jdbc 드라이버 클래스 명을 지정합니다.

      • Url : 연결할 데이터 베이스 서버의 URL을 입력합니다.

      • User name : 데이터 베이스 접속 아이디를 입력합니다.

      • Password : 데이터 베이스 접속 패스워드를 입력합니다.

  • 리소스

    • Download URL : 관리 페이지에 배포 시 NAS를 이용한 웹 서버를 사용할 경우 해당 리소스 서버의 URL을 입력합니다.

*참고*

Manifest 에디터와 Dashboard 에디터를 동시에 열고 Dashboard에서 msp.xml 에 저장되는 항목을 수정하여 저장할 경우 Manifest 에디터가 수정된 상태로 변경되게 됩니다. 예를 들어, Dashboard 에디터에서 ‘Save at Property File’ 설정을 켠 상태로 레거시 접속 정보를 msp.xml 에 저장하면 열려진 Manifest 에디터가 dirty(수정) 상태로 변경됩니다. 이 경우 Manifest 에디터에서도 다시 한번 저장을 해주어야 합니다.

Library Manager

image34

그림 3.1.6.3-1 라이브러리 매니저

Library Manager 탭에서는 프로젝트에 적용된 라이브러리들을 추가, 삭제, 업데이트 할 수 있습니다. 위 그림과 같은 UI에서 왼쪽에 있는 라이브러리 목록에서 라이브러리를 선택하면 오른쪽 설명 그룹에서 해당 라이브러리에 대한 정보 및 상세 히스토리를 확인 할 수 있습니다. 설치 또는 업데이트 하거나 제거하려는 라이브러리를 선택하고 라이브러리 적용 또는 라이브러리 적용 해제 버튼을 누르면 선택된 라이브러리가 프로젝트에 적용, 해제됩니다.

msp.xml

Configuration 탭의 설정을 통해 생성되는 msp.xml 파일을 확인하고 직접 편집 할 수 있습니다. 설정된 값은 어플리케이션 기동 시 읽어 들여 적용되게 됩니다.

*참고*

파일 포맷 유지를 위해 사용되고 있는 msp.xml 파일의 XML 트리 구조 변경은 권장하지 않습니다.

Admin Manifest Editor

Admin Manifest Editor 는 Admin 프로젝트 관련 설정 정보를 확인하고 변경할 수 있는 UI 에디터로서 Overview, Common, Resource, Push, Store, Library Manager, msp.xml 탭으로 이루어져 있습니다. Admin 프로젝트 생성과 동시에 열리게 되며, Project Explorer에서 프로젝트 내부에 있는 manifest.xml 파일을 더블 클릭하여 열 수 있습니다. 에디터에서 설정 정보를 변경한 후에는 Ctrl + S(Mac : command + S) 버튼을 눌러 변경 내용을 저장 할 수 있습니다.

Overview

image35

그림 3.1.7.1-1 Overview

개요 탭에서는 프로젝트의 기본정보를 설정하고 실행과 배포를 할 수 있는 링크들을 제공합니다. 각 그룹별 기능은 다음과 같습니다.

  • 프로젝트 기본정보

    • 프로젝트 이름 : 해당 프로젝트 이름입니다.

    • 라이선스 상태 : 라이선스 적용 유무를 나타냅니다. 라이선스를 변경해야 할 경우 변경하기 버튼을 눌러 라이선스 대화상자에서 변경할 수 있습니다.

  • 설정 페이지들

    • Admin Configuration : Common 탭으로 이동합니다.

    • Resource Configuration : Resource 탭으로 이동합니다.

    • Push Configuration : Push 탭으로 이동합니다.

    • Store Configuration : Store 탭으로 이동합니다.

    • 라이브러리 매니저 : 라이브러리 매니저 탭으로 이동합니다.

  • 실행 / 배포

    • 프로젝트 실행하기 : 이클립스에 연동설정 되어있는 WAS 컨테이너에서 프로젝트를 실행합니다.

    • 프로젝트 디버깅하기 : 이클립스에 연동설정 되어있는 WAS 컨테이너에서 프로젝트를 디버깅합니다.

    • Maven install : 프로젝트 pom.xml 에 정의되어 있는 war 형태로 프로젝트를 패키징합니다.

    • WAR 파일로 배포하기 : 프로젝트를 WAR 파일로 배포합니다. WAR 파일로 배포하기는 파일 배포와 FTP 전송 기능을 지원합니다.

      1. Configurations

image36

그림 3.1.7.2-1 Common 탭

Common 탭에서는 Admin 프로젝트 기본 설정을 합니다. 설정 항목 링크를 클릭하면 설명을 확인할 수 있습니다.

  • Admin 기본정보

    • Security mode:XSS(Cross Site Scripting) 방지 기능을 설정합니다.

    • Double Login Check: 중복 로그인 체크 기능을 설정합니다.

    • Login Lock Count: 로그인 실패 허용 횟수를 지정합니다.

    • Login Lock Time: 로그인 잠금 해제 시간을 지정합니다.(초)

    • Root Directory: 배포 파일이 위치할 절대 경로를 지정합니다.

    • Files Directory: 파일 업로드 시 저장 경로를 지정합니다.

    • List Row Size: 공통 페이징 처리 row수를 지정합니다.

    • List Page Size: 공통 페이징 처리 페이지를 지정합니다.

    • Password Change Day: 패스워드 변경일 알림 기준 시간을 지정합니다.

  • Service

    • Server, Store, Push 서비스 사용 여부를 체크합니다.

  • IP필터

    • 파일 경로: IP 필터 기능 사용 시 접근 가능한 IP 목록을 저장한 프로퍼티 파일의 위치를 지정합니다.

  • 기본 데이터베이스

    • JNDI

      • DB Type : 기본 데이터베이스로 사용할 DBMS 종류를 지정합니다.

      • JNDI Name : 사용할 데이터 베이스로 WAS에 지정된 JNDI 이름을 설정합니다.

    • JDBC

      • DB Type : 기본 데이터베이스로 사용할 DBMS 종류를 지정합니다.

      • Driver Class : jdbc 드라이버 클래스 명을 지정합니다.

      • Url : 연결할 데이터 베이스 서버의 URL을 입력합니다.

      • User name : 데이터 베이스 접속 아이디를 입력합니다.

      • Password : 데이터 베이스 접속 패스워드를 입력합니다.

  • PUSH 데이터베이스

    • JNDI

      • DB Type : PUSH 데이터베이스로 사용할 DBMS 종류를 지정합니다.

      • JNDI Name : 사용할 데이터 베이스로 WAS에 지정된 JNDI 이름을 설정합니다.

    • JDBC

      • DB Type : PUSH 데이터베이스로 사용할 DBMS 종류를 지정합니다.

      • Driver Class : jdbc 드라이버 클래스 명을 지정합니다.

      • Url : 연결할 데이터 베이스 서버의 URL을 입력합니다.

      • User name : 데이터 베이스 접속 아이디를 입력합니다.

      • Password : 데이터 베이스 접속 패스워드를 입력합니다.

image37

그림 3.1.7.2-2 Resource 탭

Resource 탭에서는 Admin 프로젝트와 관련된 Resource 정보를 설정합니다.

  • 기본정보

    • 분할 압축 사이즈: 리소스 배포 시 압축 파일 분할 사이즈를 설정합니다.

    • Resource Location: 배포될 리소스 파일 위치를 설정합니다.

  • Resource

    • 서버 리소스 동기화 기능 사용 여부를 체크합니다.

image38

그림 3.1.7.2-3 Push 탭

Push 탭에서는 Admin 프로젝트의 Push 관련 설정을 할 수 있습니다.

  • Push 기본정보

    • Receiver: Receiver 호스트 정보를 설정합니다.

    • Absolute Path: 업로드 기본 경로를 설정합니다.

    • Image Folder Name: 이미지 업로드 폴더를 지정합니다.

    • Html Content Folder Name: Html 업로드 폴더를 지정합니다.

    • Total Info Folder Name: 부가 정보가 담긴 Html 업로드 폴더 경로를 지정합니다.

    • CSV Folder Name: CSV 전송 임시 저장 폴더를 지정합니다.

    • Absolute Path Web: 업로드 기본 경로 웹 url을 지정합니다.

  • Push Service

    • 리소스 동기화 : 리소스 동기화 기능 사용 여부를 체크합니다.

    • CSV 전송 : CSV 전송 기능 사용 여부를 체크합니다.

image39

그림 3.1.7.2-4 Store 탭

Store 탭에서는 Store에서 사용하는 정보 설정을 합니다.

  • Store 기본정보

    • Service URL: 스토어에서 배포한 앱을 다운로드 받을 수 있는 URL을 설정합니다.

    • Image Path: 스토어에서 Image를 서비스하기 위한 Root URL 주소를 설정합니다.

    • Bin Path: 스토어에서 Binary를 서비스하기 위한 Root URL 주소를 지정합니다.

    • Upload Path: 파일 업로드 물리 저장 경로를 지정합니다.

  • Store Server

    • 리소스 전송 기능 사용 여부를 체크합니다.

image40

그림 3.1.7.2-5 라이브러리 매니저 탭

Library Manager 탭에서는 프로젝트에 적용된 라이브러리들을 추가, 삭제, 업데이트 할 수 있습니다. UI 왼쪽에 있는 라이브러리 목록에서 라이브러리를 선택하면 오른쪽에 해당 라이브러리에 대한 정보 및 상세 히스토리를 확인할 수 있습니다. 설치 또는 업데이트 하거나 제거하려는 라이브러리를 선택하고 라이브러리 적용 또는 라이브러리 적용 해제 버튼을 눌러 적용, 삭제를 할 수 있습니다.

image41

그림 3.1.7.2-6 msp.xml 탭

각각의 탭의 설정을 통해 저장되는 값은 msp.xml 파일에 반영됩니다.

Dashboard

MSP 서버 프로젝트의 dashboard.xml 파일을 더블 클릭하면 Dashboard 화면이 에디터 영역에 나타납니다. Dashboard에 표현되는 다이어그램은 게이트웨이 서버에서 제공하는 단말 측 인터페이스 컨트롤러와 연동하는 레거시 인터페이스를 보기 쉽게 나타냅니다. 그리고 간단한 레거시 연동 비즈니스 로직 코드를 생성하는 기능을 지원합니다.

Diagram

Diagram 탭은 게이트웨이 서버에 연결된 단말 인터페이스와 연동되고 있는 레거시 서버들을 표현합니다. 좌측의 Diagram Display 영역과 우측의 팔레트 영역으로 구분됩니다.

image42

그림 3.1.8.1-1 Diagram

우측의 팔레트 영역에서 레거시 서버, 레거시 API, 컨트롤러 클래스, 메소드 아이템을 선택하여 좌측의 캔버스 영역에 드랍하는 형식으로 새로운 노드를 추가할 수 있습니다.

image43

그림 3.1.8.1-2 Diagram 컨텍스트 메뉴

캔버스 영역의 빈 공간에서 마우스 오른 클릭 후 보여지는 컨텍스트 메뉴에서 노드를 추가할 수 있습니다.

Context Menu

설명

New

레거시 서버, 컨트롤러 노드를 추가합니다.

Undo

방금 하였던 작업의 되돌리기를 수행합니다.

Redo

되돌리기 한 작업을 다시 수행합니다.

Delete

선택한 노드를 지웁니다.

Zoom In

줌 인 기능을 수행합니다.

Zoom Out

줌 아웃 기능을 수행합니다.

정렬

캔버스 중앙에 생성된 노드들을 정렬시킵니다.(자동정렬, 이름 정렬)

Import

기 작성된 컨트롤러 클래스를 대쉬보드에 임포트합니다.

Dashboard 상에서 입력한 값은 이클립스 상단 메뉴의 File > Save를 선택하거나 Ctrl+S 단축키로 메타 파일에 저장됩니다.

image44

그림 3.1.8.1-3 Dashboard Tree View

Dashboard 상에 나타나는 컨트롤러 클래스 노드는 방사형의 다이어그램이 디폴트 형태이며, Preferences 메뉴의 설정값을 변경하여 패키지 단위의 트리 형태로 바꾸어 볼 수 있습니다. 컨트롤러 클래스의 개수가 많을 경우 간편하게 보기 위해 활용할 수 있는 기능입니다.

image45

그림 3.1.8.1-4 Preferences 대쉬보드 뷰 타입 설정

대쉬보드의 컨트롤러 뷰 타입은 Preferences 설정 페이지의 Morpheus > Dashboard 탭에서 설정 가능하며, Apply 버튼을 눌러 반영할 수 있습니다.

레거시 서버

Dashboard에 나타나는 Legacy Server 노드는, 게이트웨이 서버에서 연동하는 레거시 서버를 의미합니다. HTTP 프로토콜을 사용하는 HTTP Server, Database 방식의 Database Server, EAI 방식의 EAI Server 를 지원합니다.

image46

그림 3.1.8.2-1 Legacy HTTP Server

image47

그림 3.1.8.2-2 HTTP Server 생성 다이얼로그

Diagram 우측 팔레트에서 Http Server 항목을 선택하여 캔버스에 드랍하거나 캔버스 빈 영역에서 마우스 오른 클릭 후 New > Add Http Server를 선택하여 Legacy Http Server를 추가할 수 있습니다. 게이트웨이 서버에서 연동하는 레거시 서버가 HTTP 프로토콜을 사용할 때에 이용할 수 있습니다. 레거시 서버를 생성하면 해당 서버에 대한 기본적인 접속 정보를 입력하는 다이얼로그가 나타납니다.

속 성

설 명

Name

레거시 서버에 대한 alias 를 지정합니다.

Type

http / https 프로토콜을 선택합니다.

Host

레거시 서버의 호스트 정보를 입력합니다.

Port

레거시 서버의 접속 포트를 입력합니다. (디폴트 80)

Encoding

레거시 서버의 인코딩을 지정합니다. (UTF-8, EUC-KR)

서버의 응답을 파싱할 때 기준 인코딩으로 사용됩니다.

Connection Timeout

HTTP Request가 연결되기까지 대기하는 시간 (milliseconds)

Socket Timeout

HTTP 커넥션이 연결되고 Request 후 응답을 받을 때까지 대기하는 시간 (milliseconds)

Handle Redirect

302 Redirect HTTP 응답에 대한 처리 여부

Save at Property File

접속 정보를 msp.xml 프로퍼티 파일에 저장할지 여부를 선택합니다.

설정값은 MSP 프레임워크에서 제공하는 HTTP Client 동작 시 참조하게 됩니다. 그리고 생성되는 컨트롤러 클래스의 코드에 다이얼로그에서 입력한 설정값으로 세팅되는 것을 확인할 수 있습니다.

다이얼로그 좌측 하단의 버튼을 누르면 입력된 값으로 레거시 서버에 접속 테스트를 할 수 있습니다.

image48

그림 3.1.8.2-3 Legacy Database Server

image49

그림 3.1.8.2-4 Database Server 생성 다이얼로그

Legacy Database Server는 게이트웨이 서버에서 연동하는 Database 형식의 레거시 서버를 의미합니다. 간단한 조회성 쿼리로 연동될 수 있는 Database에 대하여 지원합니다. Diagram 우측의 팔레트에서 Database Server 아이템을 선택 후 캔버스 영역에 드랍하거나 캔버스 빈 영역에서 마우스 오른 클릭 후 New > Add Database Server를 선택하여 추가할 수 있습니다. Database Server를 생성하면 접속 정보를 입력할 수 있는 다이얼로그가 나타납니다.

속 성

설 명

Name

레거시 서버에 대한 alias 를 지정합니다.

Save at Property File

접속 정보를 msp.xml 프로퍼티 파일에 저장할지 여부를 선택합니다.

JNDI

DB Type

DB Vendor (Oracle, MS-SQL, MySQL, Informix, DB2)

종류를 선택합니다.

JNDI Name

JNDI 명을 입력합니다.

JDBC

DB Type

DB Vendor 종류를 선택합니다.

Driver Class

JDBC 드라이버 클래스 명을 입력합니다.

Url

JDBC 접속 url을 입력합니다.

User name

접속 계정 아이디를 입력합니다.

Password

접속 계정 패스워드를 입력합니다.

설정값은 프로젝트 내의 스프링 컨텍스트 xml 파일에 반영됩니다.

*참고*

Database Server에 한번 설정된 Name alias 는 수정할 수가 없습니다. 수정이 필요할 경우, 레거시 서버 노드를 삭제 후 새로 만들 것을 권장합니다.

Database Server 다이얼로그 좌측 하단의 연결 테스트 버튼을 누르면 설정한 데이터 베이스에 대하여 연결 확인을 수행합니다.

image50

그림 3.1.8.2-5 Legacy EAI Server

image51

그림 3.1.8.2-6 EAI Server 생성 다이얼로그

Legacy EAI Server는 게이트웨이 서버에서 연동하는 EAI 형식의 레거시 서버를 의미합니다. EAI 인터페이스와 연동하는 3rd 파티 클라이언트 라이브러리를 임포트하여 내부적으로 소켓 통신 방식으로 연동하는 경우 사용할 수 있습니다. 새로운 노드를 추가할 경우, Diagram 우측의 팔레트에서 EAI Server 아이템을 선택 후 캔버스 영역에 드랍하거나 캔버스 빈 영역에서 마우스 오른 클릭 후 New > Add EAI Server를 선택하여 추가할 수 있습니다. EAI Server를 생성하면 설정 정보를 입력할 수 있는 다이얼로그가 나타납니다.

속 성

설 명

Name

레거시 서버에 대한 alias 를 지정합니다.

Wrapper Class

기 생성된 wrapper 클래스의 전체 클래스 명을 입력하거나 새로운 클래스를 생성합니다.

Parsing Type

EAI 클라이언트 라이브러리를 이용한 소켓 스트링 응답을 파싱하는 방식을 선택합니다. index는 index 기반 파싱을 의미하고 split은 구분자 기반 split 파싱 방식을 의미합니다.

Library

3rd Party EAI 클라이언트 라이브러리를 추가하거나 삭제할 수 있습니다. 추가한 라이브러리 파일은 서버 프로젝트의 WEB-INF/lib 폴더로 복사됩니다.

Configuration

초기화 설정값을 입력합니다. EAI 클라이언트 라이브러리를 Wrapping한 wrapper 클래스의 configure 메소드에 설정값 인자로 주어집니다.

Common Parameter

연동에 사용되는 파라메터 중 공통으로 사용하는 패턴의 것을 지정합니다.

Proxy Url

레거시 서버에 직접 연결할 수 없는 환경일 때 프록시 서버 url을 세팅합니다.(일반적인 프록시 서버가 아닌 MSP 서버간 프록시 통신 방식을 의미함.)

EAI Server는 EAI 인터페이스와 소켓 통신 방식으로 연동하는 EAI 클라이언트 라이브러리와 그것을 이용하여 구현된 Wrapper 클래스를 의미합니다. Wrapper 클래스는 설정, 요청, 응답을 수행하는 인터페이스를 구현하여 개발자가 직접 작성하는데, MSP IDE에서는 이 구현된 메소드를 호출하는 방식으로 동작합니다.

image52

그림 3.1.8.2-7 EAI Server Wrapper 생성 다이얼로그

EAI Server를 추가할 때 EAI Server 다이얼로그 상에서 Library 항목의 추가하기 버튼을 눌러 참조하고자 하는 eai 라이브러리를 지정할 수 있습니다. 추가된 라이브러리는 프로젝트 내의 WEB-INF/lib 하위로 복사되어 소스에서 참조할 수 있는 형태가 됩니다. 연동 로직을 구현할 Wrapper 클래스는 EAI Server 다이얼로그의 ‘Wrapper Class’ 링크를 클릭하여 디폴트로 인터페이스를 상속한 클래스를 생성하거나, 프로젝트에서 샘플 코드로 제공되는 com.example.service.SampleEaiWrapper.java 클래스를 참고하여 만들 수 있습니다. 개발자가 구현해야 할 Wrapper 클래스의 메소드는 다음과 같습니다.

메소드명

설 명

SampleEaiWrapper extends LegacyExecutor implements ILegacyExecutor

public void configure(Map<String,String> configMap)

라이브러리 초기화를 수행하는 코드를 작성합니다. 인자로 주어지는 configMap은 EAI Server 설정 시 입력한 Configuration 키, 값이 전달됩니다.

public void request(Object paramMap)

실 연동을 수행하는 코드를 작성합니다. 인자로 주어지는 paramMap은 EAI API 설정 시 입력한 Request Parameter 가 맵형태로 전달됩니다.

public Object response()

연동 결과를 스트링 타입으로 리턴하는 로직을 작성합니다.

*참고*

EAI 연동은 스트링 기반 파싱 방식으로 동작하기 때문에 response 메소드는 연동 결과를 반드시 String 타입으로 리턴하게끔 구현되어야 합니다. 그리고 메소드간 인자 전달은 Wrapper 클래스 내에 전역 변수를 선언하여 사용해야 합니다.

또한, EAI 연동 방식은 EAI Server 등록 시 자주 사용되는 파라메터 구조체를 공통 파라메터 형태로 등록하여 사용할 수 있습니다.

image53

그림 3.1.8.2-8 EAI Server 공통 파라메터 입력 다이얼로그

입력한 공통 파라메터는 해당 EAI Server 하위에 존재하는 EAI API 들에서 불러와 request, response 파라메터로 쓸 수 있습니다.

추가된 레거시 서버는 GateWay 노드와 사용되는 프로토콜을 표시하는 연결선이 이어집니다.

image54

그림 3.1.8.2-9 Legacy Server 연결선

http, db, eai의 레거시 서버 프로토콜 특성은 한번 선택한 후 바꿀 수 없습니다. 레거시 서버의 설정값을 수정해야 할 경우, 레거시 서버 노드를 더블 클릭하거나 레거시 서버 노드 선택 후 마우스 오른 클릭 > Edit 메뉴 항목을 선택하여 다이얼로그를 띄울 수 있습니다. 또한, 레거시 서버 노드 선택 후 마우스 오른 클릭 > Delete 메뉴를 선택하거나 키보드 Delete 버튼으로 레거시 서버를 지울 수 있습니다.

*참고*

레거시 Database 서버 노드를 지우면 해당 서버 노드를 만들 때 같이 생성된 스프링 컨텍스트 설정 파일과 datasource도 같이 지워집니다.

image55

그림 3.1.8.2-10 Legacy Server 컨텍스트 메뉴

레거시 API

게이트웨이 서버에서 연동하는 레거시 서버의 인터페이스 정보를 의미합니다. 레거시 인터페이스로 전달할 요청, 응답 파라메터나 응답 파싱 규칙 등을 정할 수 있습니다. 레거시 서버의 프로토콜에 따라 각각 Http API, Database API, EAI API 세 가지 종류가 있으며, 팔레트에서 API노드를 선택하여 자신의 프로토콜에 맞는 레거시 서버 노드에 드랍하는 형식으로 추가할 수 있습니다.

image56

그림 3.1.8.3-1 Legacy API 추가

레거시 서버에 레거시 API를 드랍하려고 마우스 포인터를 올려놓았을 때 포인터에 + 표시가 나타나면 맞는 프로토콜로, 추가가 가능한 것입니다. 다른 방법으로, 레거시 서버 노드를 선택한 후 마우스 오른 클릭 > New > Add API 메뉴를 선택하여 추가할 수 있습니다.

레거시 API는 레거시 서버별로 추가될 수 있으며, 레거시 서버 하위에서 다시 그룹화하여 관리됩니다. 레거시 API 그룹은 레거시 서버 하위에 API가 많아질 경우 그룹화하여 관리하기 위해 제공되는 기능입니다.

image57

그림 3.1.8.3-2 Legacy API 그룹

그룹명은 레거시 API 생성 다이얼로그에서 Legacy Group 란에 새로 입력하거나 기존 그룹을 선택하여 사용할 수 있으며, 팔레트에서 레거시 API 노드 선택 후 원하는 그룹 하위로 드래그 앤 드랍하여 넣을 수 있습니다. 그룹 노드를 선택 후 마우스 오른 클릭 > Delete 를 선택하거나 키보드 Delete 선택으로 삭제할 수 있습니다. 삭제 시 해당 그룹 하위의 레거시 API 정보도 같이 지워집니다. 그룹명에 대한 일괄 수정은 지원하지 않습니다. 각각의 레거시 API에 대하여 속해있는 그룹명을 수정할 경우에는 레거시 API 다이얼로그를 열어서 Legacy Group 란에 새로운 이름을 입력합니다.

레거시 API의 설정값을 수정해야 할 경우, 레거시 서버 노드 하위의 레거시 API 노드를 더블 클릭하거나 레거시 API 노드 선택 후 마우스 오른 클릭 > Edit 메뉴 항목을 선택하여 다이얼로그를 띄울 수 있습니다. 레거시 API 노드를 삭제해야 할 경우, 레거시 API 노드 선택 후 마우스 오른 클릭 > Delete 메뉴를 선택하거나 키보드 Delete 버튼으로 지울 수 있습니다..

*참고*

레거시 API 노드가 지워지면 Database 타입일 경우 연결된 SqlMap 파일도 같이 지워집니다

HTTP API

Legacy Http API는 Http 프로토콜을 사용하는 레거시 서버에서 제공하는 인터페이스를 의미합니다.

image58

그림 3.1.8.4-1 Legacy Http API

image59

그림 3.1.8.4-2 Legacy Http API 생성 다이얼로그

Legacy Http API 노드를 생성하면 레거시 인터페이스의 정보를 입력할 수 있는 다이얼로그가 뜹니다. 입력하는 속성에 대한 설명은 다음과 같습니다.

속 성

설 명

API Name

레거시 API에 대한 alias 를 지정합니다.

Legacy Group

해당 레거시 API가 포함된 레거시 서버 하위에 속할 그룹명을 입력합니다.

URI

레거시 인터페이스 접속 url의 호스트, 포트를 제외한 경로를 입력합니다.

Method

GET, POST 의 Http Method를 선택합니다.

Type

레거시 인터페이스의 응답 포맷에 따른 타입을 선택합니다. html, xml, json, soap 중 선택할 수 있으며, 선택한 타입에 따라 다른 응답 파서가 적용됩니다.

Header Configuration

레거시 인터페이스로 전달할 Http 헤더값을 입력합니다.

Request Parameter

레거시 인터페이스로 전달할 요청 파라메터 정보를 입력합니다. Get 방식일 경우 url 쿼리로 전달되며, Post 방식일 경우 key = value 형식의 Post 파라메터 형식으로 전달됩니다.

Response Parameter

레거시 인터페이스의 응답 파라메터 정보를 입력합니다. 레거시로부터 전달받은 연동 규격서의 내용을 토대로 응답을 입력할 수 있으며, 시뮬레이팅 후 추출 규칙을 지정하지 않았을 경우 이 값을 기준으로 컨트롤러 메소드 코드가 생성됩니다.

Description

레거시 API에 대한 설명을 입력합니다. 이 값은 다이어그램 상에서 마우스 포인터를 해당 API 노드에 올렸을 때 나타나고, 또한 MSP 프레임워크에서 제공되는 자동 생성되는 단말연동규격서에 반영됩니다.

Extract Data

시뮬레이팅 후 레거시 응답 데이터에서 추출된 규칙을 보여줍니다.

image60

그림 3.1.8.4-3 Http 헤더 입력 다이얼로그

Legacy Http API 다이얼로그 하단의 Header Configuration 탭에는 레거시 서버로 전달할 헤더를 설정할 수 있습니다. XML 이나 JSON 포맷으로 연동할 때 Content-Type을 지정하거나 쿠키 인증을 사용할 때 쿠키 헤더 정보 등을 넣는데 사용합니다. Header Configuration 탭 UI는 테이블 형식으로 구성되며, ‘추가하기’, ‘삭제하기’, ‘수정하기’ 버튼을 눌러 Configuration 다이얼로그를 띄워 값을 입력할 수 있습니다. 삭제하기 기능은 키보드 Delete 키로 실행 가능합니다. 또한, 해당하는 항목을 마우스 더블 클릭하여 편집 다이얼로그를 열 수 있습니다.

image61

그림 3.1.8.4-4 Http Request 파라메터 입력 다이얼로그

Request Parameter 탭에는 레거시 서버로 보낼 리퀘스트 파라메터를 입력할 수 있습니다. Method가 GET 방식일 경우 쿼리 스트링으로 보내지며, POST 방식일 경우 POST 키, 값 형태로 전달됩니다. ‘추가하기’, ‘삭제하기’, ‘수정하기’ 버튼을 눌러 편집할 수 있으며, 키보드 Delete 키에 삭제하기 동작이 맵핑되어 있습니다. 해당 항목을 마우스 더블 클릭하여 편집 다이얼로그를 띄울 수 있습니다. ‘복사하기’ 버튼을 눌러 선택한 파라메터 row 정보를 클립보드에 복사할 수 있으며, 같은 기능은 Ctrl + C 단축키로 실행할 수 있습니다. ‘위로’, ‘아래로’ 버튼으로 입력된 파라메터의 순서를 변경할 수 있습니다.

파라메터 입력 다이얼로그의 입력 항목은 다음과 같습니다.

속 성

설 명

Name

파라메터 이름을 지정합니다.

Type

코드 생성 시 사용될 파라메터의 변수 타입을 지정합니다. 디폴트 String

Value

파라메터 값을 입력합니다.

Length

파라메터 값의 길이를 입력합니다. (레거시로부터 전달받은 연동 규격을 임포트할 시에 속성값이 맵핑될 수 있으나, 플랫폼 로직 상 사용되지 않습니다.)

Default Value

Value 값이 없을 때 디폴트 값으로 사용됩니다. 코드 생성 시 단말에서 전달된 파라메터와 맵핑시켰을 때 널 값이 전달될 경우 이 값으로 대체되도록 사용될 수 있습니다.

Description

파라메터에 대한 설명을 입력합니다.

image62

그림 3.1.8.4-5 import 파라메터 다이얼로그

‘가져오기’ 버튼을 클릭하면 Import Legacy Parameter 다이얼로그가 뜹니다. 레거시로부터 전달받은 엑셀 포맷의 규격을 임포트하여 파라메터로 추가할 수 있습니다. ‘Browse’ 버튼을 눌러 엑셀 파일을 찾아 선택할 수 있으며, File Location에 나타나는 파일 목록은 history로 저장되어 관리되므로 나중에 다시 다이얼로그를 열었을 때 열었던 목록을 선택할 수 있습니다. 다이얼로그 중간의 테이블 영역에는 파라메터로 임포트할 목록이 선택할 수 있게 나열됩니다.

*참고*

임포트할 엑셀 파일은 Name, Type, Value, Length, Default Value, Description 순으로 컬럼을 가지는 테이블 형식으로 되어 있어야 합니다. 이 규격에 맞지 않는 속성값은 무시되어 파라메터로 맵핑되지 않습니다.

image63

그림 3.1.8.4-6 Http Response 파라메터 다이얼로그

Response Parameter 탭은 레거시 서버로부터 전달받은 응답 파라메터를 입력할 수 있습니다. Request Parameter 탭과 동작 방식은 같으며, 시뮬레이팅 후 Extract Data 탭에 저장된 추출 파라메터를 우선적으로 코드로 반영하고, 추출 데이터가 없을 경우 이 탭에 정의된 파라메터가 소스로 생성됩니다. 개발 초기에 레거시에서 전달받은 연동규격을 바탕으로 Response Parameter를 미리 정의해 두고 개발을 진행할 때에 사용할 수 있습니다.

image64

그림 3.1.8.4-7 Http API Description 탭

Description 탭에는 해당 레거시 API에 대한 설명을 입력할 수 있는 영역이 있습니다. 입력된 설명문은 플랫폼에서 단말연동규격을 자동 생성할 때 참조되어 나타나게 되거나, Dashboard에서 해당 API 노드에 마우스 오버 시 설명이 나타납니다.

image65

그림 3.1.8.4-8 Http API Extract Data 탭

Extract Data 탭에는 시뮬레이팅 후 추출 규칙이 테이블 형태로 보여집니다. ‘삭제하기’버튼을 눌러 적용된 추출 규칙을 지우거나 키보드 Delete 키로 지울 수 있습니다.

다이얼로그 하단의 ‘OK’ 버튼을 누르면 설정한 값이 Dashboard 상에 반영되며 최종적으로 Dashboard 상에서 Ctrl+s 저장을 해야 메타 파일에 저장됩니다. Legacy Http API 다이얼로그에서 입력된 값은 컨트롤러 메소드 코드 생성 시 반영되게 됩니다.

HTTP Simulator

레거시 API 다이얼로그를 통하여 해당 레거시 인터페이스로 시뮬레이팅을 실행할 수 있습니다. 시뮬레이팅은 레거시로부터 전달받은 연동 규격서의 내용을 토대로 레거시 API 파라메터 설정을 하여 테스트를 하고, 연동 결과를 컨트롤러 메소드 코드에서 사용할 수 있게 추출하여 변수로 맵핑시키는 기능을 제공합니다. 데이터 추출 개념은 다음과 같은 이점이 있습니다.

  • 빠르게 레거시 연동 및 파싱 코드를 생성할 수 있습니다.

  • 개발자가 직접 연동 후 파싱 로직을 구현할 필요없이, 툴에서 추출된 변수에 레거시 응답을 맵핑시키는 기본 코드를 생성합니다.

  • 레거시 API 별로 파싱 및 맵핑 규칙을 저장, 관리하므로 여러 번 비즈니스 로직에서 참조하여 재사용할 수 있습니다.

  • 레거시 응답 데이터의 사이즈가 클 경우 모바일 서비스에 맞게 필요한 데이터 영역만 추출하여 비즈니스 로직에서 사용할 수 있습니다.

image66

그림 3.1.8.5-1 Http 시뮬레이터 UI

시뮬레이터 UI는 레거시 API 다이얼로그 좌측 하단의 image67 버튼을 클릭하여 펼치거나 다시 클릭하여 접을 수 있습니다. 레거시 API 다이얼로그에 해당 인터페이스의 부가 정보와 레거시 인터페이스로 전달할 파라메터 목록, 파싱 결과를 맵핑할 응답 파라메터를 입력하였으면 시뮬레이터 UI 우측 상단의 image68 실행 버튼을 눌러 연동 시뮬레이팅을 실행할 수 있습니다. 시뮬레이팅 UI 구성은 http, database, eai 프로토콜 별로 특성에 맞게 다르게 구성되어 있습니다.

Http 방식의 시뮬레이팅은 Http 프로토콜로 인터페이스를 제공하는 레거시 서버에 대하여 연동을 수행합니다. 레거시 인터페이스의 응답이 html, json, xml, soap 등의 plain text 기반 포맷일 때 이용할 수 있습니다.

image69

그림 3.1.8.5-2 Http 시뮬레이터 UI 구성

시뮬레이팅을 실행하면 MSP 플랫폼에 내장된 파서가 레거시 인터페이스의 응답 스트링을 파싱하여 XML DOM 트리 형태로 좌측 영역에 보여줍니다. 내장 파서는 html, json, xml, soap 네 가지 포맷을 지원합니다. 레거시 응답이 html 포맷일 경우 태그 오류를 보정 처리하여 xml로 변환하는 과정이 내부적으로 일어나며, json 포맷일 경우에는 json을 xml로 포맷 변환하여 트리로 구성합니다. 좌측 응답 DOM 트리에서 필요한 데이터를 선택하여 우측 영역으로 드래그 앤 드랍하여 추출 과정을 진행합니다. 추출 결과는 UI 우측 영역에 트리 형태로 보여지며, 추출된 데이터는 Name과 같은 이름의 변수로 맵핑되어 컨트롤러 메소드 생성 시 코드 내에 생성됩니다.

image70

그림 3.1.8.5-3 Response Text 탭

시뮬레이터 UI 좌측 영역의 Response 탭은 레거시 인터페이스의 응답을 보여줍니다. Text 탭은 Plain Text 형태의 레거시 응답 전문을 보여줍니다. 응답 전문은 수정이 가능하며, 레거시 인터페이스에 실제 연결이 되지 않을 시에 이 영역에 레거시 연동 규격으로부터 복사해 온 응답 전문 규격을 붙여넣기 하여 시뮬레이팅을 수행할 수도 있습니다.

image71

그림 3.1.8.5-4 Response Tree 탭

Response 영역의 Tree 탭은 레거시 응답 텍스트를 XML DOM Tree 형태로 파싱하여 보여줍니다. UI 우측 상단의 expand all image72 버튼을 눌러 트리를 펼치거나 collapse all image73 버튼을 눌러 트리를 접을 수 있습니다. UI 하단의 검색 버튼은 트리 상의 검색어에 매칭되는 부분을 찾아 포커싱하는 기능을 수행합니다.

image74

그림 3.1.8.5-5 검색 다이얼로그

XML Element 명, XML Attribute명, Text 노드명에 매칭되는 것을 검색할 수 있으며, 매칭 결과는 노란 색으로 포커싱되어 Tree 탭에 나타납니다. 검색 기능은 전체 트리 노드 중 추출할 데이터가 있는 노드를 찾고자 할 때에 사용합니다. 검색된 노드는 마우스로 선택 후 UI 우측 Extract 영역으로 드래그 앤 드랍하여 추출할 수 있습니다.

image75

그림 3.1.8.5-6 Response Extract 탭

추출된 결과는 노드 Name, Xpath, Value 값을 보여주는 트리 형태로 나타납니다. Name 속성은 추출된 XML 노드의 이름을 나타내며, 엘레멘트명이나 어트리뷰트명이 올 수 있습니다. XPath 속성은 추출된 XML 노드의 위치 정보를 나타냅니다. 최상위 엘레멘트로부터 해당 위치에 이르는 경로를 엘레멘트 명과 인덱스의 조합으로 나타냅니다. XPath는 XSL(Extensible Stylesheet Language)에서 사용되는 XML 트리 검색 표준 문법입니다. XPath에 대한 간단한 소개와 튜토리얼은 다음 사이트에서 확인할 수 있습니다.

*http://www.w3schools.com/xsl/*

Value 속성은 추출된 XML 노드의 값을 의미합니다. 이 값은 엘레멘트의 Text나 어트리뷰트의 값이 올 수 있습니다. UI 우측 상단의 expand all image76 버튼을 눌러 트리를 펼치거나 collapse all image77 버튼을 눌러 트리를 접을 수 있습니다. UI 우측 하단의 ‘모두 지우기’ 버튼을 눌러 추출 결과를 삭제할 수 있으며, ‘적용하기’ 버튼을 눌러 추출 결과를 ‘Extract Data’ 영역에 반영할 수 있습니다. 데이터를 추출한 후 ‘적용하기’ 버튼을 눌러 적용하지 않으면 추출 규칙은 저장되지 않습니다.

image78

그림 3.1.8.5-7 Response Extract 컨텍스트 메뉴

Extract 트리에 추출된 노드에 마우스 선택 후 오른 클릭하여 ‘수정하기’를 선택하여 추출된 노드의 이름(alias)을 수정할 수 있습니다. 추출된 노드명은 코드 상에 생성될 때 변수명으로 나타나게 되므로 중복 변수명이 생기지 않도록 알맞은 이름으로 변경하거나 문맥 상 적절한 이름으로 변경해 주는 것이 좋습니다. 마우스 오른 클릭 후 ‘삭제하기’를 선택하여 추출된 노드를 삭제할 수 있습니다. 삭제 동작은 키보드 Delete 버튼을 눌러도 동일하게 동작합니다.

데이터 추출 시 리스트 형태의 반복되는 데이터를 추출하거나 한번만 반복되는 아이템 형태의 데이터를 추출하는 타입을 지정할 수 있습니다. 또한, 해당 엘레멘트 하위의 inner XML을 추출할 수 있습니다.

image79

그림 3.1.8.5-8 Extract 타입 선택 다이얼로그

Html 구조 상 반복이 가능한 태그에 맵핑되는 XML 엘레멘트를 추출할 경우에는 Type 다이얼로그가 나타나게 됩니다. Table 태그 하위 tr 엘레멘트를 예로 들어보면, 리스트로 사용할 경우에는 반복되는 수만큼 추출이 되지만, 아이템으로 사용할 경우에는 해당 tr 아이템의 인덱스를 기준으로 저장하게 됩니다.

image80

그림 3.1.8.5-9 Extract 타입 리스트와 아이템

Tr 노드를 리스트image81로 추출하고 그 하위에 위치한 text 노드를 다시 추출된 tr 노드 하위로 추출하면 tr이 반복되는 수만큼 그 하위의 text 노드를 반복하여 추출하게 됩니다. Tr 노드를 아이템image82으로 추출하면 반복되는 tr 중 자신의 인덱스를 포함한 정보가 추출되게 되며, 추출된 아이템 형태의 tr 노드 하위로 text 노드를 추출하게 되면 하나의 text 노드만 추출됩니다. 리스트, 아이템 하위에는 다시 리스트나 아이템, 텍스트, 어트리뷰트가 위치할 수 있습니다.

image83

그림 3.1.8.5-10 Extract 중첩 추출(1)

Tr 하위에 네 개의 td를 가지고 있는 트리 구조에서 두 번째 td 하위에만 a 태그가 존재합니다. Td 하위의 width 어트리뷰트와 두번째 td 하위의 a/Text() 를 추출한 결과는 다음과 같습니다.

image84

그림 3.1.8.5-11 Extract 중첩 추출(2)

우선, tr을 아이템 타입으로 추출하고 그 하위에 td를 리스트 타입으로 추출합니다. 그리고 두번째 td 하위의 text 노드를 td 하위에 추출하고, td 하위의 width 어트리뷰트를 td 하위로 추출합니다. Td가 리스트 타입이므로 그 하위에 위치한 width는 td의 개수만큼 네 번 반복되지만, text는 두번째 td 하위에만 존재하는 값이므로 한번만 나타나게 됩니다. Tree 노드의 종류와 특성은 다음과 같습니다.

Tree

설명

Extract Data

설 명

Element image85

XML 엘레멘트, Html 태그에 해당합니다.

List image86

반복되는 리스트 구조를 의미합니다.

List-Item image87

반복되지 않고 자신의 인덱스를 가지는 아이템 구조를 의미합니다.

innerXMLimage88

특정 엘레멘트 하위의 XML 구조를 텍스트 형태로 가집니다. 말단 노드입니다.

Attribute image89

어트리뷰트에 해당합니다.

Item image90

Text, 어트리뷰트 Value 등 더 이상 나누어지지 않는 말단 노드를 의미합니다. 텍스트 데이터를 포함하고 있는 추출 대상에 해당합니다.

Text image91

엘레멘트 하위 Text 노드에 해당합니다.

Element 노드는 Attribute나 Text를 포함할 수 있으며, 데이터 추출 시 List나 List-Item 형태의 구조체로 추출됩니다. List나 List-Item 하위에는 다시 List, List-Item 등이 위치하여 중첩 구조를 가질 수 있으며, Attribute나 Text 노드를 자식으로 가질 수 있습니다. Attribute 노드와 Text 노드는 Item 형태로 추출되며, 여기에는 실제로 추출되는 데이터 스트링이 포함됩니다. Item 하위에는 다른 추출 데이터가 위치할 수 없습니다.

image92

그림 3.1.8.5-12 추출 결과 적용

데이터 추출 과정을 마친 후, ‘적용하기’ 버튼을 누르면 Legacy Http API 다이얼로그 하단의 Extract Data 탭 영역에 추출 규칙이 보여지게 됩니다. 마지막으로 ‘OK’ 버튼을 누르면 현재 Legacy Http API에 대한 레거시 응답 추출 규칙이 저장됩니다.

Legacy Http API에서 지원하는 html, json, xml, soap 타입 중 html 타입은 레거시 인터페이스의 응답이 html 방식일 경우에 사용됩니다. 레거시 응답이 html 이라는 것은, 별도의 레거시 인터페이스를 구현하지 않고 기존에 사용하던 레거시의 View 페이지를 그대로 사용하는 경우가 될 수도 있습니다. 이 경우, 레거시의 html 스트링 응답을 파싱하여 보정처리 한 후 XML 트리로 재구성하여 보여줍니다.

image93

그림 3.1.8.5-13 html Response Tree

image94

그림 3.1.8.5-14 html Response Text

위 그림은 html 형태의 레거시 인터페이스를 연동하였을 때의 Tree 탭과 Text 탭의 내용을 보여줍니다.

Json 타입은 레거시 인터페이스의 응답이 json 포맷으로 되어 있을 경우 사용됩니다. Json 포맷의 인터페이스가 제공되어지거나, 기존 레거시 시스템에서 사용되던 json포맷의 AJAX 인터페이스를 재사용하는 경우가 해당될 수 있습니다.

image95

그림 3.1.8.5-15 json Response Tree

image96

그림 3.1.8.5-16 json Response Text

Json 스트링을 XML로 포맷변환하는 과정 중 다음과 같은 변경이 일어날 수 있습니다.

  • Json 포맷의 키는 XML 엘레멘트로 변환되며, 값은 XML 엘레멘트 하위 텍스트로 변환됩니다.

  • Json 오브젝트는 {} XML‘json_object’ 엘레멘트로 변환됩니다.

  • Json 배열은 [] XML ‘json_array’ 엘레멘트로 변환됩니다.

  • 스트링 배열 형태의 json 데이터는 반복되는 json_primitive 엘레멘트 구조로 표현됩니다. 예를 들어, “title”:[“1”,”2”] 형태는

    <title><json_array><json_primitive>1</json_primitive><json_primitive>2</json_primitive></json_array></title> 로 변환됩니다.

Xml 타입은 레거시 서버의 인터페이스 응답 포맷이 XML일 때 사용합니다.

image97

그림 3.1.8.5-17 xml Response Tree

image98

그림 3.1.8.5-18 xml Response Text

XML 스트링 파싱 시 XML 문서에 허용되지 않는 문자는 제거됩니다. 그리고 엘레멘트 간 줄바꿈 기호는 제거됩니다.

*참고*

원본 응답 XML에서 추출 규칙 적용을 위한 XPath 구성 시 엘레멘트 명을 기준으로 XPath 스트링을 생성하기 위해 XML 상의 네임스페이스 관련 요소는 제거됩니다.

SOAP 타입은 XML POST 기반의 웹 서비스로 레거시 인터페이스가 제공되어질 때 사용할 수 있습니다.

*참고*

현재 WSDL 파싱 기능과 AD/NTLM 인증 기능은 지원하지 않습니다. 따라서, 인증을 사용하지 않는 간단한 SOAP 연동에 사용 가능하며, 프로토콜 규격상, API 다이얼로그 상에 Content-Type : text/xml; charset=utf-8 헤더를 설정하고 웹서비스 리퀘스트를 보내야 올바른 응답을 받을 수 있습니다.

image99

그림 3.1.8.5-19 soap 리퀘스트 전문 설정

레거시로 보내는 SOAP 리퀘스트 전문은 API 다이얼로그의 Entity 탭에 설정합니다. POST XML 스트링 데이터는 치환문자를 이용하여 Request Parameter 탭에서 입력한 파라메터 값을 맵핑시킬 수 있습니다.

치환문자

설명

#{paramName}

매칭되는 Request Parameter 값으로 바꾸고 escape 처리합니다.

${paramName}

매칭되는 Request Parameter 값으로 바꿉니다.

image100

그림 3.1.8.5-20 soap Response Tree

image101

그림 3.1.8.5-21 soap Response Text

SOAP 응답 XML 보정 처리는 유효하지 않은 문자 삭제, 엘레멘트 간 줄바꿈 기호 삭제 등이 적용됩니다.

Database API

Legacy Database API는 Database 서버 형태의 레거시 서버에서 제공하는 인터페이스를 의미합니다. Database 형태의 레거시에 대하여 간단한 쿼리 조회 및 SQL 연동을 할 경우 사용할 수 있습니다.

image102

그림 3.1.8.6-1 Legacy Database API

image103

그림 3.1.8.6-2 Legacy Database API 생성 다이얼로그

Legacy Database API 생성 다이얼로그는 SELECT 쿼리를 수행하기 위한 구성으로 되어 있습니다. Legacy Database Server 생성 시 입력했던 접속 정보를 바탕으로 해당 Database의 스키마 정보와 SQL 에디터를 포함하고 있습니다. 다이얼로그 UI 좌측의 테이블 스키마 영역은 마우스 드래그 앤 드랍 액션을 지원합니다. Select 하고자 하는 테이블이나 컬럼을 선택 후 UI 우측 에디터 영역으로 드래그 앤 드랍하여 Select 쿼리를 자동 생성할 수 있습니다. 다이얼로그의 구성요소에 대한 설명은 다음과 같습니다.

속 성

설 명

API Name

레거시 API에 대한 alias 를 지정합니다. SQL Map 네임스페이스 네이밍 규칙으로 인해 .과 _ 기호 사용은 지양합니다.

Legacy Group

해당 레거시 API가 포함된 레거시 서버 하위에 속할 그룹명을 입력합니다. SQL Map 네임스페이스 네이밍 규칙으로 인해 .과 _ 기호 사용은 지양합니다.

SQL

SELECT, UPDATE, DELETE, INSERT SQL 구문을 입력합니다.

Parameter

DB 파라메터를 입력합니다. myBatis 문법을 따라 #{}, ${} 형태의 스트링을 입력한 파라메터 값으로 바꿉니다.

Description

레거시 API에 대한 설명을 입력합니다.

image104

그림 3.1.8.6-3 Legacy Database API

Parameter 탭에는 SQL 탭의 SQL 에디터에서 작성한 쿼리의 조건절 등에 맵핑할 DB 파라메터를 입력할 수 있습니다. ‘추가하기’, ‘삭제하기’, ‘수정하기’ 버튼으로 편집이 가능하며, 키보드 Delete 키로 삭제를 수행할 수 있습니다. 파라메터 항목을 마우스 더블 클릭하면 파라메터 다이얼로그를 띄워 편집이 가능합니다. 쿼리문의 #{}, ${} 로 표시된 myBatis 형식의 파라메터 절을 replace 하는 식으로 동작합니다. 예를 들어, resultCode라는 Name으로 Value를 400으로 파라메터 입력했다면, 시뮬레이팅 시 쿼리문의 where RESULTCODE=#{resultCode}라는 절을 찾아 #{resultCode} 스트링 영역만 ‘400’으로 파라메터 맵핑시킵니다. Description 란에는 파라메터에 대한 설명을 입력합니다.

Description 탭에는 해당 API에 대한 설명을 입력할 수 있습니다.

Legacy Database API 다이얼로그에서 입력된 정보는 서버 프로젝트 내에 myBatis sqlMap 형태로 생성됩니다.

Database Simulator

레거시 데이터베이스 서버에 대하여 연동을 할 경우 Database 시뮬레이터를 사용합니다.

*참고*

JNDI 타입의 DB 연동방식에 대해서는 실행되는 VM이 다르므로 시뮬레이팅 기능을 지원하지 않습니다.

시뮬레이터 UI는 레거시 API 다이얼로그 좌측 하단의 image105 버튼을 클릭하여 펼치거나 다시 클릭하여 접을 수 있습니다. 그리고 시뮬레이터 UI 우측 상단의 image106 실행 버튼을 눌러 연동 시뮬레이팅을 실행할 수 있습니다.

image107

그림 3.1.8.7-1 Database Simulator UI

테이블 스키마 영역에서 테이블이나 컬럼을 선택 후 에디터 영역으로 드래그 앤 드랍하여 Select 쿼리를 생성하고, myBatis 문법에 따라 조건절에 파라메터를 맵핑시킵니다. #{param} 과 ${param} 두 가지 형태에 대하여 Parameter 탭에 입력한 파라메터명과 같은 것을 replace 시켜 쿼리를 실행합니다.

image108

그림 3.1.8.7-2 SQL 에디터 쿼리 생성

*참고*

Select 쿼리 생성 시 SELECT * FROM TABLE 형식보다 SELECT COL1, COL2, COL3 FROM TABLE 형식으로 조회하고자 하는 컬럼명을 명시해주는 것을 권장합니다. 쿼리에 나타나는 컬럼명은 소스 코드 생성 및 클라이언트 파라메터 맵핑 시 변수명으로 참조될 수 있기 때문입니다. * 로 전체 컬럼을 조회하는 쿼리를 사용했을 경우에는 소스 코드 생성 시 단말 응답 파라메터를 선택하지 못하고 DB Select 한 전체 결과를 그대로 단말 응답 파라메터로 내려주게 됩니다.

image109

그림 3.1.8.7-3 Database 시뮬레이팅 Result

Database 시뮬레이팅을 실행하면, 시뮬레이터 UI에 조회 쿼리를 실행하여 Select 한 결과가 테이블 구조로 보여지게 됩니다. API 다이얼로그에서 ‘OK’버튼을 누르면 프로젝트 내의 myBatis SqlMap 파일에 작성한 쿼리문이 저장됩니다.

image110

그림 3.1.8.7-4 Delete Result

Delete, Update, Insert 구문을 실행하면 Result 탭에 적용된 row 수가 나타납니다. 간단한 Delete, Update, Insert 구문을 만들고 myBatis 데이터 소스, sql Map 설정 파일을 생성하는 기능을 지원합니다.

EAI API

Legacy EAI API는 소켓 통신 기반의 EAI 인터페이스를 연동할 경우에 사용할 수 있습니다.

image111

그림 3.1.8.8-1 Legacy EAI API

image112

그림 3.1.8.8-2 Legacy EAI API 생성 다이얼로그

Legacy EAI API는 EAI 클라이언트를 이용한 레거시 연동 시 전송되는 파라메터, 응답 파라메터, Wrapper 클래스의 메소드 호출 순서, 레거시 응답 파싱 규칙 등을 설정합니다. Legacy EAI API 노드 생성 시 열리는 생성 다이얼로그의 구성 요소는 다음과 같습니다.

속 성

설 명

API Name

레거시 API에 대한 alias 를 지정합니다.

Legacy Group

해당 레거시 API가 포함된 레거시 서버 하위에 속할 그룹명을 입력합니다.

Start Index

EAI 서버의 타입이 index 기반 파싱일 때 나타납니다. 레거시 응답 스트링에서 파싱을 수행한 시작 인덱스를 지정합니다. 디폴트 0.

Split by

EAI 서버의 타입이 구분자 기반 split 파싱 방식일 때 나타납니다. 레거시 응답 스트링에서 구분자로 사용할 기호를 입력합니다.

Request Parameter

EAI 서버 설정 시 지정한 Wrapper 클래스의 request 메소드 호출 시 전달할 파라메터를 입력합니다.

Response Parameter

EAI 서버 설정 시 지정한 Wrapper 클래스의 response 메소드의 응답으로 리턴되는 스트링에 대하여 파싱을 적용하여 맵핑할 파라메터 목록을 입력합니다.

Method Sequence

Wrapper 클래스의 메소드 실행 순서를 지정합니다. 기본은 Configure() > request() > response() 순서로 호출하게 되며, Wrapper 클래스에 메소드를 추가 정의하고 순서에 끼워넣거나 변경이 가능합니다.

Description

레거시 API에 대한 설명을 입력합니다.

image113

그림 3.1.8.8-3 EAI API 파라메터 생성 다이얼로그

Request Parameter 탭에는 EAI 인터페이스로 전달할 요청 파라메터를 입력할 수 있습니다. ‘추가하기’, ‘삭제하기’, ‘수정하기’동작을 지원하며, UI 테이블 상에서 해당 항목을 더블 클릭하면 편집 다이얼로그를 띄울 수 있습니다. 또한, 키보드 Delete키로 삭제하기 동작을 수행할 수 있습니다. ‘복사하기’ 버튼을 눌러 선택한 파라메터 row 정보를 클립보드에 복사할 수 있으며, 같은 기능은 Ctrl + C 단축키로 실행할 수 있습니다. ‘위로’, ‘아래로’ 버튼으로 입력된 파라메터의 순서를 변경할 수 있습니다.

입력 속성에 대한 설명은 다음과 같습니다.

속 성

설 명

Name

파라메터 이름을 지정합니다.

Type

코드 생성 시 사용될 파라메터의 변수 타입을 지정합니다. 디폴트 String

Value

파라메터 값을 입력합니다.

Length

파라메터 값의 길이를 입력합니다. Index 기반 파싱 방식일 경우 이 값을 필수로 입력해야 합니다.

Default Value

Value 값이 없을 때 디폴트 값으로 사용됩니다. 코드 생성 시 단말에서 전달된 파라메터와 맵핑시켰을 때 널 값이 전달될 경우 이 값으로 대체되도록 사용될 수 있습니다.

Description

파라메터에 대한 설명을 입력합니다.

Loop count

현재 파라메터의 반복 횟수를 입력합니다. 다른 파라메터의 값을 참조할 경우 ‘&paramName’ 형식으로 입력할 수 있습니다.

image114

그림 3.1.8.8-4 EAI 엑셀 임포트 파라메터 다이얼로그

‘가져오기’ 버튼을 클릭하면 Import Legacy Parameter 다이얼로그가 뜹니다. 해당 다이얼로그에서 레거시로부터 전달받은 엑셀 포맷의 규격을 임포트하여 파라메터로 추가하거나 EAI Server 등록 시 입력한 공통 파라메터를 가져와 파라메터로 세팅할 수 있습니다. Import Legacy Parameter 다이얼로그의 상단 Import Option 항목에서 Excel 라디오 버튼을 선택하면 엑셀 파일을 가져올 수 있는 UI가 나타납니다.‘Browse’ 버튼을 눌러 엑셀 파일을 찾아 선택할 수 있으며, File Location에 나타나는 파일 목록은 history로 저장되어 관리되므로 나중에 다시 다이얼로그를 열었을 때 열었던 목록을 선택할 수 있습니다. 다이얼로그 중간의 테이블 영역에는 파라메터로 임포트할 목록이 선택할 수 있게 나열됩니다.

*참고*

임포트할 엑셀 파일은 Name, Type, Value, Length, Default Value, Description 순으로 컬럼을 가지는 테이블 형식으로 되어 있어야 합니다. 이 규격에 맞지 않는 속성값은 무시되어 파라메터로 맵핑되지 않습니다.

image115

그림 3.1.8.8-5 EAI 임포트 공통 파라메터 다이얼로그

Import Legacy Parameter 다이얼로그에서 Import Option 절의 Common Parameter 라디오 버튼을 선택하면 EAI 서버를 등록할 때 입력하였던 공통 파라메터를 임포트할 수 있는 UI가 나타납니다. 공통 파라메터는 로직 상 자주 사용되는 파라메터 목록, 구조체를 등록하여 각기 다른 EAI API에서 가져와 사용할 수 있는 기능입니다. UI 하단의 Loop count 체크 박스를 선택하고 이보다 앞서 존재하는 파라메터의 이름을 ‘&paramName’ 형식으로 참조하여 해당 파라메터의 value 값만큼 반복하거나 반복 횟수를 숫자로 입력할 수 있습니다.

image116

그림 3.1.8.8-6 EAI 공통 파라메터

임포트된 공통 파라메터는 Request, Response Parameter 탭의 테이블 영역에 트리 형태로 표시됩니다. 공통 파라메터 자체는 EAI API 다이얼로그에서 수정을 할 수 없으며, 수정이 필요하면 상위의 EAI Server 다이얼로그에서 수정할 수 있습니다.

EAI API 다이얼로그의 Response Parameter 탭에는 레거시 응답 스트링을 파싱하여 맵핑할 파라메터를 입력할 수 있습니다. UI 구성은 Request Parameter 탭과 동일합니다.

*참고*

Loop count 속성값은 Request 파라메터에 적용될 경우 Wrapper 클래스가 실행될 때 런타임에 파라메터로 넘어온 값을 반복하여 세팅해주는 역할을 합니다. Response 파라메터에 적용될 경우 시뮬레이팅 후 파싱 규칙에 반영되며, 런타임에서는 Wrapper 클래스의 parse 응답에 반복된 구조만큼 세팅하여 리턴해주는 역할을 합니다.

image117

그림 3.1.8.8-7 EAI 메소드 시퀀스 다이얼로그

Method Sequence 탭에는 Wrapper 클래스를 reflection 방식으로 메소드 호출할 때, 호출되는 메소드의 순서를 보여줍니다. ‘추가하기’ 버튼을 눌러 사용자가 Wrapper 클래스에 새로 추가한 메소드를 configure, response 메소드 사이에 추가할 수 있습니다. 추가할 수 있는 메소드는 실제 연동을 수행하는 기능을 구현하고 있으며, Object 타입의 paramMap을 인자로 받는 메소드만 가능합니다. ‘삭제하기’ 버튼을 클릭하거나 키보드 delete 키로 메소드 항목들을 삭제할 수 있으며, response 메소드를 제외한 항목들은 삭제가 가능합니다. 메소드를 선택하고 ‘위로’, ‘아래로’ 버튼을 클릭하여 실행되는 순서를 변경 가능한데, configure, response 메소드는 순서를 변경할 수 없습니다.

Description 탭에는 해당 API에 대한 설명을 입력할 수 있습니다.

Legacy EAI API 다이얼로그에서 입력된 정보는 개발자가 작성하여 EAI Server 설정 시 지정한 Wrapper 클래스에 대하여 적용됩니다.

EAI Simulator

TCP/IP 소켓 방식의 레거시 EAI 인터페이스를 연동할 경우 EAI 시뮬레이터를 사용할 수 있습니다. EAI 시뮬레이팅은 EAI 인터페이스를 이용하기 위한 3rd 파티 라이브러리에서 제공되는 api를 이용하여 구현된 Wrapper 클래스를 자바 reflection 방식으로 호출하는 형태로 실행됩니다. 예를 들어, EAI 연동을 하기 위해 eai.jar라는 라이브러리가 필요하다면, 해당 라이브러리를 EAI 서버 등록 시 참조 라이브러리로 임포트하고, 해당 라이브러리에서 제공되는 api를 이용하여 연동 로직을 구현하되, 플랫폼에서 제공하는 인터페이스를 상속받아 해야 합니다. 그러면 시뮬레이터에서 인터페이스에 기 정의된 메소드를 호출하여 연동 로직을 호출하게 됩니다.

시뮬레이팅 및 실 서비스 적용 시 플랫폼에서 Wrapper 클래스의 메소드를 호출하는 순서는 configure > request > response 순 입니다. 실행 순서는 EAI API 다이얼로그에서 메소드 실행 순서를 조정하여 사용자가 추가한 메소드를 configure와 response 메소드 사이에 넣을 수 있습니다.

시뮬레이터 UI는 레거시 API 다이얼로그 좌측 하단의 image118 버튼을 클릭하여 펼치거나 다시 클릭하여 접을 수 있습니다. 그리고 시뮬레이터 UI 우측 상단의 image119 실행 버튼을 눌러 연동 시뮬레이팅을 실행할 수 있습니다.

image120

그림 3.1.8.9-1 EAI 시뮬레이터 UI

시뮬레이팅을 실행하면 사용자가 정의한 Response Parameter에 레거시 인터페이스 응답 스트링을 파싱하여 맵핑하는 과정이 진행되고, 맵핑 규칙이 저장됩니다. 파싱 맵핑 방식은 Index, Split 두 가지 방식을 지원합니다. Index, Split 타입은 EAI Server 설정 시 EAI Server 다이얼로그에서 선택할 수 있습니다. Index 기반 방식은 레거시 응답 스트링을 EAI API 다이얼로그에서 지정한 Start Index 부터 시작하여 Response Parameter에 파라메터의 길이만큼 잘라내어 맵핑시킵니다. Split 기반 방식은 레거시 응답 스트링을 EAI API 다이얼로그 Split by 항목에 지정한 구분자로 나누어 Response Parameter에 순서대로 맵핑시킵니다. Response 파라메터에 맵핑되지 않은 나머지 영역은 EAI 시뮬레이터 UI의 Mapping Result 탭에 빨간색으로 포커싱되어 보여지게 됩니다. 응답 스트링의 길이에 비하여 맵핑할 응답 파라메터가 적거나 많을 경우가 이에 해당합니다.

*참고*

인덱스 기반으로 연동할 경우에는 파라메터 입력 시 length 속성을 반드시 입력해야 합니다.

EAI 시뮬레이터 UI의 Result String 탭에는 레거시 응답 스트링을 표시합니다. 이 영역은 수정이 가능하므로 실제 레거시 연동을 할 수 없을 경우 레거시 응답 규격에서 가져온 샘플 스트링 데이터를 이용하여 시뮬레이팅이 가능합니다.

image121

그림 3.1.8.9-2 응답 맵핑 결과 적용

UI 우측 하단의 ‘모두 지우기’ 버튼을 누르면 연동 결과를 초기화할 수 있으며, ‘적용하기’ 버튼을 눌러 Response Parameter 탭의 입력된 응답 파라메터에 맵핑 결과를 적용할 수 있습니다. EAI API 다이얼로그에서 ‘OK’ 버튼을 눌러 시뮬레이팅 및 맵핑 과정을 끝낼 수 있습니다.

*참고*

EAI 시뮬레이팅 시는 Response Parameter 탭에 정의된 파라메터 정보 자체가 응답 맵핑 규칙이므로 시뮬레이팅 후 ‘적용하기’ 버튼을 누르지 않아도 됩니다. ‘적용하기’ 버튼을 누르면 시뮬레이팅 결과 파라메터를 Response Parameter 탭에 덮어쓰게 되므로 가변길이 파라메터의 경우 반복 개수(loop count)가 0이 되어 응답 맵핑이 되지 않으면 없어질 수도 있으니 주의가 필요합니다.

컨트롤러 클래스

Dashboard 상의 컨트롤러 클래스 노드는 게이트웨이 서버에서 제공되어지는 인터페이스를 구현한 클래스를 의미합니다. 일반적으로 단말에서 호출되어지는 API가 클래스 내부에 포함되게 됩니다.

image122

그림 3.1.8.10-1 컨트롤러 아이콘

Diagram 우측 팔레트에서 Controller Class 항목을 선택하여 캔버스에 드랍하거나 캔버스 빈 영역에서 마우스 오른 클릭 후 New > Controller Class를 선택하여 추가할 수 있습니다. Diagram 상에 컨트롤러를 추가하면 클래스 생성 다이얼로그가 뜹니다.

image123

그림 3.1.8.10-2 컨트롤러 생성 다이얼로그

컨트롤러 생성 다이얼로그는 일반적인 자바 클래스 생성 다이얼로그와 동일한 구성을 가집니다. 입력 항목에 대한 설명은 다음과 같습니다.

  • Source folder : 클래스 자바 파일을 위치시킬 기준 소스 폴더를 지정합니다.

  • Package : 클래스 파일의 패키지명을 입력합니다.

  • Name : 클래스 명을 입력합니다.

  • Superclass : extends 할 클래스를 입력합니다.

  • Interfaces : implements 할 인터페이스들을 입력합니다.

‘Finish’ 버튼을 누르면 다이어그램 상에 컨트롤러 클래스 노드가 생성됨과 더불어, 지정한 패키지 경로로 컨트롤러 클래스 파일이 생성되고 에디터 영역에 해당 클래스 파일이 열리게 됩니다.

image124

그림 3.1.8.10-3 컨트롤러 클래스 소스

다이어그램을 통하여 생성한 컨트롤러 클래스는 위 그림과 같이 스프링 @Controller 어노테이션을 적용한 상태로 만들어집니다. 또한 프로젝트 내에 생성한 클래스 자바 파일과 연결이 되어 있으므로 다이어그램 상에서 컨트롤러 노드를 삭제하면 실제 자바 클래스 파일도 삭제되고, 자바 클래스 파일을 삭제하면 다이어그램 상의 컨트롤러 노드도 삭제됩니다. 컨트롤러 노드와 실제 클래스 파일 간의 동기화 관련 동작을 정리하면 다음과 같습니다.

동작

다이어그램

소스 파일

다이어그램에서 클래스 추가

노드 생성

클래스 생성

소스 폴더에서 클래스 추가

반영되지 않음.

클래스 생성

다이어그램에서 클래스 삭제

노드 삭제

클래스 자바 파일 삭제

소스 폴더에서 클래스 삭제

노드 삭제

클래스 자바 파일 삭제

다이어그램에서 클래스 내 메소드 추가

클래스 내 메소드 노드 추가

클래스 내 메소드 코드 생성

클래스 소스에서 메소드 추가

반영되지 않음.(동기화 실행 후 반영)

메소드 코드 추가

다이어그램에서 클래스 내 메소드 삭제

메소드 노드 삭제

메소드 코드 삭제

클래스 소스에서 메소드 삭제

메소드 노드 삭제 (다이어그램과 동기화 되어 있을 경우)

메소드 코드 삭제

다이어그램에서 클래스 수정(클래스명 수정)

지원하지 않음.

클래스 소스에서 클래스 수정

클래스명 수정 시 삭제로 인식.

클래스명을 유지한채 수정은 동기화 유지됨.

클래스 수정.

다이어그램에서 클래스 내 메소드 수정

메소드 수정됨.

반영됨.

클래스 소스에서 메소드 수정

메소드명 수정 시 삭제로 인식.

반영되지 않음.(동기화 실행 후 반영)

메소드 수정.

다이어그램을 통하여 생성된 컨트롤러 클래스와 메소드는 이름을 유지하는 한 소스 파일과 동기화 관계를 유지하고 있습니다. 다이어그램을 이용하다가 직접 소스 파일에 코딩 작업을 하는 등 두 가지 방법을 혼합해서 사용하는 경우, 동기화 특성을 숙지하여 클래스명이나 메소드 명을 코드 상에서 수정하지 않도록 주의해야 합니다.

image125

그림 3.1.8.10-4 Import 컨트롤러 클래스 컨텍스트 메뉴

기 작성된 컨트롤러 클래스를 대쉬보드로 임포트할 경우, 대쉬보드 상에서 마우스 오른 클릭 > Import > Controller Class 를 선택하여 Import Contoller Class 다이얼로그를 실행할 수 있습니다.

image126

그림 3.1.8.10-5 Import 컨트롤러 클래스 다이얼로그

열려진 다이얼로그의 입력란에 임포트할 컨트롤러 클래스의 전체 패키지 및 클래스 명을 입력하거나, ‘Browse’버튼을 누른 후 클래스를 검색할 수 있습니다. 추가된 컨트롤러 클래스는 대쉬보드에 클래스 노드로 보여지고, 이후 대쉬보드를 통하여 레거시 연동 코드를 삽입할 수 있게 됩니다. 이 기능은 대쉬보드를 통하여 생성한 컨트롤러 클래스를 소스 상에서 복사하여 재사용하는 경우에 활용할 수 있습니다.

*참고*

임포트되는 컨트롤러 클래스는 대쉬보드에서 인식가능한 로직을 분석하여 반영합니다. 파라메터 맵핑, 대쉬보드 상에 존재하는 레거시 서버에 대한 연동 로직 등이 분석되며, 그 이외의 커스터마이징한 코드는 인식할 수 없습니다. 그러므로 대쉬보드를 통하여 생성한 클래스를 복사하여 재사용할 경우에 사용하기를 권장합니다.

컨트롤러 클래스 노드를 더블 클릭하거나 노드 선택 후 마우스 오른 클릭 > Edit 메뉴 항목을 선택하여 실제 소스를 에디터에 열 수 있습니다. 또한, 노드 선택 후 마우스 오른 클릭 > Delete 메뉴를 선택하거나 키보드 Delete 버튼으로 지울 수 있습니다.

image127

그림 3.1.8.10-6 컨트롤러 클래스 삭제 확인 창

*참고*

삭제는 다이어그램 상의 노드 뿐만 아니라 실제 클래스 자바 파일도 같이 지워지므로 파일을 삭제할지 여부를 묻는 체크 박스를 확인 후 실행하기를 권장합니다.

생성되는 컨트롤러 클래스의 패키지 경로는 자유롭게 설정할 수 있지만, 스프링에서 인식되는 경로는 kr.msp 하위, com.example 하위 두 가지가 설정되어 있습니다. 이 설정값은 msp-gw-context.xml 의 컴포넌트 스캔절에 정의되어 있는데, 대쉬보드에서 이 패키지 경로를 벗어난 곳에 컨트롤러 클래스를 생성한다면 스프링에서 해당 빈을 인식하지 못합니다. 그러므로 패키지를 추가할 경우에는 이 설정값에 추가된 경로를 설정해야 합니다.

image128

그림 3.1.8.10-7 컨텍스트 컴포넌트 스캔 설정

메소드

Dashboard 상의 메소드 노드는 단말로 노출되는 인터페이스와 동일한 개념입니다.

image129

그림 3.1.8.11-1 메소드 아이콘

메소드 노드는 컨트롤러 클래스 하위에 위치하게 됩니다. 메소드 추가 시 Diagram 우측 팔레트에서 Method 항목을 선택하여 컨트롤러 노드에 드랍하거나 컨트롤러 노드 선택 후 마우스 오른 클릭 New > Add Method를 선택하여 추가할 수 있습니다.

image130

그림 3.1.8.11-2 메소드 생성 다이얼로그 – 기능 선택

메소드 노드를 추가하면 메소드 생성 다이얼로그가 뜹니다. Method Name 란에 생성할 메소드명을 입력할 수 있습니다. 이 값은 메소드 코드 생성 시 @RequestMapping 어노테이션의 url 경로명으로도 맵핑됩니다. Http Method 셀렉트 박스를 통하여 ALL, POST, GET 방식 중 해당 메소드에 적용할 HTTP Method를 선택할 수 있습니다. 이 값은 코드 생성 시 @RequestMapping 어노테이션에 반영됩니다.

Method Type 절에는 Basic 선택 시 기능별 샘플 코드를 포함한 메소드를 생성할 수 있으며, Legacy 연동 항목 선택 시 다이어그램에 존재하는 레거시 API 항목과 연결하는 작업을 할 수 있습니다. 기능별 샘플 코드는 다음과 같습니다.

타입

설명

Empty

비즈니스 로직을 포함하지 않은 빈 메소드를 생성합니다.

Basic

단말 요청 파라메터 변수 맵핑, 기본 단말 응답 생성 코드를 포함합니다.

HTTP Proxy

레거시 서버에 대한 HTTP PROXY 기능을 구현한 샘플 코드를 포함합니다.

File Download

파일 다운로드 기능을 구현한 샘플 코드를 포함합니다.

File Download Proxy

레거시 서버와 HTTP 연동하여 다운로드 받은 파일을 내려주는 샘플 코드를 포함합니다.

File Upload

파일 업로드 기능을 구현한 샘플 코드를 포함합니다.

File Upload Proxy

멀티파트 업로드된 파일을 레거시 서버로 POST 전송하는 샘플 코드를 포함합니다.

Image Download

이미지 다운로드 기능을 구현한 샘플 코드를 포함합니다.

Not Use Interceptor

프레임워크에서 제공하는 JSON 변환 인터셉터를 거치지 않고 전달된 JSON 리퀘스트를 데이터 구조로 변환하는 방법과 단말 지원 포맷에 맞게 응답을 JSON 포맷화하여 내려주는 샘플을 포함합니다.

Transaction

DB 트랜잭션 기능을 구현한 샘플 코드를 포함합니다.

Use DAO

DB 입출력 DAO를 이용한 샘플 코드를 포함합니다.

Use DTO

DB 입출력 시 DTO 구조를 이용한 샘플 코드를 포함합니다.

Use Config File

설정 파일 참조 샘플 코드를 포함합니다.

Other Secure Auth

인터셉터에서 사용되는 3rd 파티 암복호화 라이브러리를 이용한 전문 암호화 샘플 코드를 포함합니다. (프로젝트 내 샘플 코드에 위치함)

EAI Proxy

EAI PROXY 기능을 구현한 샘플 코드를 포함합니다.

샘플 메소드는 MSP 프레임워크를 이용하여 기능 별 코드를 생성할 때 참고하거나 확장하여 사용할 수 있습니다.

image131

그림 3.1.8.11-3 메소드 생성 다이얼로그 – Description

메소드 생성 다이얼로그의 Description 탭에는 해당 메소드의 설명을 입력할 수 있습니다. 입력한 설명문은 다이어그램 상에서 메소드 노드에 마우스 오버 시 설명문으로 나타나고, 단말연동규격 생성 시 참조됩니다.

image132

그림 3.1.8.11-4 메소드 생성 다이얼로그 – 레거시 API 선택

Method Type 절에서 Legacy 연동 항목을 선택하면 UI 하단의 Method Config 탭에 레거시 API 목록이 나타납니다. Legacy Server 하위 Legacy Group 하위 Legacy API 목록을 드롭다운 메뉴로 찾아서 선택할 수 있습니다. ‘Add’ 버튼으로 레거시 API를 더 추가할 수 있고, ‘Remove’ 버튼으로 삭제할 수 있습니다. 여기에서 목록에 추가되는 레거시 API는 메소드 코드 상에 연동 코드로 생성됩니다. ‘Finish’ 버튼을 눌러 메소드 생성 작업을 마무리하거나 ‘Next’ 버튼을 눌러 다음 단계인 파라메터 맵핑 과정으로 넘어갈 수 있습니다.

메소드 노드의 설정 내용을 수정해야 할 경우, 메소드 노드 선택 후 마우스 오른 클릭 > Edit 메뉴 항목을 선택하여 다이얼로그를 띄울 수 있습니다. 메소드 수정은 메소드명, 파라메터 맵핑 설정이 허용되며, 해당 메소드와 연결된 레거시 API를 추가하거나 삭제하는 등의 수정은 허용되지 않습니다.

*참고*

개발자가 코드에 직접 작성한 연동 코드 누실 우려가 있기 때문에 메소드에 연결된 레거시 API 수정 기능은 지원하지 않습니다.

메소드 노드를 더블 클릭하면 자바 에디터가 열리며 해당 메소드 위치로 포커싱이 됩니다. 또한, 노드 선택 후 마우스 오른 클릭 > Delete 메뉴를 선택하거나 키보드 Delete 버튼으로 메소드 노드를 지울 수 있습니다.

*참고*

메소드 노드 삭제 시 실제 클래스 파일 하위의 메소드 코드도 삭제됩니다. 삭제된 코드는 클래스 파일을 자바 에디터로 연 뒤, Ctrl+Z (되돌리기) 단축키로 복구할 수 있습니다.

파라메터 맵핑

파라메터 맵핑은 단말에서 올라온 리퀘스트 파라메터와 레거시로 전달하는 파라메터, 레거시에서 응답한 결과와 단말 응답 파라메터를 맵핑시켜주는 과정입니다. 맵핑 결과는 메소드 소스 내에 코드로 생성됩니다. 파라메터 맵핑 단계는 메소드 생성 다이얼로그에서 레거시 API를 선택한 후 ‘Next’ 버튼을 클릭하여 진입할 수 있습니다.

image133

그림 3.1.8.12-1 메소드 생성 다이얼로그 ‘Next’ 선택

image134

그림 3.1.8.12-2 파라메터 맵핑 다이얼로그

위 그림과 같이 파라메터 맵핑 다이얼로그는 크게 Request Mapping 탭과 Response Mapping 탭으로 구분되며, 각 탭 하위에는 Client Parameter 영역과 레거시 파라메터 영역으로 좌우 구분되어 있습니다.

Request Mapping 탭에는 우측에 현재 메소드에 연결된 레거시 API목록과 레거시 API별로 설정한 Request 파라메터 목록을 확인할 수 있습니다. UI 우측의 레거시 Request 파라메터를 마우스로 선택 후 좌측 Client Parameter 영역으로 드래그 앤 드랍하여 파라메터 맵핑을 수행할 수 있습니다. 아니면 레거시 API 영역의 상단 import All image135 아이콘을 클릭하여 전체 레거시 Request 파라메터 목록을 클라이언트 파라메터로 가져올 수 있습니다.

image136

그림 3.1.8.12-3 파라메터 다중 선택 후 import

레거시 Request 파라메터 목록 중 임포트 할 파라메터는 키보드 Shift, Ctrl 키를 누른 상태로 다중, 구간 선택이 가능하며, 파라메터를 선택한 상태에서 마우스 오른 클릭하여 Import 하여 맵핑시킬 수 있습니다.

image137

그림 3.1.8.12-4 리퀘스트 파라메터 맵핑

파라메터를 맵핑시키면 위 그림과 같이 두 개의 파라메터 간 연결선이 표시됩니다. 파란색 연결선을 선택 후 마우스 오른 클릭 > 삭제하기를 선택하거나 키보드 Delete 키로 맵핑 관계를 삭제할 수 있습니다. 클라이언트 요청 파라메터와 레거시 요청 파라메터가 맵핑되었다는 것은, 단말에서 올라온 해당 파라메터를 레거시 요청 파라메터로 전달하겠다는 의미가 됩니다. 레거시 파라메터에서 임포트되어 생성된 클라이언트 파라메터는, 레거시 파라메터에 설정한 이름, 설명 등의 속성값을 복사하여 가져오게 됩니다.

다른 방법으로, Client Parameter 영역에 새로운 파라메터를 추가해서 레거시 파라메터와 연결시킬 수 있습니다. Client Parameter 영역 상단 메뉴의 ‘추가하기’image138 버튼을 누르면 클라이언트 파라메터를 추가할 수 있는 다이얼로그가 뜹니다.

image139

그림 3.1.8.12-5 클라이언트 파라메터 다이얼로그

클라이언트 파라메터 다이얼로그의 입력 항목은 다음과 같습니다.

속성

설명

Name

파라메터 변수명을 입력합니다.

HTTP Name

단말에서 올라오는 HTTP 파라메터 이름을 입력합니다.

Type

파라메터 변수 타입을 선택합니다. 디폴트 String

Required

필수 여부를 선택합니다. True로 선택할 경우 단말에서 해당 파라메터를 보내지 않을 시 메소드에서 에러 메시지를 출력하게 됩니다.

Default Value

단말에서 올라온 해당 파라메터가 널값일 경우 대체할 값을 입력합니다.

Description

파라메터에 대한 설명을 입력합니다.

클라이언트 파라메터를 추가한 후 Client Parameter 영역의 추가한 파라메터를 선택 후 레거시 API 영역의 맵핑할 대상 파라메터로 드래그 앤 드랍하여 맵핑 관계를 만듭니다.

image140

그림 3.1.8.12-6 리퀘스트 파라메터 맵핑

위 그림과 같이 otherParam이라는 클라이언트 파라메터를 레거시 resultCode 파라메터로 연결하면, 단말에서 올라온 otherParam 파라메터의 값을 레거시 API에 resultCode라는 파라메터로 전달하겠다는 의미가 됩니다. 위 그림과 같이 두 개의 클라이언트 리퀘스트 파라메터가 하나의 레거시 리퀘스트 파라메터로 맵핑될 경우, 첫 번째 것만 레거시 파라메터로 전달되는 코드가 생성됩니다.

*참고*

리퀘스트 파라메터 맵핑 시 다대일 맵핑은 권장하지 않습니다.

반대로, 하나의 클라이언트 파라메터에 여러 개의 레거시 파라메터가 맵핑되는 경우는 같은 클라이언트 파라메터가 여러 개의 레거시 전달 파라메터로 전달되는 코드가 생성됩니다.

image141

그림 3.1.8.12-7 클라이언트 파라메터 메뉴바

클라이언트 파라메터 영역에 마우스 포커싱을 하면 상단 영역에 ‘추가하기’, ‘삭제하기’, ‘수정하기’동작을 할 수 있는 메뉴바가 활성화됩니다. 같은 항목은 클라이언트 파라메터 노드 선택 후 마우스 오른 클릭 후 노출되는 메뉴에도 존재합니다. 수정하기 동작은 클라이언트 파라메터를 마우스 더블 클릭하는 것으로도 가능하며, 삭제하기 동작은 키보드 Delete 키에 맵핑되어 있습니다. ‘위로’, ‘아래로’ 동작은 파라메터의 순서를 변경하는데 사용할 수 있으며, 마우스 드래그로 파라메터를 선택하여 위치를 옮길 수 있습니다. 이 기능은 생성되는 컨트롤러 메소드 코드 내 파라메터 변수의 코드 순서를 결정합니다. 파라메터 편집 기능은 클라이언트 파라메터에만 가능합니다. 레거시 파라메터는 수정할 수 없는데, 수정이 필요할 경우 다이어그램의 해당 레거시 API 다이얼로그에서 가능합니다.

Response Parameter 탭에서는 레거시 응답 파라메터를 단말 응답 파라메터로 맵핑시킬 수 있습니다. UI 구성 및 동작 방식은 Request Parameter 탭과 동일합니다. 클라이언트 응답 파라메터를 생성 및 수정할 수 있는 다이얼로그에는 리퀘스트 파라메터 다이얼로그와 다르게 Http Name 항목은 없습니다.

image142

그림 3.1.8.12-8 클라이언트 Response 파라메터 다이얼로그

MSP 플랫폼에서 생성되는 메소드는 json 응답 포맷을 취하기 때문에, Name으로 입력되는 값은 json 키 값으로 맵핑되어 단말로 내려가게 됩니다.

image143

그림 3.1.8.12-9 클라이언트 Response 파라메터 맵핑

위 그림은 레거시 응답 파라메터와 클라이언트 응답 파라메터를 교차하여 다대다 관계로 맵핑한 예입니다. 이 경우 맵핑 관계의 수만큼 응답 맵핑 코드가 생성되기는 하지만, 코드 로직 상 같은 키 값으로 다른 값을 세팅하는 형식이 되므로 마지막 맵핑 코드가 실제 단말 응답으로 내려가게 됩니다.

파라메터 맵핑 설정은 메소드 내의 코드를 생성하게 되므로 메소드 수정 시 파라메터 맵핑 관계를 변경하게 되면 다음과 같은 확인창이 나타납니다.

image144

그림 3.1.8.12-10 소스 변경 확인창

마지막으로 파라메터 맵핑 다이얼로그에서 ‘Finish’ 버튼을 누르고 확인창에서 ‘Yes’를 선택하면 설정 내용이 메소드 코드에 반영됩니다.

인터셉터

대쉬보드를 통하여 손쉽게 스프링 인터셉터 클래스를 편집할 수 있습니다.

image145

그림 3.1.8.13-1 인터셉터 목록

인터셉터 목록은 대쉬보드 좌측 상단 영역에 위 그림과 같은 형태로 위치합니다. 인터셉터 목록은 해당 프로젝트의 msp-gw-context.xml 스프링 컨텍스트 파일의 설정값을 참조하여 에디터가 로딩될 때 구성되게 됩니다.

image146

그림 3.1.8.13-2 팔레트 인터셉터 노드

인터셉터를 추가하려면, 대쉬보드 우측 팔레트 내의 Interceptor 노드를 선택 후 다이어그램 영역의 인터셉터 목록에 드랍하는 형식으로 추가할 수 있습니다.

image147

그림 3.1.8.13-3 인터셉터 생성 다이얼로그

인터셉터를 추가하면 설정값을 세팅할 수 있는 다이얼로그가 나타납니다. 입력항목에 대한 설명은 다음과 같습니다.

속성

설명

ID

인터셉터 Bean에 부여할 아이디를 입력합니다.

Interceptor Class

인터셉터 클래스 패키지 명을 입력합니다.

‘Interceptor class’ 링크를 클릭하면 스프링 HandlerInterceptorAdapter를 상속받은 인터셉터 클래스를 생성할 수 있고, ‘Browse’ 버튼을 클릭하여 이미 작성되어 있는 인터셉터 클래스를 불러올 수 있습니다.

Mapping

인터셉터에 맵핑할 URI Path 패턴을 입력합니다.

Exclude

인터셉터 맵핑에서 제외할 URI Path 패턴을 입력합니다.

Property

인터셉터에 프로퍼티로 주어지는 값을 입력할 수 있습니다.

인터셉터 생성 다이얼로그의 Property 설정값은, 해당 인터셉터 클래스로 전달할 파라메터값이나 참조 클래스 등을 설정할 수 있는 기능입니다.

image148

그림 3.1.8.13-4 인터셉터 프로퍼티 설정

Property 설정값은 ‘name’ 입력값을 기준으로 트리 형태로 보여집니다. 예를 들어, ‘test1’이라는 이름으로 ‘23’이라는 값을 인터셉터로 전달하고자 하는 경우, 위 그림과 같이 Property 추가 다이얼로그에서 Name 란에 test1을 입력하고 그 하위에 Key를 ‘value’, Value를 ‘23’을 입력하는 형식으로 설정할 수 있습니다.

image149

그림 3.1.8.13-5 인터셉터 컨텍스트 설정 반영 결과

대쉬보드를 저장하면 msp-gw-context.xml 스프링 설정 파일에 위와 같은 형태로 인터셉터 설정이 추가됩니다.

추가된 인터셉터는 마우스 더블 클릭을 하여 해당 클래스 소스를 자바 에디터 창으로 열 수 있습니다. 해당하는 인터셉터 선택 후 마우스 오른 클릭 > Edit ‘xxxInterceptor’ 메뉴를 선택하여 편집 다이얼로그를 띄울 수 있습니다. 삭제 시 마우스 오른 클릭 > Delete 메뉴를 선택하거나 키보드 Delete 키로 대쉬보드 상의 인터셉터를 삭제할 수 있습니다.

*참고*

프로젝트 생성 후 기본으로 설정되어 있는 DefaultInterceptor는 JSON 포맷 변환, 로깅, 암복호화 등의 기능들을 포함하고 있으므로 삭제하지 않기를 권고합니다.

image150

그림 3.1.8.13-6 인터셉터 순서 변경

인터셉터 목록에 노출되는 인터셉터들의 순서는 실제 컨텍스트 파일에 반영된 순서와 일치합니다. 인터셉터 실행 순서를 변경하고자 할 경우, 인터셉터 선택 후 마우스로 드래그하여 바꿀 수 있습니다.

업데이트 및 복원

다이어그램의 컨트롤러 클래스와 메소드는 직접 자바 파일과 연결되어 있기 때문에 다이어그램 상에서 수정 작업을 했을 경우 설정한 내용을 바탕으로 자바 파일에 코드를 생성하게 됩니다. 반대로 사용자가 다이어그램을 통하여 클래스와 메소드를 생성하고 그 이후 직접 자바 파일에 코드 구현을 했다면 업데이트된 소스의 내용이 다이어그램과 동기화가 맞지 않게 됩니다. 이 경우 클래스 소스의 내용을 바탕으로 다이어그램 컨트롤러 클래스 노드를 업데이트할 수 있습니다.

image151

그림 3.1.8.14-1 클래스 노드 컨텍스트 메뉴

컨트롤러 클래스 노드 선택 후 마우스 오른 클릭하여 노출되는 메뉴의 업데이트를 선택하면 동기화 과정이 진행됩니다.

image152

그림 3.1.8.14-2 클래스 업데이트 확인창

업데이트를 실행하기 전 위와 같은 확인창이 나타납니다. 업데이트를 수행하면 내부적으로 다이어그램의 백업 파일을 생성하여 복원하기 메뉴가 활성화됩니다. 소스 코드를 기준으로 다이어그램 모델을 업데이트 하는 과정이므로 소스에 반영되어 있지 않은 정보는 누락될 수 있습니다. 메소드 소스 중 다이어그램 메소드 모델로 해석되어 적용되는 규칙은 다음과 같습니다.

구분

규칙

메소드 명 수정

기존 메소드 노드가 삭제되고 신규 메소드 노드가 생성됩니다.

레거시 API

소스에는 직접 코딩하였으나 다이어그램 상에 레거시 API 노드로 존재하지 않는 영역은 해석되지 않습니다.

또한, MSP 플랫폼에서 제공하는 클래스를 이용한 연동 로직만 인식합니다. 예를 들어, http 타입의 경우 HttpClientUtil을 이용하여 연동을 하고 ExtractorFactory.getParser().extract() 메소드를 이용하여 응답 추출을 한 코드 영역만 인식합니다.

DB 타입의 경우 sqlSession.selectList() 메소드를 이용한 로직을 인식합니다.

EAI 타입의 경우 LegacyExecutor 클래스를 사용하여 LegacyExecutor.execute() 후 LegacyExecutor.parse()를 호출한 로직을 인식합니다.

클라이언트 Request 파라메터

MSP 플랫폼에서 제공하는 기본 파라메터 파싱 루틴에 사용되는 reqBodyMap 변수에서 가져오는 변수만 인식합니다.

Request 파라메터 맵핑관계

인식된 레거시 API에 인자로 주어지는 변수와 연관되어 있는 클라이언트 Request 파라메터를 인식하여 맵핑 관계로 설정합니다.

클라이언트 Response 파라메터

MSP 플랫폼에서 제공하는 기본 응답 파라메터 세팅 루틴에 사용되는 responseBodyMap 변수에 세팅하는 값만 인식합니다.

Response 파라메터 맵핑관계

인식된 레거시 API의 리턴값과 클라이언트 Response 파라메터의 연관관계로 인식합니다.

사용자가 직접 작성한 연동 클래스를 이용하거나 다이어그램을 통하여 생성되는 패턴이 아닌 별도의 로직을 작성하였으면 메소드 모델에 해당 항목들은 반영되지 않습니다.

*참고*

동기화 시 메소드, 클라이언트 파라메터에 대하여 사용자가 기 설정해 놓았던 Description 값은 누락될 수 있습니다. 파라메터 Description 값은 맵핑된 레거시 파라메터의 Description값으로 대체됩니다.

image153

그림 3.1.8.14-3 클래스 복원 다이얼로그

컨트롤러 클래스에 대하여 업데이트 과정을 한번이라도 수행하였으면 컨텍스트 메뉴에 ‘복원하기’ 항목이 활성화됩니다. 복원하기를 선택하면 이전에 업데이트하였을 때 백업해 두었던 컨트롤러 클래스의 모델 정보 목록이 다이얼로그 상에 나타납니다. 복원하고자 하는 지점을 선택하고 ‘OK’ 버튼을 누르면 당시의 상태로 컨트롤러 클래스 모델을 복원할 수 있습니다. 복원 지점을 삭제하고 싶을 경우 삭제하고자 하는 복원 지점을 선택한 후 마우스 오른 클릭 > 삭제하기를 선택하거나 키보드 Delete 키로 삭제할 수 있습니다.

메소드 수정, 파라메터 맵핑 기능은 개발자가 작성 중이던 메소드 코드 내에 새로운 코드를 추가하는 과정이므로 해당 작업 후 커스터마이징된 코드 영역에 누실된 부분이 없는지 확인할 것을 권장합니다. 다이어그램 상에서의 메소드 수정 시 소스로 반영되는 범위는 다음과 같습니다.

동작

범위

메소드 명 수정

메소드명과 RequestMapping url이 변경됩니다.

HTTP Method 수정

RequestMapping method 값이 변경됩니다.

레거시 API

다이어그램 모델을 기준으로 매칭되는 레거시 API 호출 로직을 변경합니다. HTTP 요청 시 GET 방식으로 호출하던 것을 POST로 변경하였거나 DB 연동 시 인자를 전달하다가 뺐거나 반대로 인자가 없다가 새로 넣었을 경우 호출 메소드 형태가 변경됩니다.

클라이언트 Request 파라메터 수정

MSP 플랫폼에서 제공하는 기본 파라메터 파싱 루틴에 사용되는 reqBodyMap 변수를 참조하는 로직을 다이어그램 모델 기준으로 업데이트합니다.

클라이언트 Request 파라메터 맵핑관계 수정

인식된 레거시 API 코드에 인자로 주어지는 Map 변수에 세팅되는 클라이언트 Request 파라메터가 변경됩니다.

클라이언트 Response 파라메터 수정

MSP 플랫폼에서 제공하는 기본 응답 세팅 루틴에 사용되는 responseBodyMap 변수에 세팅되는 로직이 변경됩니다.

클라이언트 Response 파라메터 맵핑관계 수정

인식된 레거시 API 코드의 리턴값을 참조하여 클라이언트 Response 파라메터와 연관관계가 있는 로직을 변경합니다.

*참고*

자바 클래스 파일의 백업 기능은 현재 지원하지 않습니다. 다이어그램에서 수정 수행 후 코드를 복원하고 싶을 경우, 자바 에디터에서 클래스 파일을 연 뒤 Ctrl+Z (되돌리기) 단축키로 복원할 수 있습니다. 다른 방법으로, 이클립스 UI 좌측 익스플로러에서 클래스 선택 후 마우스 오른 클릭 > Team > Show Local History를 선택하여 이전 수정했던 시점으로 돌릴 수 있습니다.

Dashboard Table

대쉬보드 에디터 하단의 Table 탭을 선택하면 다이어그램에 설정한 내역을 확인할 수 있는 목록 형태의 UI를 확인할 수 있습니다. 대쉬보드 Table을 통하여 설정된 레거시 서버와 그 하위의 API 목록을 확인하고 편집 및 추가할 수 있습니다.

image154

그림 3.1.8.15-1 대쉬보드 테이블

UI 구성은 상단에 레거시 서버 목록이 나타나며, 레거시 서버 목록에서 선택하면 하단에 그 하위의 레거시 API 목록이 나타납니다. 다이어그램에서 팔레트를 통하여 드래그 앤 드랍하여 새로운 노드를 추가하는 것처럼 UI 우측의 ‘추가하기’, ‘삭제하기’, ‘수정하기’ 버튼을 클릭하여 추가 및 수정, 삭제 동작을 할 수 있습니다. 수정 동작은 테이블의 특정 줄을 더블 클릭하는 것으로 동일하게 호출 가능하고, 삭제 동작은 키보드 Delete 키에 맵핑되어 있습니다.

Export Wizard

Export Wizard는 서버 프로젝트를 웹 컨테이너에 배포 가능한 WAR 타입으로 패키징하거나 원격 서버에 FTP로 배포할 수 있는 기능을 가집니다. Export Wizard를 호출하는 방법으로 Server Manifest Editor를 이용하는 방법과 Export 메뉴를 이용하는 방법이 있습니다.

  • Server Manifest Editor를 열고 배포하기 그룹에서 WAR 파일로 배포하기 링크를 클릭합니다.

image155

그림 3.1.9-1 배포하기 링크

  • 이클립스 UI 좌측 Project Explorer에서 프로젝트 선택 후 마우스 오른 클릭 > Export > MSP Project Export 를 선택합니다.

image156

그림 3.1.9-2 MSP Project Export 컨텍스트 메뉴

  • 상단 메뉴 중 File → Export를 선택하거나 이클립스 UI 좌측 Project/Package Explorer에서 프로젝트 선택 후 마우스 오른 클릭 > Export > Export 를 선택하면 아래 그림과 같은 Export 대화상자가 나타납니다. Morpheus트리 하위의 MSP Project Export를 선택합니다.

image157

그림 3.1.9-3 Export 다이얼로그

Wizard 상단 Web Project 항목에서 내보내려는 프로젝트를 선택합니다. 프로젝트를 WAR 파일로 패키징하여 내보낼 경우 Destination 항목의 Browse 버튼을 눌러 내보낼 경로를 선택합니다.

image158

그림 3.1.9-4 MSP Project Export

WAR 파일을 FTP로 원격 서버로 전송하려면 Destination 그룹에서 FTP를 선택합니다.

image159

그림 3.1.9-5 FTP 전송

FTP 접속 정보를 입력합니다. 설정 상세 정보는 아래와 같습니다.

  • Host : 전송할 목적지의 IP를 입력합니다.

  • Port : 전송할 목적지의 Port를 입력합니다.

  • Protocol : FTP, SFTP 중 하나를 선택합니다.

  • 로그인 유형 : 일반, 익명 중 하나를 선택합니다.

  • 사용자 : FTP User Id를 입력합니다.

  • 비밀번호 : FTP 비밀번호를 입력합니다.

  • 목적지 경로 : FTP로 전송해 파일을 저장할 경로를 입력합니다.

    1. MSP Platform

MSP Platform은 모바일 서비스를 구현하기 위해 제공되어지는 개발 환경을 의미합니다. 여기에서는 MSP IDE를 통하여 생성되는 서버 프로젝트에 적용된 프레임워크와 기본 구조를 설명합니다.

*참고*

MSP 서버 플랫폼에 대한 더 자세한 자료는 별도로 제공하는 프레임워크 관련 기술 문서를 참고하시기 바랍니다.

프로젝트 구조

MSP IDE를 통하여 생성되는 서버 프로젝트는 웹 프로젝트이며, Maven 폴더 구조를 취합니다.

image160

그림 3.2.1-1 서버 프로젝트 구조

src/main/java 폴더 하위에 자바 소스 파일들이 위치하게 되고, src/main/resources 하위에 사용자 설정 파일이나 다국어 지원을 위한 메시지 프로퍼티 파일들이 위치합니다. 적용된 프레임워크인 스프링, myBatis 에서 참조하는 주요 설정 파일들은 src/main/webapp/WEB-INF/ 폴더 하위에 존재합니다.

image161

그림 3.2.1-2 src 폴더 하위 구조

/src/main/webapp/WEB-INF/config 폴더 하위에 스프링 컨텍스트 xml 파일들과 myBatis 데이터 소스 설정을 할 수 있는 컨텍스트 파일들이 존재합니다. /WEB-INF/sqlmap 폴더 하위에 myBatis SQLMap 파일들이 위치하게 됩니다. 주요 폴더 별 설명은 다음과 같습니다.

위치

설명

/src/main/java

자바 클래스 파일이 위치합니다.

com.example.xxx

샘플 소스 코드들이 위치합니다.

kr.msp.xxx

MSP 플랫폼에서 사용되는 홈 컨트롤러와 DB 리소스 암호화 유틸성 클래스가 위치합니다.

/src/main/resources

프로젝트 리소스 파일들이 위치합니다.

/src/main/resources/config

사용자 정의 프로퍼티 파일, 대쉬보드 메타 파일 등이 위치합니다.

/src/main/webapp

웹 리소스 파일들이 위치합니다.

WEB-INF/config

스프링 컨텍스트 파일과 라이선스, 로그 설정 파일이 위치합니다.

WEB-INF/lib

Web app 라이브러리들이 위치합니다. Maven dependency가 걸려있지 않은 jdbc 드라이버와 같은 라이브러리를 추가할 수 있습니다.

WEB-INF/sqlmap

myBatis SQLMap xml 파일들이 위치합니다.

이와 같은 Maven 프로젝트 구조는 Maven Build를 실행하거나 WAR로 패키징, 로컬 연동된 서버로 마운트 등의 작업을 실행하면 일반적인 Web Application 프로젝트의 구조로 재구성됩니다.

image162

그림 3.2.1-3 웹 프로젝트 어셈블리 다이얼로그

프로젝트 어셈블리 규칙은, 이클립스 UI 좌측 프로젝트 익스플로러에서 프로젝트 선택 후 마우스 오른 클릭 > Properties > 좌측 트리에서 Deployment Assembly 항목 선택을 하면 위와 같은 다이얼로그에서 내용을 확인할 수 있습니다.

주요 적용 기술

MSP 서버 프로젝트에는 스프링과 MyBatis 프레임워크가 적용되어 있으며, 빌드, 패키징, 라이브러리 관리 등의 기능을 수행하는 Maven 이 적용되어 있습니다. 이는 정부에서 권장하는 표준프레임워크 기준과도 상응합니다.

Framework

버전

설명

Spring

3.2.3

J2EE 웹 어플리케이션 개발에 사용되는 프레임워크입니다.

*http://projects.spring.io/spring-framework/*

MyBatis

3.2.2

데이터베이스 연동 시에 사용되는 퍼시스턴스 프레임워크입니다.

*https://mybatis.github.io/mybatis-3/ko/*

Maven

3.1

프로젝트 관리에 사용되는 프레임워크입니다.

*https://maven.apache.org/*

스프링 프레임워크는 Dependency Injection, AOP, RESTful의 특징을 가지는 널리 알려진 웹 프레임워크로, 가볍고 간편하게 코딩이 가능하다는 이점이 있습니다. MSP 서버 프로젝트에서 생성되는 컨트롤러 클래스도 이러한 스프링 프레임워크의 어노테이션 기능을 사용하고 있는데, 주로 알아야 할 어노테이션 기능들은 다음과 같습니다.

어노테이션

설명

@Controller

Controller 클래스를 정의

@Autowired

의존관계를 자동으로 설정한다.

@RequestMapping

웹 url 요청에 대한 메소드 맵핑

@RequestParam

웹 요청의 파라메터와 메소드 파라메터간의 맵핑

@PathVariable

메소드에 매개 변수 주석을 사용하여 URI 변수의 값에 바인딩 한다.

@ResponseBody

메소드에서 리턴되는 바이트나 스트링 형태의 값을 view가 아닌 HTTP Response Body 에 직접 쓰여지게 한다.

@RequestBody

HTTP Request Body를 핸들러 메소드에서 직업 사용 가능

@Service

Service 클래스의 정의, 자동 빈 등록

@Qualifier

스프링 컨텍스트 xml에 qualifier 태그로 정의된 Bean 객체와 맵핑

주요 설정 파일들은 WEB-INF/config/context/ 폴더 하위의 xxx-context.xml 파일을 참고합니다.

MyBatis는 데이터베이스 입출력시에 추가로 구현해야 하는 JDBC 참조 코드, DB 연결의 불안정성 등을 완화하기 위해 간편한 설정 파일로 연동 구현이 가능한 프레임워크입니다. 스프링 프레임워크와 상성이 좋으며, WEB-INF/config/context/ 폴더 하위의 xxx-mybatis-context.xml 스프링 설정 파일에 Bean으로 등록하여 사용합니다. SQL 구문이 들어있는 Mapper xml 파일들은 WEB-INF/sqlmap 폴더 하위에서 확인할 수 있습니다.

Maven은 프로젝트 관리 툴로서, 빌드, 테스트, 패키징, 배포 등의 프로세스를 자동화하는 데 확장하여 사용할 수 있습니다. 프로젝트 루트 폴더 하위 pom.xml 설정 파일에 주요 설정 정보들을 담고 있습니다. MSP IDE에는 Maven 플러그인이 포함되어 있기 때문에 별도로 빌드를 위해 Maven 커맨드 명령을 실행할 필요는 없습니다.

*참고*

프로젝트에서 사용되는 의존성이 있는 라이브러리들은 nexus 저장소에서 다운로드 받게 되기 때문에 다음 url에 대하여 연결이 가능해야 합니다.

http://211.241.199.217:8080

MSP Framework

MSP 프로젝트는 모바일 서비스 구현 시 게이트웨이 서버 기능에 특화된 프레임워크를 라이브러리 형태로 포함하고 있습니다. MSP 프레임워크는 스프링 프레임워크 기반 위에 모바일 서비스를 위한 특수 기능 및 API를 구현해 넣은 것이라 생각할 수 있습니다. MSP 프레임워크 라이브러리는 기능 별로 세 가지 라이브러리를 제공하며, 각각에 대한 설명은 다음과 같습니다.

구분

파일명

기능

기본 프로젝트

msp-gw-web.jar

게이트웨이 서버 구현을 위한 기본 프로젝트 구조를 담고 있으며, 샘플 소스를 포함합니다.

코어 라이브러리

msp-core.jar

플랫폼에서 제공되는 기본적인 데이터 구조나 암복호화, 라이선스 관리 등의 기능을 포함합니다.

게이트웨이 라이브러리

msp-gw.jar

게이트웨이 서버 구현을 위한 상위 클래스나 기본 기능에 대한 구현체를 포함합니다.

Configuration

MSP 서버 프로젝트에는 스프링이나 MyBatis에서 활용되는 설정 파일 외에도 MSP 플랫폼 자체적으로 정의한 설정 파일도 있습니다. 스프링과 MyBatis 설정 파일은 각각의 규격을 따르고 있으며, MSP 사용자 정의 설정 파일은 간단한 XML 문법으로 설정할 수 있습니다. 그 밖에 IDE에서 참조하는 설정 파일은 사용자가 직접 수정할 필요가 없으며 직접 편집하지 않기를 권장합니다. 프로젝트 내에 존재하는 주요 설정 파일들은 다음과 같습니다.

설정파일

설명

manifest.xml

IDE manifest 에디터의 프로젝트 설정 정보를 저장합니다. 사용자가 편집하지 않기를 권고합니다.

pom.xml

Maven 설정 파일입니다. 라이브러리를 추가할 때 dependency 항목에 추가하는 등의 작업을 할 수 있습니다.

dashboard.xml

IDE 대쉬보드의 설정 정보를 저장합니다. 사용자가 직접 편집하지 않기를 권고합니다.

/src/main/resources

message.properties

다국어 지원을 위한 메시지 프로퍼티입니다. 키, 값 형태로 에러 코드와 메시지를 정의할 수 있습니다.

/src/main/resources/config

custom.xml

사용자가 정의하고자 하는 커스터마이징 영역의 설정값을 XML 문법에 따라 추가합니다. 해당 값은 어노테이션 @Value(“${key:defaultValue}”) 형태로 소스 코드에서 참조할 수 있습니다. 자세한 사용법은 Use Config File 샘플 컨트롤러를 참고합니다.

msp.xml

Manifest 에디터 Configuration 탭에서 설정하는 정보가 저장됩니다. Admin, 로그, 스토어, 리소스, 기본 데이터베이스 등의 프로젝트 기본 설정 정보가 위치합니다. 또한, 대쉬보드에서 레거시 접속 정보를 프로퍼티로 저장 시, 해당 데이터가 저장됩니다.

dashboard.xml

프로젝트 루트에 노출되는 dashboard 설정 파일은 가상 파일이고 여기에 실제 파일이 위치합니다. 직접 편집을 권하지 않습니다.

/src/main/resources/config/dashboard

apis 폴더 하위

대쉬보드에서 설정한 레거시 API 정보가 저장됩니다. 직접 편집하지 않기를 권고합니다.

controller 폴더 하위

대쉬보드 컨트롤러 모델 정보가 저장됩니다. 직접 편집하지 않기를 권고합니다.

servers 폴더 하위

대쉬보드 Legacy Server 모델 정보가 저장됩니다. 직접 편집하지 않기를 권고합니다.

common_parameter 폴더 하위

대쉬보드에서 설정한 EAI 공통 파라메터 정보가 저장됩니다. 직접 편집하지 않기를 권고합니다.

/src/main/webapp/WEB-INF

web.xml

웹 컨테이너에 대한 디스크립터 파일입니다. 서블릿 맵핑 변경이나 필터를 추가할 수 있습니다.

/src/main/webapp/WEB-INF/config

log4j.xml

플랫폼에서 사용하는 로그 설정 파일입니다. 로그 경로를 변경하거나 로그 레벨을 변경할 수 있습니다.

/src/main/webapp/WEB-INF/config/context

root-context.xml

스프링 컨텍스트 파일로, 설정 파일, View Resolver에 대한 설정 정보를 담고 있습니다.

msp-gw-context.xml

스프링 컴포넌트 스캔, 인터셉터, 스케쥴러에 대한 설정 정보를 담고 있습니다.

message-context.xml

다국어 지원을 위한 설정 정보를 담고 있습니다.

msp-resource-context.xml

url에 대한 컨트롤러 맵핑 설정 정보를 담고 있습니다.

mybatis-context.xml

데이터 베이스와 관련된 myBatis 설정 값을 정의합니다. xxx-mybatis-context.xml 을 임포트합니다. 데이터 소스를 추가하여 빈을 추가할 때 여기에 작업합니다.

xxx-mybatis-context.xml

데이터 소스 별로 DB 정보를 나누어 설정할 경우에 사용됩니다. 연동되는 DB가 늘어날 경우 이 설정 파일이 추가됩니다.

/src/main/webapp/WEB-INF/sqlmap

example 폴더 하위

샘플 코드에서 참조하는 myBatis SQL Map 파일이 위치합니다.

legacyMapper 폴더 하위

레거시 DB 에 대한 연동 SQL 쿼리를 포함한 SQL Map 파일이 위치합니다. DB를 수동으로 추가할 경우, 여기에 SQL Map 파일을 추가합니다.

/src/main/webapp/META-INF

context.xml

web.xml 파일과 상호 참조하여 톰캣 컨테이너에 등록할 jndi 리소스를 정의합니다.

소스 패턴

게이트웨이 서버에서 구현되는, 모바일 단말과 레거시 서버를 연결하는 형식의 샘플 코드 구조를 확인합니다. 일반적으로 사용자가 직접 작성하게 되는 컨트롤러의 메소드 구조는 단말에서 올라온 파라메터를 받아 해당하는 기능의 레거시 인터페이스로 연동하고 그 응답을 다시 단말로 내려주는 흐름으로 되어 있습니다. MSP 플랫폼은 단말과 게이트웨이 서버간 통신 규격을 JSON POST 방식으로 규정하고 있으며, 이에 따라 프레임워크 내부에 숨겨진 인터셉터에서 JSON 요청을 맵으로 파싱하여 맵핑하고 반대로 메소드 코드에서 리턴한 맵을 JSON 포맷으로 변환하는 동작을 수행해 줍니다. 이러한 방식이 적용된 소스 구조를 보면 다음과 같습니다.

image163

그림 3.2.5-1 컨트롤러 메소드 코드 루틴

컨트롤러 메소드는 @RequestMapping 어노테이션으로 REST 방식의 url 경로에 맵핑되어 있습니다. MSP IDE에서 메소드를 생성하게 되면 메소드명과 url 경로의 마지막 path가 같은 형식으로 코드가 생성됩니다.

@Controller

public class SampleController {

@RequestMapping(value=”/api/msp/sample/test”)

public String test(HttpServletRequest request, HttpServletResponse response)

throws Exception {

}

}

클라이언트로 노출되는 url은 /api/ 로 시작되는 경로에 위치해야 합니다. 그렇지 않을 경우, 단말에서 올라오는 json request 포맷을 Map으로 변환해 주고 보안 및 로깅 기능을 수행하는 인터셉터가 동작하지 않기 때문입니다.

image164

그림 3.2.5-2 디폴트 인터셉터 설정

*참고*

단말로 노출되는 url은 json POST 방식으로 통신하는 것이 약속되어 있습니다. 실 서비스 적용 시 메소드에서 허용하는 http Method를 POST만 허용하도록 변경하여 적용할 것을 권장합니다. GET 방식으로 통신 시 보안적으로 취약해 질 수 있으며, 플랫폼에서 제공하는 암호화 기능과 로깅 기능이 적용되지 않습니다.

@RequestMapping(method=RequestMethod.POST, value=”/api/sample/{id}”)

단말에서 올라온 파라메터는 인터셉터단에서 파싱되어 코드에서 사용할 수 있는 맵 형태로 변환됩니다. 리퀘스트 어트리뷰트에 담긴 파라메터 맵 객체를 받아오는 부분은 다음과 같습니다.

//URI Path VARIABLES ATTRIBUTE 맵정보

Map<String, Object> uriPathVal = (Map<String, Object>)request

.getAttribute(Const.REST_URI_PATH_VAL);

//클라이언트에서 넘어온 request(HEAD+BODY) 모든 정보

Map<String, Object> reqMap = (Map<String, Object>)request

.getAttribute(Const.HTTP_BODY);

//클라이언트에서 넘어온 공통 헤더 맵정보

Map<String, Object> reqHeadMap = (Map<String, Object>)request

.getAttribute(Const.HEAD);

//클라이언트에서 넘긴 파라메터 맵정보

Map<String, Object> reqBodyMap = (Map<String, Object>)request

.getAttribute(Const.BODY);

비즈니스 로직에서 주로 사용되는 것은 단말에서 올라오는 파라메터를 담고 있는 reqBodyMap 변수가 될 것입니다.

레거시 연동이나 데이터 변환 등의 커스터마이징된 영역이 기술될 비즈니스 로직 영역은 try catch 구문으로 묶여 있습니다. HTTP 방식의 연동 샘플 코드는 다음과 같습니다.

image165

그림 3.2.5-3 HTTP 레거시 연동 코드

HTTP 방식의 레거시 연동 수행 코드는 프레임워크에서 제공하는 HttpClientUtil 클래스를 사용합니다. 이 클래스는 아파치 commons 패키지로 제공되는 Http Client 를 랩핑한 것입니다. 우선, 해당 http 클라이언트 객체에 초기화를 실행하는데, 이 때 사용되는 인코딩 옵션이나 타임 아웃값 등의 설정값은 IDE 다이어그램 상의 레거시 서버 설정 시 입력했던 값을 참조합니다.

초기화 코드 이후에는 레거시 서버 url에 대하여 단말에서 올라온 파라메터를 맵핑하여 리퀘스트를 보내는 루틴이 있습니다. IDE 리퀘스트 파라메터 맵핑 단계는 이 부분의 코드를 생성하게 됩니다.

다음으로 레거시의 응답 스트링을 플랫폼에서 제공하는 파서로 파싱하고 특정 구조체로 응답하는 루틴이 존재합니다. IDE 시뮬레이팅 및 추출 단계에서 설정한 값이 이 부분의 코드를 생성하게 됩니다.

마지막으로 추출 결과 파라메터를 단말로 내려줄 맵 타입의 객체에 담아주는 로직이 있습니다. IDE 상의 Response 파라메터 맵핑 단계가 이 부분의 코드를 생성합니다.

대쉬보드에서 Legacy Http Server 생성 시 ‘Save at Property File’ 체크 박스를 선택한 상태로 저장하였다면, HTTP 방식의 레거시 연동 컨트롤러 코드 생성 시 프로퍼티 파일에 대한 참조 변수로 레거시 접속 정보 관련 코드가 생성되게 됩니다.

image166

그림 3.2.5-4 HTTP 레거시 연동 코드 – msp.xml 참조 변수

레거시 접속 정보는 msp.xml 설정 파일에 저장되며, 각각의 데이터 엘레멘트에 대한 참조가 스프링 @Value 어노테이션으로 적용되어 코드 상에 변수로 노출됩니다.

image167

그림 3.2.5-5 HTTP 레거시 연동 코드 – msp.xml 참조 변수 적용 연동 코드

레거시 연동 코드는 위와 같이 프로퍼티 참조 변수를 이용하여 재작성됩니다.

*참고*

@Value 어노테이션은 ${참조할 프로퍼티 경로:디폴트값} 형태로 구성됩니다. 콜론(:) 뒤에는 프로퍼티 파일에 해당하는 엘레멘트가 없거나 값이 없을 경우 대체되는 값으로 지정하는데, 직접 편집하더라도 콜론(:)은 꼭 넣어주는 것을 권장합니다. 디폴트값이 빈 값이더라도 콜론(:)을 붙이지 않으면, 매칭되는 프로퍼티값이 없을 경우 스프링에서 변수를 주입할 때 오류가 발생합니다.

데이터 베이스 연동 방식의 샘플 비즈니스 로직 코드는 다음과 같습니다.

image168

그림 3.2.5-6 데이터베이스 레거시 연동 코드

데이터베이스 레거시 연동 로직은, 우선 레거시 데이터베이스로 전달할 파라메터를 세팅하는 코드로 시작합니다. IDE에서 작성한 리퀘스트 파라메터 맵핑 설정값에 따라 이 영역에 코드가 생성되는데, 디폴트로 해쉬맵을 사용하게끔 되어 있습니다.

Select 조회 실행 코드는 일반적인 myBatis 코딩 방식과 같습니다.

조회 실행에 대한 응답 리스트는 단말로 내려줄 맵 객체에 세팅됩니다.

EAI 방식의 레거시 연동 샘플 코드는 다음과 같습니다.

image169

그림 3.2.5-7 EAI 레거시 연동 코드

LegacyExecutor.create() 메소드는 IDE에서 사용자가 설정한 Wrapper 객체의 인스턴스를 생성합니다.

이후 IDE 레거시 API 다이얼로그에 입력한 Request Parameter 의 입력값을 참조하여 맵 형태의 파라메터 구조체를 설정하는 루틴이 존재합니다.

연동 실행 코드는 내부적으로 Wrapper 객체의 configure, request, response 메소드를 순서대로 호출합니다. 그리고 response 에서 리턴해주는 스트링 값을 변수에 대입합니다.

응답 스트링 파싱 루틴은 IDE 시뮬레이팅 시 설정한 맵핑 규칙에 따라 응답 파라메터를 맵 형태로 리턴해 줍니다.

마지막으로 응답 파라메터 맵을 단말로 내려줄 맵 형태의 구조체에 세팅해 줍니다.

위와 같은 코드 패턴은 샘플 코드나 IDE에서 생성하는 코드가 가지는 형식이므로 실 개발 시 눈에 익혀두고 변경하거나 확장하여 사용할 필요가 있을 것입니다. 권장하는 방법은 대쉬보드 IDE 툴을 이용하거나 샘플 컨트롤러 소스를 이용하여 기본 코드를 확보하고, 그 위에 사용자가 커스터마이징 영역에 대한 추가 구현을 하는 것입니다.

개발

MSP IDE를 이용한 주요 개발 프로세스를 설명합니다. 모바일 서비스 구축 시 레거시 서버와 연동하여 데이터를 정규화하여 단말로 내려주는 게이트웨이 서버를 구현하는 예를 설명합니다.

프로젝트 생성

MSP IDE를 기동하고 서버 프로젝트를 생성합니다.

image170

그림 4.1-1 New Server Project 메뉴

이클립스 UI 좌측 Project Explorer에서 마우스 오른 클릭 후 New > New MSP Server Project 를 선택하거나

image171

그림 4.1-2 New Server Project 상단 메뉴

이클립스 상단 메뉴에서 File > New > New MSP Server Project를 선택합니다. 그러면 프로젝트 생성 Wizard 다이얼로그가 뜹니다.

image172

그림 4.1-3 New Server Project Wizard 첫 번째 페이지

프로젝트 생성 Wizard 의 첫 번째 페이지에는 Project Name을 입력하고 Execution Environment에 JavaSE-1.6 이나 JavaSE-1.7 을 선택합니다. MSP 플랫폼은 JAVA JDK 1.6과 1.7 버전을 지원합니다. ‘Next’버튼으로 다음 화면으로 넘어갑니다.

*참고*

프로젝트 생성 후 적용된 JDK를 변경하고자 할 경우, 다음 세 가지 항목을 체크합니다. 먼저, 이클립스 UI 좌측 프로젝트 Explorer에서 프로젝트 선택 후 마우스 오른 클릭 > Properties 메뉴로 진입합니다.

  • Java Build Path > Libraries 탭의 JDK 설정을 변경합니다.

  • Java Compiler > JDK Compliance 절의 Compiler compliance level 항목을 확인합니다.

  • Project Facet > Java 항목의 Version 설정을 변경합니다.

image173

그림 4.1-4 New Server Project Wizard 두번째 페이지

프로젝트 생성 Wizard 두번째 페이지에서는 서버 라이브러리 및 리소스를 선택합니다. 만약, 다운로드 받은 리소스가 없을 경우, ‘New API’ 버튼을 클릭하여 리소스 매니저를 띄워 최신 버전의 리소스를 다운로드 받습니다. API 선택에서 다운로드 받은 리소스를 선택한 후 ‘Finish’ 버튼을 눌러 프로젝트 생성을 실행합니다.

*참고*

개발 환경이 인터넷이 되지 않아 MSP 리소스 제공 서버로부터 서버 리소스를 다운로드 받지 못할 경우, 기술지원팀에 요청하여 서버 리소스를 전달받아야 합니다. 전달받은 리소는 IDE 설치 폴더에 위치시킵니다. (예) \MSP_1.0.x\MspRes

image174

그림 4.1-5 서버 프로젝트 구조

생성된 프로젝트는 위 그림과 같은 구조를 갖습니다.

프로젝트가 정상적으로 생성되면 Manifest 에디터가 열리게 됩니다.

image175

그림 4.1-6 Manifest Overview

프로젝트 환경 설정

프로젝트 생성 시 내부적으로 Maven dependency가 걸려있는 라이브러리들을 로컬 저장소에 다운로드 받고 전체 소스를 컴파일, 빌드하는 과정이 진행됩니다. Maven에 대한 설정 정보는 이클립스 상단 메뉴의 Window > Preferences 를 선택하여 Preferences 다이얼로그를 띄우고

image176

그림 4.2-1 Preferences 진입 메뉴

Preferences 다이얼로그 좌측 트리에서 Maven > User Settings 항목을 선택합니다.

image177

그림 4.2-2 Preferences Maven User Settings

위와 같은 다이얼로그에서 Maven 로컬 저장소 위치를 확인할 수 있습니다.

*참고*

개발 환경이 인터넷이 되지 않아 nexus 서버로부터 라이브러리를 다운로드 받을 수 없을 경우는, 기술지원팀에 요청하여 프로젝트에 필요한 라이브러리를 전달받아야 합니다. 전달받은 라이브러리는 개발 환경의 특정 디렉토리에 위치시키고 Preferences Maven User Settings 다이얼로그에서 경로를 지정할 수 있습니다.

Maven 참조 라이브러리가 제대로 다운로드 되지 않아 라이브러리 누락이 되면 빌드 오류가 발생합니다. 이런 경우, Project Explorer에서 프로젝트 선택 후 마우스 오른 클릭 > Maven > Update Project 를 선택하여 열리는 Update Maven Project 다이얼로그에서 refresh를 할 수 있습니다.

image178

그림 4.2-3 Maven Update Project 진입 메뉴

image179

그림 4.2-4 Maven Update Project 다이얼로그

Update Maven Project 다이얼로그에서 refresh 하고자 하는 프로젝트를 선택하고 ‘OK’ 버튼을 누르면 pom.xml에 정의된 라이브러리를 다시 다운로드 받는 프로세스가 진행됩니다.

*참고*

Maven Update 시 기존에 설정되어 있던 Web App Lib 폴더에 대한 참조가 사라지는 버그가 있습니다. 이 경우, 프로젝트 선택 후 마우스 오른 클릭 > Build Path > Configure Build Path로 들어가서 Libraries 탭에 Web App Library를 추가해주면 됩니다.

image180

그림 4.2-5 프로젝트 Properties 진입 메뉴

생성된 프로젝트에 대한 설정 정보는 이클립스 UI 좌측 Project Explorer에서 프로젝트 선택 후 마우스 오른 클릭 > Properties 를 선택하여 뜨는 Properties 다이얼로그에서 확인할 수 있습니다.

image181

그림 4.2-6 프로젝트 Properties 다이얼로그 – Build Path

주로 변경하는 설정값으로 프로젝트 Properties 다이얼로그의 좌측 트리 메뉴에서 ‘Java Build Path’를 선택하여 프로젝트에 연결된 라이브러리를 변경하거나

image182

그림 4.2-7 프로젝트 Properties 다이얼로그 – Web Project Settings

왼쪽 트리 메뉴에서 Web Project Settings 를 선택하여 컨텍스트 루트를 변경할 수 있습니다.

image183

그림 4.2-8 프로젝트 빌드 세팅 메뉴

라이브러리 설정을 바꾼다거나 빌드 오류가 생겼을 경우 이클립스 상단 메뉴의 Project > Clean 을 선택하여 빌드 과정을 다시 수행할 수 있습니다. 빌드 프로세스는 자동으로 설정해 놓는 것을 권장합니다. 이클립스 상단 메뉴의 Project > Build Automatically 항목이 선택되어 있으면 자동 빌드 설정이 되어 있는 것입니다.

서버 프로젝트를 생성한 후 열리는 Manifest 에디터 페이지를 통하여 프로젝트 내부 로직과 관련된 전반적인 설정을 할 수 있습니다. 주로 설정하는 것으로 모바일 서비스의 로깅과 통계 데이터 관리를 위한 기본 데이터베이스를 설정하는 단계를 들 수 있습니다.

image184

그림 4.2-9 Manifest Overview – Configuration 링크

Manifest Overview 화면에서 Configuration 링크를 클릭하여 Configuration 탭으로 넘어갑니다.

image185

그림 4.2-10 Configuration 탭 – 기본 데이터베이스 정보 입력

Configuration 탭 우측 상단 영역의 데이터베이스 절에 기본 데이터베이스로 사용할 접속 정보를 입력합니다. JNDI 방식을 사용할 경우 로컬 서버나 같은 JVM을 공유하는 환경에서 인식할 수 있도록 설정 작업이 선행되어야 합니다. JDBC 방식은, 플랫폼에서 기본으로 지원하는 데이터베이스 종류는 oracle, MS-SQL, My SQL, Informix, DB2 이고 각각의 jdbc 드라이버를 라이브러리로 가지고 있습니다.

*참고*

기본 데이터베이스 생성 스크립트는 기술지원팀을 통하여 전달받아야 합니다.

로컬 디플로이, 실행

이클립스 IDE는 로컬에서 WAS 를 연동할 수 있도록 WTP(Web Tools Platform) 기능을 제공하는데, Manifest 페이지를 통하여 서버를 등록, 실행할 수 있습니다. 해당 기능을 이용하여 이클립스에 로컬 개발 PC에 설치된 WAS를 연결시키는 방법은 다음과 같습니다. Tomcat 7.x 버전을 예로 합니다.

  • Server Manifest Editor를 열고 실행 / 배포 그룹에서 프로젝트 실행하기 링크를 클릭 합니다.

image186

그림 4.3-1 실행 메뉴(1)

  • 다른 방법으로, Project Explorer에서 실행하려는 MSP Server 프로젝트를 선택하고 도구 상단 image187 Run 메뉴 옆에 세모 버튼을 누르면 아래 그림과 같은 드롭다운 메뉴가 나타납니다.

image188

그림 4.3-2 실행 메뉴(2)

Run As메뉴에서 Run on Server를 선택합니다. 만약 프로젝트에 지정된 웹 컨테이너가 없다면 아래 그림과 같은 웹 컨테이너 지정 대화상자가 나타납니다.

image189

그림 4.3-3 웹 컨테이너 지정

설치된 웹 컨테이너가 없을 경우 설치하려는 웹 컨테이너를 선택 후 경로를 지정해 주고 Finish 버튼을 누르면 설정된 웹 컨테이너 위에서 프로젝트가 실행 됩니다.

다른 방법으로, 아래 그림과 같이 이클립스 하단 Servers 뷰를 통하여 웹 컨테이너를 추가할 수 있습니다.

image190

그림 4.3-4 로컬 서버 등록 메뉴

이클립스 UI 하단 Servers 뷰 탭을 선택하고 마우스 오른 클릭 > Server 를 선택합니다.

image191

그림 4.3-5 로컬 서버 등록 다이얼로그(1)

New Server 다이얼로그에서 server type 을 Tomcat v7.0 server로 선택한 후 ‘Next’ 버튼을 클릭합니다.

image192

그림 4.3-6 로컬 서버 등록 다이얼로그(2)

New Server 다이얼로그의 두 번째 페이지에서 Browse 버튼을 눌러 로컬에 설치된 톰캣 폴더를 지정해 주거나 ‘Download and install’ 버튼을 눌러 톰캣 바이너리 파일을 다운로드 받아 설치할 수 있습니다. ‘Next’ 버튼을 눌러 생성된 프로젝트를 톰캣에 마운트 시키거나 ‘Finish’ 버튼을 눌러 서버 추가 작업을 마무리 할 수 있습니다.

image193

그림 4.3-7 로컬 서버 실행 콘솔 로그

서버가 정상적으로 기동하면 위 그림과 같이 이클립스 UI 하단 Console 뷰 탭에 서버에서 출력하는 로그가 보입니다.

image194

그림 4.3-8 로컬 서버 연결 확인

또한, 위 그림과 같이 Servers 뷰 탭에 추가한 서버와 마운트 된 프로젝트를 확인할 수 있습니다.

서비스 구현

MSP IDE에서 지원하는 프로토콜 별 구현 예제와 흐름을 보여줍니다. IDE 툴을 이용하여 기본 코드를 생성하고 커스터마이징 영역은 생성된 코드에 개발자가 더하는 방식을 기본 방향으로 합니다.

HTTP 연동

샘플 http 레거시 서버에 대하여 연동을 수행합니다. 생성된 프로젝트에서 루트 폴더 하위에 있는 dashboard.xml 파일을 더블 클릭하거나 마우스 오른 클릭 > Open With > Legacy Dashboard Editor를 선택하여 대쉬보드를 엽니다.

image195

그림 4.4.1-1 대쉬보드 진입 메뉴

image196

그림 4.4.1-2 http 레거시 서버 생성

대쉬보드 우측 팔레트에서 Http Server 를 선택하여 캔버스 영역으로 드래그 앤 드랍하여 추가합니다. 레거시 Http 서버 정보 입력 다이얼로그에 접속하고자 하는 샘플 http 서버 정보를 입력합니다. 여기에서는 공개된 xml 응답 형식의 예제 사이트를 연동합니다.

  • Name: xml_sample

  • Host: www.w3schools.com

레거시 서버 노드가 추가되었으면 레거시 http API를 추가합니다.

image197

그림 4.4.1-3 http API 생성

대쉬보드 우측 팔레트에서 Http API를 선택하여 앞서 생성한 xml_sample 레거시 서버에 드래그 앤 드랍하여 추가합니다. 레거시 http API 다이얼로그에 다음과 같이 레거시 API 정보를 입력합니다.

  • API Name: xml_sample_api

  • Legacy Group: group1

  • URI: /xml/simple.xml

  • Method: GET

  • Type: xml

image198

그림 4.4.1-4 http API 정보 입력

Legacy Http API 다이얼로그에서 하단의 Request Parameter 탭을 선택한 후, ‘추가하기’버튼을 클릭하여 테스트 파라메터를 입력합니다.

  • Name: test

  • Type: String

  • Value: test

  • Description: 테스트 파라메터

image199

그림 4.4.1-5 http API 시뮬레이팅 실행

Legacy Http API 다이얼로그 좌측 하단의 open simulator image200 아이콘을 클릭하여 우측의 시뮬레이터 UI를 펼칩니다. 그리고 시뮬레이터 우측 상단의 시뮬레이팅 실행 image201 버튼을 클릭하여 입력한 url에 대하여 연동을 실행합니다.

image202

그림 4.4.1-6 http 시뮬레이팅 연동 결과 추출(1)

레거시 서버의 응답 xml은 시뮬레이터 UI 좌측 Text 영역에 Full Text로 표시되어지며, Tree영역에 DOM 트리화되어 보여집니다. 추출할 항목은 name, price, description, calories 엘레멘트의 하위의 텍스트 노드입니다. food 엘레멘트가 반복되는 구조이므로 Tree 영역에서 food 노드를 선택한 후 UI 우측 Extract 영역으로 드래그 앤 드랍합니다. Type을 선택하는 다이얼로그에서 ‘리스트로 사용합니다’를 선택합니다. 그러면 Extract 영역에 food 엘레멘트가 리스트형 추출 규칙으로 등록된 것을 확인할 수 있습니다.

image203

그림 4.4.1-7 http 시뮬레이팅 연동 결과 추출(2)

다음으로, name 엘레멘트 하위의 text 노드를 선택하여 앞서 추출한 food 하위로 드래그 앤 드랍하여 추출합니다. 추출 노드명이 text라고 되어 있으므로 엘레멘트 명으로 바꿀 필요가 있습니다.

image204

그림 4.4.1-8 http 시뮬레이팅 연동 결과 추출(3)

Extract 영역의 추출 결과 트리에서 앞서 추출한 text 노드를 하나 선택하고 마우스 오른 클릭 > 수정하기를 선택합니다.

image205

그림 4.4.1-9 http 시뮬레이팅 연동 결과 추출(4)

Edit 창에서 이름을 name으로 바꿉니다. 같은 방식으로 price, description, calories 엘레멘트 하위의 text 노드도 추출하여 이름을 각각의 엘레멘트 명으로 바꾸어 줍니다.

image206

그림 4.4.1-10 http 시뮬레이팅 연동 결과 추출(5)

추출 노드의 이름을 모두 바꾸면 위 그림과 같이 보여집니다.

image207

그림 4.4.1-11 http 시뮬레이팅 연동 결과 적용

시뮬레이터 UI 우측 하단의 ‘적용하기’버튼을 클릭하여 추출 결과를 좌측 Extract Data 탭에 반영합니다. ‘OK’버튼을 눌러 API 등록 작업을 마칩니다.

image208

그림 4.4.1-12 컨트롤러 클래스 생성

등록한 레거시 서버와 API를 연동할 컨트롤러 클래스를 생성합니다. 대쉬보드 우측 팔레트 영역에서 ‘Controller Class’를 선택하여 캔버스 영역으로 드래그 앤 드랍합니다. 컨트롤러 생성 다이얼로그에 다음과 같이 입력합니다.

  • Package: com.example.controller

  • Name: HttpCont

컨트롤러 노드가 생성되면 자동적으로 에디터 영역에 해당 클래스의 파일이 열리게 됩니다. 자바 에디터에 직접 코딩하는 순서는 아니므로 열려진 에디터를 닫고 다시 대쉬보드 화면으로 돌아가 메소드를 추가합니다.

image209

그림 4.4.1-13 메소드 생성

대쉬보드 UI 우측 팔레트 영역에서 ‘Method’ 항목을 선택한 후 캔버스 영역의 앞서 생성한 HttpCont 노드로 드래그 앤 드랍하여 생성합니다.

image210

그림 4.4.1-14 메소드 기본 정보 입력

메소드 생성 다이얼로그에 기본 정보를 입력합니다.

  • Method Name: httptest

  • Http Method: ALL

  • Method Type: Legacy 연동

  • Description: Http XML 연동 테스트

image211

그림 4.4.1-15 메소드 연동 레거시 API 선택

메소드 생성 다이얼로그의 Method Config 탭에 앞서 생성한 xml_sample 서버와 xml_sample_api가 있는 것을 확인하였으면 ‘Next’ 버튼을 눌러 다음으로 진행합니다.

*참고*

Legacy 연동 타입의 메소드 생성 시 Method Config 탭에 보여지는 레거시 API 목록은 체크 박스를 선택하지 않아도 모든 목록이 생성 코드에 반영됩니다. 체크박스 선택은 삭제할 경우에 사용하는 기능입니다.

image212

그림 4.4.1-16 Request 파라메터 맵핑

파라메터 맵핑 다이얼로그에서 우측의 test 파라메터를 좌측 Client Parameter 영역으로 드래그 앤 드랍하여 맵핑 관계를 설정합니다. 이렇게 하면 단말에서 올라온 test 라는 이름의 파라메터를 레거시 http 서버에 다시 test 라는 파라메터 명으로 전달하게 됩니다.

image213

그림 4.4.1-17 Response 파라메터 맵핑

다음으로 Response Mapping 탭을 선택하여 우측의 레거시 응답 파라메터 영역에서 Import All image214버튼을 클릭하여 전체 파라메터를 단말 응답으로 맵핑합니다. ‘Finish’버튼을 누르면 메소드 생성이 마무리됩니다.

image215

그림 4.4.1-18 메소드 노드

생성된 메소드 노드는 위 그림과 같이 HttpCont 하위에 보여집니다. 생성한 메소드 노드를 더블 클릭하여 소스를 확인합니다.

image216

그림 4.4.1-19 http 연동 코드

생성된 메소드 내 레거시 연동 코드는 위와 같습니다. 기본적인 레거시 연동 및 파라메터 맵핑 코드는 생성되었으니 이 구조 위에 개발자가 커스터마이징을 실행할 수 있습니다. 요청 파라메터나 응답 파라메터 데이터 값 변조, 변경 등의 로직이나 기타 추가할 로직을 끼워 넣습니다.

image217

그림 4.4.1-20 로컬 서버에 프로젝트 마운트

생성된 단말 인터페이스가 제대로 동작하는지 확인하기 위해 IDE에 연결된 WAS를 기동합니다. 현재 프로젝트가 서버에 디플로이되어 있지 않다면, 이클립스 UI 하단 Servers 탭에서 서버 선택 후 마우스 오른 클릭 > Add and Remove 를 선택하여 현재 생성한 프로젝트를 로컬 서버에 디플로이합니다.

image218

그림 4.4.1-21 로컬 서버 기동

이클립스 UI 하단 Servers 탭에서 서버 선택 후 마우스 오른 클릭 > Start를 선택합니다.

image219

그림 4.4.1-22 http 연동 결과 확인

*http://localhost:8080/msp-gw-web/api/msp/sample/httptest?test=test* 형식의 url을 크롬 브라우저를 띄워 주소창에 입력하고 제대로 레거시 서버를 연동한 결과가 json 포맷으로 출력되는지 확인합니다.

*참고*

Json 포맷의 게이트웨이 서버 응답을 브라우저에서 확인할 때에는 크롬 브라우저를 사용할 것을 추천합니다. 인터넷 익스플로러 사용 시 파일로 인식되어 다운로드 과정이 진행되기 때문에 확인이 어렵습니다.

HTTP 인증

HTTP 프로토콜을 사용하는 레거시 서버에 연동 시 인증 구현이 필요한 경우가 있습니다. 현재 IDE 툴로 HTTP 인증을 지원하고 있지는 않습니다. 일반적인 방식인 쿠키를 이용한 세션 유지 형식의 인증을 사용할 경우, 시뮬레이팅은 쿠키 헤더를 세팅하는 방식으로 진행할 수 있습니다.

image220

그림 4.4.2-1 시뮬레이터 쿠키 헤더 세팅

쿠키값은 레거시 연동 방법에 따라 다를 수 있지만, 인증 성공 후 다음 번 리퀘스트 시 헤더값에 포함되어 요청되는 형식은 동일합니다. 위와 같이 시뮬레이터 다이얼로그의 Header Configuration 탭에 인증 성공 후 받은 쿠키 헤더를 세팅하여 인증된 요청을 보낼 수 있습니다. 쿠키값 확인은 레거시 연동규격을 통하여 확인하거나, 브라우저의 리퀘스트, 리스판스 전문을 확인할 수 있는 디버거툴을 이용하여 확인할 수 있습니다. 주로 사용되는 것으로 fiddler (*http://www.telerik.com/fiddler*)와

HTTP analyzer(*http://www.ieinspector.com/httpanalyzer/*)가 있습니다.

쿠키 인증 방식의 컨트롤러 메소드 구현 패턴은 아래와 같이 나타낼 수 있습니다.

image221

그림 4.4.2-2 쿠키 헤더 세팅 소스 샘플

플랫폼에서 제공하는 httpClientUtil을 사용하여 인증 후 받은 쿠키 헤더를 맵 형태로 넘겨서 인증된 요청을 보내는 것이 가능합니다. 단, 인증 쿠키값을 얻어오기 위해 이에 앞서 레거시 로그인 페이지나 API로 연동하여 인증 쿠키를 얻어오는 로직이 구현되어야 합니다.

SOAP 방식의 웹서비스를 사용할 경우 사용되는 NTLM/AD 인증 방식은 현재 IDE 툴에서 지원하고 있지 않습니다. 컨트롤러 메소드 소스에서 httpClientUtil을 사용하여 구현 시, RequestConfig 설정값을 세팅하는 것으로 구현이 가능합니다. 플랫폼에서 제공하는 httpClientUtil은 apache http client 라이브러리에서 제공하는 CloseableHttpClient를 랩핑하고 있습니다. 구현 샘플은 아래 튜토리얼을 확인하시기 바랍니다.

*https://hc.apache.org/httpcomponents-client-4.5.x/ntlm.html*

Database 연동

샘플 데이터베이스 레거시 서버에 대하여 연동을 수행합니다. 생성된 프로젝트에서 루트 폴더 하위에 있는 dashboard.xml 파일을 더블 클릭하거나 마우스 오른 클릭 > Open With > Legacy Dashboard Editor를 선택하여 대쉬보드를 엽니다.

image222

그림 4.4.3-1 대쉬보드 진입 메뉴

image223

그림 4.4.3-2 레거시 Database 서버 생성

대쉬보드 우측 팔레트에서 Database Server 를 선택하여 캔버스 영역으로 드래그 앤 드랍하여 노드를 추가할 수 있습니다. Legacy Database Server 다이얼로그에서 JDBC 라디오 버튼을 선택하고 로컬에 설치되었거나 연동할 데이터베이스 정보를 입력합니다.

image224

그림 4.4.3-3 JDBC 접속 정보 입력

샘플에서 연동하는 데이터베이스는 Informix 서버입니다. 입력 내용은 다음과 같습니다.

접속 정보 입력 후 다이얼로그 좌측 하단의 연결 테스트 버튼 image225을 클릭하여 연결 확인을 할 수 있습니다.

*참고*

Informix 서버에 JDBC 연동 시 한글깨짐 현상 처리를 위해 jdbc url에 로케일 관련 옵션값을 붙입니다.

레거시 서버 노드가 추가되었으면 레거시 Database API를 추가합니다.

image226

그림 4.4.3-4 Database API 생성

대쉬보드 우측 팔레트에서 Database API를 선택하여 앞서 생성한 informix 레거시 서버에 드래그 앤 드랍하여 추가합니다. API 노드가 추가되면 위 그림과 같이 Database API 다이얼로그가 열립니다. 레거시 API 다이얼로그에 다음과 같이 레거시 API 정보를 입력합니다.

  • API Name: customerlist

  • Legacy Group: group1

*참고*

데이터베이스 서버, API 등록 시 서버명, API명, 그룹명에는 ‘.’, ‘_’ 등의 특수문자 사용을 하지 않아야 합니다. MyBatis SQL Map 네임스페이스에 이 값들이 포함되기 때문입니다.

image227

그림 4.4.3-5 쿼리 입력

다이얼로그 하단 좌측의 테이블 중 ‘customer’ 테이블을 선택하여 우측 에디터 영역으로 드래그 앤 드랍하여 SELECT 쿼리문을 생성합니다. 생성되는 쿼리문은 조건절 없이 해당 테이블의 전체 컬럼을 조회하는 형식입니다.

image228

그림 4.4.3-6 Database API 시뮬레이팅 실행

다음으로, 쿼리 실행 결과를 확인하기 위해 시뮬레이터 UI를 펼칩니다. Legacy API 다이얼로그 좌측 하단의 open simulator image229 아이콘을 클릭하여 우측의 시뮬레이터 UI를 펼칩니다. 그리고 시뮬레이터 우측 상단의 시뮬레이팅 실행 image230 버튼을 클릭하여 데이터베이스 조회를 실행합니다.

image231

그림 4.4.3-7 쿼리 수정

다시 Query 탭을 클릭하여 앞서 생성한 쿼리문에 조건절을 넣습니다. 전체 row 중 age 값에 대한 조건을 넣습니다. 수정한 쿼리는 다음과 같습니다.

SELECT ssn, name, acct, age FROM customer WHERE age < #{age}

image232

그림 4.4.3-8 DB 파라메터 입력

조건절의 #{age}에 맵핑할 파라메터를 입력합니다. ‘Parameter’ 탭을 선택하고 ‘추가하기’버튼을 누른 뒤 다음과 같이 입력합니다.

  • Name: age

  • Value: 25

  • Description: 나이

image233

그림 4.4.3-9 수정된 쿼리 시뮬레이팅

다시 시뮬레이팅 실행 image234 버튼을 클릭하여 조건절이 적용된 쿼리 실행 결과를 확인합니다. age값이 25보다 작은 row만 선택된 것을 확인할 수 있습니다. ‘OK’버튼을 눌러 API 생성을 마칩니다.

image235

그림 4.4.3-10 컨트롤러 클래스 생성

등록한 레거시 서버와 API를 연동할 컨트롤러 클래스를 생성합니다. 대쉬보드 우측 팔레트 영역에서 ‘Controller Class’를 선택하여 캔버스 영역으로 드래그 앤 드랍합니다. 컨트롤러 생성 다이얼로그에 다음과 같이 입력합니다.

  • Package: com.example.controller

  • Name: DatabaseCont

컨트롤러 노드가 생성되면 자동적으로 에디터 영역에 해당 클래스의 파일이 열리게 됩니다. 자바 에디터에 직접 코딩하는 순서는 아니므로 열려진 에디터를 닫고 다시 대쉬보드 화면으로 돌아가 메소드를 추가합니다.

image236

그림 4.4.3-11 메소드 생성

대쉬보드 UI 우측 팔레트 영역에서 ‘Method’ 항목을 선택한 후 캔버스 영역의 앞서 생성한 클래스 노드로 드래그 앤 드랍하여 생성합니다.

image237

그림 4.4.3-12 메소드 기본 정보 입력

메소드 생성 다이얼로그에 기본 정보를 입력합니다.

  • Method Name: dbtest

  • Http Method: ALL

  • Method Type: Legacy 연동

  • Description: 데이터 베이스 연동 테스트

image238

그림 4.4.3-13 메소드 연동 레거시 API 선택

메소드 생성 다이얼로그의 Method Config 탭에서 앞서 생성한 informix 서버와 customerlist API를 선택하고 ‘Next’ 버튼을 눌러 다음으로 진행합니다.

image239

그림 4.4.3-14 Request 파라메터 맵핑

파라메터 맵핑 다이얼로그에서 우측의 age 파라메터를 좌측 Client Parameter 영역으로 드래그 앤 드랍하여 맵핑 관계를 설정합니다. 이렇게 하면 단말에서 올라온 age 라는 이름의 파라메터를 DB 파라메터로 맵핑하여 쿼리를 실행하게 됩니다.

image240

그림 4.4.3-15 Response 파라메터 맵핑

Response Mapping 탭을 선택하여 우측의 레거시 응답 파라메터 영역에서 Import All image241버튼을 클릭하여 전체 파라메터를 단말 응답으로 맵핑합니다. ‘Finish’버튼을 누르면 메소드 생성이 마무리됩니다.

image242

그림 4.4.3-16 메소드 노드

생성된 메소드 노드는 위 그림과 같이 컨트롤러 하위에 dbtest라는 이름으로 보여집니다. 생성한 메소드 노드를 더블 클릭하여 소스를 확인합니다.

image243

그림 4.4.3-17 Database 연동 코드

생성된 메소드 내 레거시 연동 코드는 위와 같은 형태로 나타납니다. 기본적인 레거시 연동 및 파라메터 맵핑 코드는 생성되었으니 이 구조 위에 개발자가 커스터마이징을 실행할 수 있습니다.

image244

그림 4.4.3-18 로컬 서버에 프로젝트 마운트

생성된 단말 인터페이스가 제대로 동작하는지 확인하기 위해 IDE에 연결된 WAS를 기동합니다. 현재 프로젝트가 서버에 디플로이되어 있지 않다면, 이클립스 UI 하단 Servers 서버 선택 후 마우스 오른 클릭 > Add and Remove 를 선택하여 현재 생성한 프로젝트를 로컬 서버에 디플로이합니다.

image245

그림 4.4.3-19 로컬 서버 기동

이클립스 UI 하단 Servers 탭에서 서버 선택 후 마우스 오른 클릭 > Start를 선택합니다.

image246

그림 4.4.3-20 연동 결과 확인

*http://localhost:8080/msp-gw-web/api/msp/sample/dbtest?age=25* 형식의 url을 크롬 브라우저를 띄워 주소창에 입력하고 제대로 레거시 서버를 연동한 결과가 json 포맷으로 출력되는지 확인합니다. age 파라메터의 값을 30으로 바꾸면 조회된 목록이 더 늘어나는 것을 확인할 수 있습니다.

*참고*

Json 포맷의 게이트웨이 서버 응답을 브라우저에서 확인할 때 크롬 브라우저를 사용할 것을 추천합니다. 인터넷 익스플로러 사용 시 파일로 인식되어 다운로드 과정이 진행되기 때문에 확인이 어렵습니다.

EAI 연동

EAI 인터페이스에 대하여 연동하는 샘플을 만듭니다. 생성된 프로젝트에서 루트 폴더 하위에 있는 dashboard.xml 파일을 더블 클릭하거나 마우스 오른 클릭 > Open With > Legacy Dashboard Editor를 선택하여 대쉬보드를 엽니다.

image247

그림 4.4.4-1 대쉬보드 진입 메뉴

image248

그림 4.4.4-2 레거시 EAI 서버 생성

대쉬보드 우측 팔레트에서 EAI Server 를 선택하여 캔버스 영역으로 드래그 앤 드랍하여 EAI Server 노드를 추가합니다. EAI Server 노드는 eai 클라이언트 라이브러리와 그것을 이용하여 구현한 Wrapper 클래스를 서버로 지칭한 것입니다. EAI Server 다이얼로그에 정보를 입력합니다.

image249

그림 4.4.4-3 EAI 설정 정보 입력

설정 정보는 다음과 같습니다.

  • Name: eai_sample

  • Wrapper Class: com.example.service.SampleEaiWrapper

  • Parsing Type: index

Wrapper Class 추가 시 ‘Browse’ 버튼을 클릭하여 샘플로 제공되는 SampleEaiWrapper를 지정하거나 Wrapper Class 링크를 클릭하여 디폴트 구현체를 생성할 수 있습니다.

image250

그림 4.4.4-4 Wrapper 클래스 조회

위 그림과 같이 기 작성된 Wrapper 클래스를 검색하여 선택하거나

image251

그림 4.4.4-5 Wrapper 클래스 생성

ILegacyExecutor 인터페이스를 상속한 Wrapper 클래스를 생성합니다.

EAI Server 다이얼로그의 Library 절에서 ‘추가하기’ 버튼을 눌러 eai 클라이언트 라이브러리를 추가합니다.

image252

그림 4.4.4-6 eai 클라이언트 라이브러리 추가

임포트된 라이브러리는 프로젝트의 WEB-INF/lib 폴더로 복사되어 참조하여 코딩이 가능하게 됩니다.

image253

그림 4.4.4-7 공통 파라메터 등록(1)

Common Parameter 탭의 ‘추가하기’ 버튼을 눌러 공통 파라메터를 등록합니다. 공통 파라메터는 해당 EAI Server 하위에 존재하는 EAI API 에서 공통적으로 가져다 쓸 수 있는 파라메터 구조체입니다.

image254

그림 4.4.4-8 공통 파라메터 등록(2)

공통 파라메터 등록 다이얼로그에서 공통 파라메터명은 다음과 같이 입력하고,

  • Name: commonParam1

‘추가하기’ 버튼을 눌러 해당 공통 파라메터 하위에 존재하는 파라메터들을 다시 등록합니다.

  • Name: param1

  • Type: String

  • Value: 1234

  • Length: 4

  • Default Value: 1234

  • Description: 공통 파라메터1

형식으로 적당한 값을 입력합니다.

‘가져오기’ 버튼을 눌러 엑셀 파일로 된 레거시 연동규격을 불러올 수 있습니다.

image255

그림 4.4.4-9 공통 파라메터 엑셀 임포트

엑셀 파일 포맷은 테이블 컬럼 순서가 공통 파라메터 속성값과 같아야 합니다. 이 중 Name은 필수값이고, 인덱스 기반 파싱 방식일 경우 Length 속성값도 필수로 맞춰주어야 합니다.

image256

그림 4.4.4-10 EAI Server 다이얼로그 입력 종료

공통 파라메터 추가를 마쳤으면 EAI Server 다이얼로그 하단의 ‘OK’ 버튼을 클릭하여 설정을 마칩니다.

Wrapper 클래스에는 eai 클라이언트 라이브러리를 이용하여 구현된 기본 연동 코드가 들어갑니다. 샘플로 제공되는 com.example.service.SampleEaiWrapper.java 파일을 열어서 보면, configure, request, response 세 가지 메소드가 상속되어 있습니다.

image257

그림 4.4.4-10 EAI 샘플 Wrapper configure 메소드

Configure 메소드는 eai 클라이언트 라이브러리를 초기화하는 코드가 구현됩니다. 인자로 주어지는 configMap은 EAI Server 다이얼로그의 Configuration 탭에서 입력한 설정값이 전달됩니다.

image258

그림 4.4.4-11 EAI 샘플 Wrapper request 메소드

Request 메소드에는 비즈니스 로직에서 전달된 파라메터를 받아 연동을 수행하는 코드가 구현됩니다. 그리고 연동 결과를 클래스 내 전역 변수로 저장하여 다음 번 수행될 response 메소드로 전달합니다.

image259

그림 4.4.4-12 EAI 샘플 Wrapper response 메소드

Response 메소드는 스트링 타입의 레거시 응답을 리턴하는 역할을 합니다. 샘플 소스에는 가상의 EAI 클래스에 고정된 스트링을 전달하여 타임 스탬프를 더하여 응답해주는 간단한 예제가 포함되어 있습니다. 플랫폼에서는 지정된 Wrapper 클래스를 configure > request > response 순으로 호출하고 response 로 응답받은 스트링을 파싱하여 데이터를 파라메터에 맵핑시키는 동작을 합니다. Wrapper 클래스에 대하여 기본 로직 구현을 하였으면, 레거시 API를 등록합니다.

image260

그림 4.4.4-13 EAI API 생성

대쉬보드 우측 팔레트에서 EAI API를 선택하여 앞서 생성한 eai_sample 레거시 서버에 드래그 앤 드랍하여 추가합니다. API 노드가 추가되면 위 그림과 같이 EAI API 다이얼로그가 열립니다. 레거시 API 다이얼로그에 다음과 같이 정보를 입력합니다.

  • API Name: eai_api1

  • Legacy Group: group2

다음으로 ‘Request Parameter’탭을 선택하여 Wrapper 클래스의 request 메소드로 전달할 파라메터를 세팅합니다.

image261

그림 4.4.4-14 리퀘스트 파라메터 입력

‘Request Parameter’ 탭의 ‘추가하기’ 버튼을 눌러 파라메터 정보를 입력합니다.

  • Name: req1

  • Type: String

  • Value: 567

  • Length: 3

  • Default Value: 567

  • Description: 요청 파라메터1

파라메터 입력 다이얼로그에서 ‘OK’버튼을 눌러 종료하고 다시 ‘가져오기’ 버튼을 눌러 앞서 등록했던 공통 파라메터를 임포트합니다.

image262

그림 4.4.4-15 request 공통 파라메터 가져오기

Import Legacy Parameter 다이얼로그의 Import Option 절에서 ‘Common Parameter’라디오 버튼을 선택하면 등록하였던 공통 파라메터 목록을 확인할 수 있습니다. 수동으로 입력했었던 commonParam1을 선택하고 ‘Finish’버튼을 눌러 가져옵니다.

image263

그림 4.4.4-16 response 공통 파라메터 가져오기

다음으로 ‘Response Parameter’탭을 선택하고 ‘가져오기’버튼을 눌러 앞서 엑셀에서 임포트하였던 CDATM_COMM 이라는 이름의 공통 파라메터를 가져옵니다. 그리고 추가로 응답 파라메터를 엑셀 포맷에서 가져옵니다. ‘가져오기’버튼을 누른 후, Import Legacy Parameter 다이얼로그에서 Import Option을 ‘Excel’로 선택한 뒤 응답 파라메터 레거시 규격이 정의된 엑셀 파일을 선택합니다.

image264

그림 4.4.4-17 response 파라메터 엑셀 가져오기

임의로 작성한 응답 규격은 CDATM_COMM 공통 파라메터를 응답의 시작 60 바이트 길이만큼 차지하고 나머지 파라메터를 넣었습니다. 엑셀 컬럼 목록 중 공통 파라메터 항목을 제외한 응답 파라메터들을 전체 선택하고 ‘Finish’ 버튼을 눌러 Response Parameter 탭에 보이는 테이블 영역에 추가합니다.

image265

그림 4.4.4-18 EAI API 시뮬레이팅 실행

시뮬레이팅을 실행하기 위해 시뮬레이터 UI를 펼칩니다. Legacy API 다이얼로그 좌측 하단의 open simulator image266 아이콘을 클릭하여 우측의 시뮬레이터 UI를 펼칩니다. 그리고 시뮬레이터 우측 상단의 시뮬레이팅 실행 image267 버튼을 클릭하여 지정한 Wrapper 클래스를 이용한 연동을 실행합니다. 시뮬레이팅 결과는 위 그림과 같이 SampleEaiWrapper 클래스의 response 메소드에서 응답한 스트링을 등록한 Response Parameter 들의 length 만큼 잘라서 각각 맵핑해 줍니다. 빨간색으로 보이는 영역은 응답 스트링 길이가 모자라서 맵핑되지 않은 파라메터들 입니다.

image268

그림 4.4.4-19 시뮬레이팅 결과 적용

시뮬레이터 UI 우측 하단의 ‘적용하기’버튼을 눌러 현재 규칙을 Response Parameter 탭에 적용하고 ‘OK’버튼을 눌러 API 등록을 마칩니다.

image269

그림 4.4.4-20 컨트롤러 클래스 생성

등록한 레거시 EAI 서버와 API를 연동할 컨트롤러 클래스를 생성합니다. 대쉬보드 우측 팔레트 영역에서 ‘Controller Class’를 선택하여 캔버스 영역으로 드래그 앤 드랍합니다.

image270

그림 4.4.4-21 컨트롤러 클래스 생성 다이얼로그

컨트롤러 생성 다이얼로그에 다음과 같이 입력합니다.

  • Package: com.example.controller

  • Name: EaiCont

컨트롤러 노드가 생성되면 자동적으로 에디터 영역에 해당 클래스의 파일이 열리게 됩니다. 자바 에디터에 직접 코딩하는 순서는 아니므로 열려진 에디터를 닫고 다시 대쉬보드 화면으로 돌아가 메소드를 추가합니다.

image271

그림 4.4.4-22 메소드 생성

대쉬보드 UI 우측 팔레트 영역에서 ‘Method’ 항목을 선택한 후 캔버스 영역의 앞서 생성한 클래스 노드로 드래그 앤 드랍하여 Method 노드를 생성합니다.

image272

그림 4.4.4-23 메소드 기본 정보 입력

메소드 생성 다이얼로그에 기본 정보를 입력합니다.

  • Method Name: eaitest

  • Http Method: ALL

  • Method Type: Legacy 연동

  • Description: 샘플 EAI 연동 테스트

image273

그림 4.4.4-24 메소드 연동 레거시 API 선택

메소드 생성 다이얼로그의 Method Config 탭에서 앞서 생성한 eai_sample 서버와 eai_api1 API를 선택하고 ‘Next’ 버튼을 눌러 다음으로 진행합니다.

image274

그림 4.4.4-25 Request 파라메터 맵핑

파라메터 맵핑 다이얼로그에서 우측의 레거시 req1 파라메터를 좌측 Client Parameter 영역으로 드래그 앤 드랍하여 맵핑 관계를 설정합니다. 그리고 맵핑 설정된 클라이언트 리퀘스트 파라메터의 이름을 변경하기 위해 Client Parameter 영역의 req1 파라메터를 더블 클릭하거나 req1 파라메터를 선택한 상태에서 상단 메뉴바의 수정하기 image275 아이콘을 클릭하여 파라메터 다이얼로그를 띄웁니다.

image276

그림 4.4.4-26 Request 파라메터 수정

Client Parameter 다이얼로그에서 변수명에 맵핑되는 Name과 Http 파라메터 명에 맵핑되는 Http Name을 다음과 같이 바꿉니다.

  • Name: test

  • HTTP Name: test

image277

그림 4.4.4-27 Response 파라메터 맵핑

다음으로 Response Mapping 탭을 선택하여 우측의 레거시 응답 파라메터 영역에서 Import All image278버튼을 클릭하여 전체 파라메터를 단말 응답으로 맵핑합니다. ‘Finish’버튼을 누르면 메소드 생성이 마무리됩니다.

image279

그림 4.4.4-28 메소드 노드

생성된 메소드 노드는 위 그림과 같이 컨트롤러 하위에 eaitest라는 이름으로 보여집니다. 생성한 메소드 노드를 더블 클릭하여 소스를 확인합니다.

image280

그림 4.4.4-29 EAI 연동 코드

생성된 메소드 내 레거시 연동 코드는 위와 같은 형태로 나타납니다. 기본적인 레거시 연동 및 파라메터 맵핑 코드는 생성되었으니 이 구조 위에 개발자가 커스터마이징을 실행할 수 있습니다.

image281

그림 4.4.4-30 로컬 서버에 프로젝트 마운트

생성된 단말 인터페이스가 제대로 동작하는지 확인하기 위해 IDE에 연결된 WAS를 기동합니다. 현재 프로젝트가 서버에 디플로이되어 있지 않다면, 이클립스 UI 하단 Servers 서버 선택 후 마우스 오른 클릭 > Add and Remove 를 선택하여 현재 생성한 프로젝트를 로컬 서버에 디플로이합니다.

image282

그림 4.4.4-31 로컬 서버 기동

이클립스 UI 하단 Servers 탭에서 서버 선택 후 마우스 오른 클릭 > Start를 선택합니다.

image283

그림 4.4.4-32 연동 결과 확인

*http://localhost:8080/msp-gw-web/api/msp/sample/eaitest?test=567* 형식의 url을 크롬 브라우저를 띄워 주소창에 입력하고 제대로 레거시 서버를 연동한 결과가 json 포맷으로 출력되는지 확인합니다.

*참고*

Json 포맷의 스트링은 키 값의 순서가 중요하지 않습니다. 랜덤한 순서로 단말 응답 키 값이 세팅되는 것이 보통인데, 만약 순서를 유지하고 싶다면 메소드 코드의 단말 응답에 대응되는 맵 구조체를 초기화할 때 HashMap 이 아니라 LinkedHashMap 으로 생성하도록 수정하면 됩니다.

예) Map<String,Object> responseBodyMap = new LinkedHashMap<String,Object>();

EAI PROXY 설정

EAI 인터페이스에 대하여 연동 시 개발 PC에서 직접 시뮬레이팅 및 연동을 하지 못할 경우 프록시 서버를 이용하여 개발 PC에서 연동 및 개발이 가능토록 하기 위한 기능이 EAI Proxy 설정 기능입니다.

image284

그림 4.4.5-1 EAI Proxy 동작 흐름

실제 EAI 인터페이스와 연동을 수행하는 프록시 서버는 Proxy 컨트롤러와 eai 클라이언트 라이브러리, Wrapper 클래스를 가지고 있습니다. 프록시 서버는 EAI 인터페이스와 연동이 가능한 같은 망 안에 존재해야 합니다. 그리고 프록시 서버에 대한 접속 url을 개발자 PC에서 EAI 서버 등록 시 입력하고 시뮬레이팅 및 연동 시 개발자 PC와 프록시 서버는 json 포맷으로 요청 및 응답 데이터를 통신하는 형식입니다. 프록시 서버와 로컬 개발자 PC에 설정되어야 하는 정보는 다음과 같습니다.

필요 리소스

설명

Proxy Server (MSP Mobile Server)

Proxy 컨트롤러

JSON 통신 인터페이스

Wrapper

EAI 클라이언트 라이브러리를 이용하여 연동 기본 로직이 구현된 클래스

EAI 클라이언트 라이브러리

EAI 인터페이스와 통신하기 위한 클라이언트 라이브러리

EAI Server 노드

IDE 대쉬보드 상에서 생성한 위 Wrapper, eai 라이브러리를 참조하는 서버 노드

개발자 PC (MSP IDE)

Wrapper

프록시 서버에 적용된 것과 동일하게 구현된 Wrapper 클래스

EAI 클라이언트 라이브러리

프록시 서버에 적용된 것과 동일한 라이브러리. 로컬 PC에서 직접 연동을 수행하지 않지만 Wrapper 클래스 메소드에서 참조하므로 필요함.

EAI 서버 노드

IDE 대쉬보드 상에서 생성한 EAI 서버 노드. 프록시 서버 적용 버전과 다른 것은, 프록시 서버에 대한 url 정보를 가지고 있음.

EAI API

IDE 대쉬보드 상에서 작성한 API.

앞서 작성하였던 EAI 샘플을 응용하여 proxy 기능을 테스트합니다. 먼저, 프록시 서버로 올릴 컨트롤러 클래스를 생성합니다.

image285

그림 4.4.5-2 EAI Proxy 컨트롤러 생성

대쉬보드 상에서 컨트롤러 클래스를 생성하고 아래와 같이 입력합니다.

  • Package: com.example.controller

  • Name: EaiProxy

그리고 생성된 컨트롤러 클래스 하위에 대쉬보드 상에서 메소드를 추가합니다.

image286

그림 4.4.5-3 EAI Proxy 컨트롤러 메소드 생성

메소드 생성 다이얼로그에 설정하는 값은 다음과 같습니다.

  • Method Name: doproxy

  • Method Type: Basic

  • Method Config: EAI Proxy

‘Finish’ 버튼을 누르면 프록시 기능을 수행하는 소스가 생성됩니다. 앞선 예제에서 EAI Wrapper와 EAI Server를 등록하였으므로 그 절차는 생략합니다. Wrapper, eai 라이브러리, EAI 서버, 프록시 컨트롤러를 포함하는 서버 프로젝트를 프록시 기능을 수행할 WAS에 배포하여 프록시 서버 설정을 합니다. 본 예제에서는 로컬 서버에 디플로이하여 진행합니다. 로컬 서버를 기동한 후, 대쉬보드에서 EAI Server 다이얼로그를 열어 생성한 프록시 컨트롤러의 접속 url을 입력합니다.

image287

그림 4.4.5-4 EAI Server 다이얼로그 proxy url 입력

EAI Server 다이얼로그 하단의 Proxy Url 체크박스를 체크하여 활성화 시킨 후, url을 입력합니다. url은 다음과 같은 형식이 됩니다.

*http://127.0.0.1:8080/msp-gw-web/proxy/doproxy*

‘OK’버튼을 누르고 종료하면 proxy 설정이 완료됩니다.

EAI API 시뮬레이팅을 해보면 로컬 프록시 서버가 기동되고 있으면 정상적으로 시뮬레이팅이 동작하지만, 서버를 중지시키고 시뮬레이팅을 하면 오류가 발생하는 것을 확인할 수 있습니다.

image288

그림 4.4.5-5 EAI proxy 연동 실패

EAI Server 노드에 설정된 프록시 url로 시뮬레이팅 요청을 보내므로 프록시 서버가 기동하고 있지 않으면 오류가 생기는 것입니다.

*참고*

Proxy 로직은 실제 로컬 서버 상에 디플로이하여 동작할 때에는 적용되지 않고 무시됩니다. Proxy url을 자신의 아이피로 설정하였을 경우 루프 방지를 위해서 입니다.

소스 코드 수정 및 반영

생성된 컨트롤러 소스를 수정하여 대쉬보드 모델로 반영하거나 대쉬보드 컨트롤러에서 수정한 내용이 소스로 반영되는 예제를 포함합니다.

image289

그림 4.5-1 메소드 수정 메뉴

메소드 수정은 대쉬보드에서 메소드 노드 선택 후 마우스 오른 클릭 > Edit 메뉴를 선택하여 할 수 있습니다. 메소드 수정 다이얼로그에서 지원하는 동작은 다음과 같습니다.

동작

범위

메소드 명 수정

메소드명과 RequestMapping url이 변경됩니다.

Http Method 수정

Request Mapping 어노테이션의 method 값이 변경됩니다.

레거시 API

다이어그램 모델을 기준으로 매칭되는 레거시 API 호출 로직을 변경합니다. HTTP 요청 시 GET 방식으로 호출하던 것을 POST로 변경하였거나 DB 연동 시 인자를 전달하다가 뺐거나 반대로 인자가 없다가 새로 넣었을 경우 호출 메소드 형태가 변경됩니다.

클라이언트 Request 파라메터 수정

MSP 플랫폼에서 제공하는 기본 파라메터 파싱 루틴에 사용되는 reqBodyMap 변수를 참조하는 로직을 다이어그램 모델 기준으로 업데이트합니다.

클라이언트 Request 파라메터 맵핑관계 수정

인식된 레거시 API 코드에 인자로 주어지는 Map 변수에 세팅되는 클라이언트 Request 파라메터가 변경됩니다.

클라이언트 Response 파라메터 수정

MSP 플랫폼에서 제공하는 기본 응답 세팅 루틴에 사용되는 responseBodyMap 변수에 세팅되는 로직이 변경됩니다.

클라이언트 Response 파라메터 맵핑관계 수정

인식된 레거시 API 코드의 리턴값을 참조하여 클라이언트 Response 파라메터와 연관관계가 있는 로직을 변경합니다.

위와 같은 규칙으로 소스 코드에 수정 내역이 반영됩니다.

image290

그림 4.5-2 메소드 수정 다이얼로그

메소드 수정 다이얼로그에서는 메소드명과 Http Method, Description 정보를 수정할 수 있습니다. ‘Finish’버튼을 누르면 수정 내역이 바로 반영되고, ‘Next’버튼을 누르면 파라메터 맵핑 설정을 바꿀 수 있는 단계로 넘어갑니다.

image291

그림 4.5-3 파라메터 맵핑 수정

파라메터 맵핑 정보 수정 단계에서는 클라이언트 파라메터와 레거시 파라메터 간의 맵핑 관계, 클라이언트 파라메터 추가 및 삭제, 클라이언트 파라메터에 대한 설정값을 수정하는 것이 가능합니다.

image292

그림 4.5-4 소스 변경 확인창

파라메터 맵핑 정보가 수정되었거나 어노테이션을 포함한 메소드 내부 코드에 영향을 줄 수 있는 부분이 변경되면, 다이얼로그 종료 시 변경된 내역을 소스에 적용할 것인지 묻는 confirm 창이 나타납니다. 파라메터명이 변경되었거나 파라메터를 삭제하였을 경우 개발자가 소스에 직접 커스터마이징한 영역이 누실될 수 있기 때문입니다.

*참고*

자바 클래스 파일의 백업 기능은 현재 지원하지 않습니다. 다이어그램에서 수정 수행 후 코드를 복원하고 싶을 경우, 자바 에디터에서 클래스 파일을 연 뒤 Ctrl+Z (되돌리기) 단축키로 복원할 수 있습니다. 다른 방법으로, 이클립스 UI 좌측 익스플로러에서 클래스 선택 후 마우스 오른 클릭 > Team > Show Local History를 선택하여 이전 수정했던 시점으로 돌릴 수 있습니다.

메소드 소스 중 다이어그램 메소드 모델로 해석되어 적용되는 규칙은 다음과 같습니다.

구분

규칙

메소드 명 수정

기존 메소드 노드가 삭제되고 신규 메소드 노드가 생성됩니다.

레거시 API

소스에는 직접 코딩하였으나 다이어그램 상에 레거시 API 노드로 존재하지 않는 영역은 해석되지 않습니다.

또한, MSP 플랫폼에서 제공하는 클래스를 이용한 연동 로직만 인식합니다. 예를 들어, http 타입의 경우 HttpClientUtil을 이용하여 연동을 하고 ExtractorFactory.getParser().extract() 메소드를 이용하여 응답 추출을 한 코드 영역만 인식합니다.

DB 타입의 경우 sqlSession.selectList() 메소드를 이용한 로직을 인식합니다.

EAI 타입의 경우 LegacyExecutor 클래스를 사용하여 LegacyExecutor.execute() 후 LegacyExecutor.parse()를 호출한 로직을 인식합니다.

클라이언트 Request 파라메터

MSP 플랫폼에서 제공하는 기본 파라메터 파싱 루틴에 사용되는 reqBodyMap 변수에서 가져오는 변수만 인식합니다.

Request 파라메터 맵핑관계

인식된 레거시 API에 인자로 주어지는 변수와 연관되어 있는 클라이언트 Request 파라메터를 인식하여 맵핑 관계로 설정합니다.

클라이언트 Response 파라메터

MSP 플랫폼에서 제공하는 기본 응답 파라메터 세팅 루틴에 사용되는 responseBodyMap 변수에 세팅하는 값만 인식합니다.

Response 파라메터 맵핑관계

인식된 레거시 API의 리턴값과 클라이언트 Response 파라메터의 연관관계로 인식합니다.

소스 코드에서 커스터마이징을 한 후 수정 내역을 다시 대쉬보드 모델에 인식시키는 동작은 제한적입니다. 위의 표에 설명된 바와 같이 기존 대쉬보드에 존재하였던 정보를 기준으로 하고, 클라이언트 파라메터와 같이 추가될 수 있는 코드들은 특정한 변수명에 참조되는 것들만 인식합니다. 그 외에 레거시 연동과 직접적으로 관련이 없는 커스터마이징된 코드는 인식하지 않습니다.

앞서 예제에서 작성하였던 HttpCont 컨트롤러 하위의 httptest 메소드에 다음과 같이 클라이언트 리퀘스트 파라메터를 직접 소스 상에 작성하여 추가합니다.

// 대쉬보드에서 생성한 코드

String test = (String)reqBodyMap.get(“test”);

// 새로 넣은 코드

String test1 = (String)reqBodyMap.get(“test1”);

String test2 = (String)reqBodyMap.get(“test2”);

try {

String httpCalUrl = “http://www.w3schools.com/xml/simple.xml”;

// “&test1=”+test1+”&test2=”+test2 부분 추가

httpCalUrl += “?test=”+test+“&test1=”+test1+“&test2=”+test2;

클라이언트 리퀘스트 파라메터에 test1, test2를 추가하고 레거시 서버로 넘기는 GET 파라메터인 url 쿼리에 test1, test2 맵핑 로직을 직접 코딩하였습니다. 이 경우, 대쉬보드 모델로 반영될 수 있는 것은 reqBodyMap 단말 리퀘스트 맵 객체를 참조하는 test1, test2 파라메터가 추가되었다는 것뿐입니다.

image293

그림 4.5-5 모델 업데이트 메뉴

수정된 소스를 저장하고 대쉬보드를 열어 HttpCont 노드를 선택 후 마우스 오른 클릭 > 업데이트 메뉴를 선택하여 메소드 모델 업데이트를 실행합니다.

image294

그림 4.5-6 모델 업데이트 확인

모델에 반영된 내역을 확인하기 위해 httptest 메소드 노드 선택 후 > 마우스 오른 클릭 > Edit 로 다이얼로그 창을 열고 ‘Next’버튼을 눌러 Request Mapping 에 test1, test2 파라메터가 추가된 것을 볼 수 있습니다. 하지만, 기존 xml_sample_api 레거시 Http API에는 test1, test2에 해당하는 요청 파라메터가 등록되어 있지 않았으므로 레거시 파라메터와의 맵핑관계는 무시되었습니다. 대쉬보드 상에서 xml_sample_api 노드를 더블 클릭하여 test1, test2 노드를 추가합니다.

image295

그림 4.5-7 레거시 API 파라메터 추가

위와 같이 Request Parameter에 test1, test2를 추가하고 저장한 후에 다시 대쉬보드 상의 HttpCont 클래스 노드를 선택하고 마우스 오른 클릭 > 업데이트를 실행합니다.

image296

그림 4.5-8 레거시 API 파라메터 맵핑 확인

그리고 다시 httptest 메소드 노드 선택 후 마우스 오른 클릭 > Edit 를 선택하여 다이얼로그를 열고 파라메터 맵핑 단계로 넘어가보면 test1, test2 파라메터가 레거시 API에 추가된 파라메터와 정상적으로 맵핑 관계가 형성된 것을 확인할 수 있습니다.

디버깅

이클립스는 Breakpoint 지정을 통한 디버깅 기능을 지원합니다. MSP 서버 프로젝트는 로컬 서버에 마운트 시킨 후 디버그 모드로 서버를 기동시켜 디버깅을 할 수 있습니다.

image297

그림 4.6-1 중단점 지정

소스 에디터의 좌측 영역을 더블 클릭하여 중단점을 넣거나 다시 더블 클릭하여 뺄 수 있습니다.

image298

그림 4.6-2 Manifest 에디터 디버깅 링크

그리고 로컬 서버를 추가한 상태에서 Manifest 에디터의 ‘프로젝트 디버깅하기’ 링크를 클릭하거나

image299

그림 4.6-3 로컬 서버 디버그 모드 기동

이클립스 UI 하단 Servers 탭에서 서버 선택 후 마우스 오른 클릭 > Debug 를 선택하여 디버그 모드로 서버를 기동합니다. 그리고 브라우저를 통하여 Breakpoint를 지정한 로직을 수행하는 url을 호출합니다.

image300

그림 4.6-4 디버그 화면 변경 확인창

해당하는 로직이 수행되면 위 그림과 같이 Debug Perspective로 변경할 것인지 묻는 confirm 창이 나타납니다. ‘Yes’를 선택하면 Debug Perspective로 변경됩니다.

image301

그림 4.6-5 디버그 Perspective

디버그 Perspective 는 하단 에디터 영역에서 코드의 어느 위치까지 진행된 상태인지 커서를 통하여 확인할 수 있고, 상단의 컨트롤 메뉴바를 통하여 한단계씩 코드 라인을 내려가던가 호출하는 메소드 안으로 진입하거나 현재 메소드를 벗어나는 등의 커서 이동을 할 수 있습니다. 그리고 UI 상단 우측의 Variables 탭을 통하여 현재 상황에서 코드 문맥 상 사용되는 변수들의 값을 확인할 수 있습니다.

작성한 단말 인터페이스가 제대로 동작하는지 호출해보기 위해 restclient나 postman 등의 POST 요청을 보낼 수 있는 툴이 필요합니다. 크롬 브라우저를 사용하고 있다면 주소창에 restclient나 postman을 입력하여 크롬 웹 스토어 페이지로 들어가 바로 앱을 다운로드 받아 실행시킬 수 있습니다.

image302

그림 4.6-6 REST client 앱 소개 페이지

image303

그림 4.6-7 Postman 앱 소개 페이지

MSP Mobile Gateway 서버와 단말은 POST 방식의 json 통신을 하므로 json 리퀘스트를 보낼 수 있는 클라이언트 툴을 사용하여 동작 테스트를 할 수 있습니다.

빌드 및 패키징

구현 작업을 어느 정도 완료한 후, 테스트 서버나 로컬 서버에 배포하기 위해 서버 프로젝트를 빌드 후 패키징하는 작업입니다. MSP IDE는 기본적으로 war 패키징 후 배포하는 방식을 취하고 있습니다.

image304

그림 4.7-1 프로젝트 빌드 세팅 메뉴

프로젝트 빌드 작업은 이클립스 IDE에서 자동으로 수행합니다. 라이브러리 설정을 바꾼다거나 빌드 오류가 생겼을 경우 이클립스 상단 메뉴의 Project > Clean 을 선택하여 빌드 과정을 다시 수행할 수 있습니다. 빌드 프로세스는 자동으로 설정해 놓는 것을 권장합니다. 이클립스 상단 메뉴의 Project > Build Automatically 항목이 선택되어 있으면 자동 빌드 설정이 되어 있는 것입니다.

MSP 서버 프로젝트는 Maven 폴더 구조로 되어 있습니다. 그래서 소스를 컴파일 및 빌드하려면 Maven 커맨드 라인 명령어를 입력해야 하는데, 해당 기능은 이클립스 maven 플러그인에서 프로젝트 빌드 시 자동으로 수행하므로 직접 수행할 필요는 없습니다.

image305

그림 4.7-2 Maven build 실행(1)

Maven 빌드 명령어를 직접 입력하고 싶으면 이클립스 UI 좌측 Project Explorer에서 프로젝트를 선택 후 마우스 오른 클릭 > Run As > Maven build를 선택하여 maven 명령어를 입력할 수 있는 다이얼로그를 엽니다.

image306

그림 4.7-3 Maven build 실행(2)

위와 같은 다이얼로그 상에서 Goals 란에 ‘clean compile’을 입력하고 하단의 ‘Run’ 버튼을 클릭하면 Maven 컴파일 동작을 수행할 수 있습니다.

패키징은 원격 서버에 업로드할 때나 프로젝트를 웹 컨테이너에서 인식가능한 형태로 묶을 때 사용할 수 있습니다. 이클립스에서 제공하는 기본 기능을 이용하여 WAR로 패키징하거나, MSP 기능으로 제공하는 Export 다이얼로그를 사용합니다.

Export 다이얼로그를 호출하기 위해 Server Manifest Editor를 열고 배포하기 그룹에서 WAR 파일로 배포하기 링크를 클릭합니다.

image307

그림 4.7-4 배포하기 링크

다른 방법으로, 상단 메뉴 중 File → Export를 선택하거나 이클립스 UI 좌측 Project Explorer에서 프로젝트 선택 후 마우스 오른 클릭 > Export > Export 를 선택하면 아래 그림과 같은 Export 대화상자가 나타납니다. Morpheus트리 하위의 MSP Project Export를 선택합니다.

image308

그림 4.7-5 Export 다이얼로그

Wizard 상단 Web Project 항목에서 내보내려는 프로젝트를 선택합니다. 프로젝트를 WAR 파일로 패키징하여 내보낼 경우 ‘File’타입으로 선택한 후 Destination 항목의 Browse 버튼을 눌러 내보낼 경로를 선택합니다.

image309

그림 4.7-6 MSP Project Export

이클립스에서 제공하는 Export 기능을 사용할 경우에는, 이클립스 UI 좌측 Project Explorer에서 패키징할 프로젝트를 선택 후, 마우스 오른 클릭 > Export > Export 를 선택하여 Export 다이얼로그를 띄웁니다.

image310

그림 4.7-7 기본 Export 다이얼로그(1)

Export 다이얼로그에서 원하는 패키징 포맷을 선택할 수 있습니다. Web > WAR file을 선택하고

‘Next’ 버튼을 누릅니다.

image311

그림 4.7-8 기본 Export 다이얼로그(2)

다음 화면에서 Destination 절의 ‘Browse’ 버튼을 눌러 원하는 위치를 설정하고 ‘Finish’버튼을 눌러 WAR 패키징을 할 수 있습니다.

배포

MSP IDE의 툴을 이용하여 작업한 프로젝트를 배포하는 방법을 설명합니다. 로컬 배포는 이클립스 기본 기능으로 이클립스와 연동되어 있는 로컬 테스트 서버에 디플로이가 가능합니다. MSP IDE는 원격 서버에 대한 FTP 업로드 기능과 단말연동규격 생성 기능을 제공합니다.

원격배포

MSP Export 위저드를 이용하여 WAR 패키징 후 원격 서버에 FTP 업로드를 할 수 있습니다. Export 다이얼로그를 호출하려면 Server Manifest Editor를 열고 실행/배포 그룹에서 WAR 파일로 배포하기 링크를 클릭합니다.

image312

그림 5.1-1 배포하기 링크

상단 메뉴 중 File → Export를 선택하거나 이클립스 UI 좌측 Project Explorer에서 프로젝트 선택 후 마우스 오른 클릭 > Export > Export 를 선택하면 아래 그림과 같은 Export 대화상자가 나타납니다. Morpheus트리 하위의 MSP Project Export를 선택합니다.

image313

그림 5.1-2 Export 다이얼로그

Export 위저드에서 Destination 그룹을 FTP로 선택합니다.

image314

그림 5.1-3 FTP 전송

업로드할 원격 서버의 FTP 접속 정보를 입력합니다. 입력 항목은 아래와 같습니다.

  • Host : 전송할 목적지의 IP를 입력합니다.

  • Port : 전송할 목적지의 Port를 입력합니다.

  • Protocol : FTP, SFTP 중 하나를 선택합니다.

  • 로그인 유형 : 일반, 익명 중 하나를 선택합니다.

  • 사용자 : FTP User Id를 입력합니다.

  • 비밀번호 : FTP 비밀번호를 입력합니다.

  • 목적지 경로 : FTP로 전송해 파일을 저장할 경로를 입력합니다.

‘Finish’ 버튼을 누르면 WAR 패키징 및 FTP 업로드 작업이 수행됩니다. 일반적으로 원격 서버 배포 시 웹 컨테이너의 Woring 디렉토리에 바로 업로드하지 않고 특정 폴더로 업로드한 뒤 서버단 스크립트를 통하여 서버 중지, 기존 리소스 삭제, 디플로이, 서버 기동의 동작을 다시 수행하게 합니다.

*참고*

WAR 배포 방식이 아니라 소스 업로드 후 컴파일 및 빌드를 원격 서버에서 실행하는 경우 별도의 빌드 스크립트가 필요할 수 있습니다. 빌드 스크립트 생성은 기술지원팀을 통하여 문의 후 전달받으시기 바랍니다.

단말연동규격 생성

MSP 플랫폼은 IDE 대쉬보드에서 생성한 단말 인터페이스에 대한 API 목록 및 규격을 확인할 수 있는 UI를 제공하고 있습니다. 서버 프로젝트를 배포한 WAS 서버의 url 경로를 다음과 같이 입력하여 단말연동규격 html 페이지에 접속할 수 있습니다.

*http://localhost:8080/msp-gw-web/document*

서버의 컨텍스트 경로 하위에 /document 경로를 붙여 접속합니다.

  • image315

  • 그림 5.2-1 API 목록

API 목록 페이지는 컨트롤러 클래스 하위에 작성한 단말 인터페이스 메소드 목록을 나열합니다. 목록 중 html view 링크를 클릭하면 html 형식의 상세 페이지로 이동되고, xml view 링크를 클릭하면 xml 포맷의 단말 인터페이스 상세 규격을 확인할 수 있습니다.

  • image316

  • 그림 5.2-2 API 상세 페이지

상세 페이지에서는 해당 단말 인터페이스의 요청, 응답 파라메터 규격과 샘플 데이터를 확인할 수 있습니다. 단말연동규격에 나타나는 Description 정보는 대쉬보드에서 입력한 Description 값을 보여줍니다.

기타

MSP IDE 관련 기타 정보를 설명합니다.

IDE 정보 확인

MSP IDE 정보를 확인하기 위해서는 다음 그림과 같이 이클립스 상단 Help 메뉴를 선택합니다.

image317

그림 6.1-1 정보확인 메뉴

  • Mac : Morpheus → Morpheus에 관하여

  • Window : Help → About MSP

위 그림과 같은 화면에서 IDE에 대한 상세 정보를 확인 할 수 있습니다.

image318

그림 6.1-2 IDE 정보확인

IDE 업데이트

IDE에 기능 업데이트가 필요한 경우 다음 그림과 같은 업데이트 알람이 나타납니다.

image319

그림 6.2-1 IDE 업데이트 알람

알람의 링크를 클릭하면 자동으로 업데이트가 되고 IDE 가 재시작 됩니다. IDE 실행 시 자동 업데이트 검사를 하지 않으려면 알람 하단의 ‘다음부터는 자동으로 업데이트를 하지 않습니다.’를 체크합니다.

MSP IDE 플러그인 배포 사이트로부터 업데이트를 받을 수 있습니다.

image320

그림 6.2-2 IDE 업데이트 메뉴

이클립스 상단 메뉴 Help > Install New Software 를 선택하고 인스톨 다이얼로그에서 모피어스 업데이트 사이트 url을 선택합니다.

image321

그림 6.2-3 IDE 업데이트 다이얼로그

Work with 란에서

MSP Update - *http://docs.morpheus.kr/ide/server/update/morpheus*

항목을 선택하여 플러그인을 다운로드 설치할 수 있습니다.

IDE 오류 처리

MSP IDE 사용 시 발생한 오류는 *www.morpheus.co.kr* 기술지원 게시판을 이용하여 문의 및 가이드를 받을 수 있습니다.

이클립스 코어 기능과 관련된 오류는 기술지원팀에 리포팅이 가능하게끔 다이얼로그가 나타납니다.

image322

그림 6.3-1 오류 리포트 확인 창

위와 같이 confirm 창이 나타나면 ‘OK’버튼을 눌러 리포트 다이얼로그를 띄웁니다.

image323

그림 6.3-2 오류 리포트 다이얼로그

리포트 다이얼로그에 이메일과 오류 내용을 기술하고 ‘OK’ 버튼을 누르면 기술지원팀으로 오류 보고가 됩니다.

IDE를 사용하여 생성한 프로젝트의 해당 업무 영역과 관련된 오류는 에러 메시지 창이 나타나게 됩니다.

image324

그림 6.3-3 오류 메시지 알림창

해당 오류 메시지와 상세 로그를 복사하여 기술지원팀에 오류 사항을 문의합니다.

*참고*

이클립스 로그 파일은 \workspace.metadata.log 에 위치합니다. 동작 오류 시 해당 파일을 첨부하여 기술지원팀에 문의하면 오류 분석에 도움이 됩니다.

서버 응답 코드 명세

MSP 서버 플랫폼에서 응답될 수 있는 기본 정의된 에러 코드는 다음과 같습니다.

코드

메시지

resources/config/message.properties 에 정의됨.

200

정상적으로 처리되었습니다.

204

클라이언트 요구를 처리했으나 전송할 데이타가 없습니다.

400

클라이언트의 잘못된 요청으로 처리 할 수 없습니다.

401

클라이언트 인증에 실패하였습니다.

405

리소스를 허용할 수 없습니다.

500

서버에서 오류가 발생하였습니다.

502

서버가 과부하 상태입니다.

503

서버가 일시적으로 다운되었습니다.

504

장시간 미사용으로 서버접속이 종료되었습니다.

595

서버 전문이 없거나 잘못 생성되었습니다.

596

응답데이타 형식오류가 발생하였습니다.

597

응답결과데이타가 존재하지 않습니다.

598

보안통신이 원활하지 않습니다.

599

보안프로그램 오류입니다.

900

서버에서 리소스 업데이트 오류가 발생하였습니다.

901

서버에서 리소스 암복화키 요청처리에 오류가 발생하였습니다.

902

서버에서 파일업로드 처리에 오류가 발생하였습니다.

903

서버에서 세션 강제 설정처리에 오류가 발생하였습니다.

904

서버에서 DUMMY를 가져오는데 오류가 발생하였습니다.

998

라이센스 제한범위 초과 오류가 발생하였습니다.

999

Exception Error

기본 데이터베이스 테이블 명세

MSP 플랫폼 실행에 필요한 기본 테이블 정보입니다. DB 버전에 따른 생성 스크립트와 테이블 정보는 기술지원팀에 문의 바랍니다.