GATEWAY V2.2 개발가이드¶
사 용 권 한
본 문서에 대한 서명은 ㈜유라클 내부에서 본 문서에 대하여 수행 및 유지관리의 책임이 있음을 인정하는 것임.
제.개정 이력
버전 |
변경일자 |
제.개정 내용 |
작성자 |
1.0 |
2014.03.18 |
최초작성 |
서버팀 |
개요
목적
본 문서는 모바일 하이브리드 서비스 앱 구축 프로젝트중 Mobile Server 개발을 위한 제반 사항을 기술한다.
고려사항
매뉴얼 변경 시에는 근거를 명시하고 버전 관리를 정확하게 수행
본 매뉴얼에 도식화 된 이미지는 모두 파워포인트 가로 문서로 첨부
시스템 구성
Morpheus Server Platform 구성도(H/W 구성)
아래 그림은 Morpheus Server Platform의 시스템 구성도를 도식화한 것이다.
H/W 에 대한 구성도 이다. DMZ 에는 보안을 위해 Relay Web Server 가 위치하고 내부망에는 WAS 및 DB, Storage 를 구성하여 소스 및 정보를 보호할 수 있도록 구성한다. 단 고객사의 보안 정책에 따라 WAS 의 위치는 변경될 수 있다.
시스템 구조도
아래 그림은 Mobile Server 시스템 구조도를 도식화한 것이다.
Client 와 Mobile Server 간 HTTP 통신을 통하여 정의된 JSON 데이터 형식으로 송수신하고 웹 요청을 받은 Controller 가 Biz Logic 또는 Interface Module을 호출하거나 수행하여 서비스를 처리한다.
시스템 구성요소
구성요소 |
설명 |
비고 |
---|---|---|
Spring Dispachter Servlet |
|
|
Controller |
|
DAO 또는 Interface module 호출 |
Biz Logic |
|
|
Interface Module |
|
|
DB |
|
|
Legacy System |
|
|
통합 Admin |
|
|
소프트웨어 구성
아래 그림은 모바일 서버 플랫폼의 소프트웨어 구성도를 도식화한 것이다.
구분 |
구성요소 |
제품내역 |
|
---|---|---|---|
시스템 S/W |
OS |
Server |
Linux, Unix, Windows 계열 OS |
Network |
TCP/IP |
||
DBMS |
Oracle, MS-SQL, MySql |
||
WAS |
Weblogic, Jeus, Tomcat, JBOSS(most overall WAS 지원) |
||
Web Server |
WebtoB, Apache (most overall Web Server 지원) |
||
어플리케이션 S/W |
개발 환경 |
Server |
JDK SE 1.6 권장 (JDK 1.5 이상 지원) |
Spring 3.1.2 Version, Mybatis 3.2.2 Version |
|||
Eclipse Helios 이상 권장 |
개발 절차
서버 개발 절차
아래와 같은 절차를 통해 분석 및 확장 개발을 수행한다.
기간계 시스템에서 제공 하는 연동 가이드 및 연동 모듈을 개발 하고 클라이언트와 G/W 서버간의 전문을 정의하여 배포 한다.
API 서비스 개발
Spring 은 Model, View, Controller(MVC) 구조를 가지고 있으며 J2EE 애플리케이션 개발에 일관된 프레임웍을 제공함과 동시에 원하는 컴포넌트만 선택적으로 사용할 수 있다는 이점이 있다. Spring 의 Annotation 기반으로 RESTful API를 구현하여 클라이언트에 서비스를 제공한다.
Controller 생성
사용 Annotation
Spring Framework 에서는 Stereotype Annotation 을 활용하여 MVC 개발을 지원한다. 생산성 향상을 위해서 @Controller, @RequestMapping, @ Autowired Annotation 만을 사용한다. 또한 반드시 클라이언트 통신 Controller은 @RequestMapping의 URI를 /api로 시작하는 URI로 만들어야 한다.
기타 Spring Framework 를 참고 하도록 한다.
구성요소 |
설명 |
---|---|
@Controller |
Controller 클래스를 정의 |
@Autowired |
의존관계를 자동으로 설정한다. |
@RequestMapping |
웹 요청에 대한 메소드 매핑 Annotation |
Controller Class 생성 샘플
com.example.controller 폴더에 SampleCtrl.java 샘플파일을 확인한다.
@RequestMapping 웹 요청에 대한 수행할 Controller, Method 를 매핑 하기 위한 Annotation 이다.
구분 |
설명 |
---|---|
method |
|
value |
|
-파일 소스
@Controller public class SampleCtrl { private Logger logger = LoggerFactory.getLogger(this.getClass().getName()); //WEB-INF/config/context/legacy-mybatis-context.xml파일에서 설정한 legacyDB 연결세션 @Autowired(required=true) @Qualifier(“sqlSession_legacy”) private SqlSession session; @Autowired(required=true) private MessageSource messageSource; // //////////////////////////////////////////////////////////////////////
@RequestMapping(method= RequestMethod.POST, value=”/api/msp/sample/{id}”) public ModelAndView sampleList(HttpServletRequest request, HttpServletResponse response){ // ////////////////////////////////////////////////////////////////////////////
//rest로 넘어온 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); //클라이언트에서 넘길 Response 맵 세팅 MobileMap responseMap = new MobileMap(); //클라이언트 전달 헤더값에 기본으로 성공인 200번 코드로 세팅 reqHeadMap.put(Const.RESULT_CODE, Const.OK); //클라이언트 전달 헤더값에 기본으로 성공메세지 Success로 세팅 reqHeadMap.put(Const.RESULT_MESSAGE, Const.SUCCESS); responseMap.setHeadMap(reqHeadMap); // //////////////////////////////////////////////////////////////////////////// Map<String, Object> responseBodyMap= new HashMap<String, Object>(); try{ /******************************************************************************** * 이 부분에 비즈니스 로직을 코딩한다. *******************************************************************************/ //Legacy DB조회 List<Map<String,Object>> userList =session.selectList(“Sample.getSampleData”,reqMap); responseBodyMap.put(“userList”, userList); /******************************************************************************** * 이 부분에 비즈니스 로직 마침. *******************************************************************************/ } catch (Exception e) { e.printStackTrace(); responseMap.setResultCode(Const.EXCEPTION_ERROR); if(e.getMessage() != null){ responseMap.setResultMessage(e.getMessage()); } else { responseMap.setResultMessage(messageSource.getMessage(“500.error”, null , Locale.getDefault().ENGLISH )); } } responseMap.setBodyMap(responseBodyMap); return responseMap.jsonView(); } } |
---|
Mybatis maper XML 생성
kr.msp.samle.sqlmap 폴더에 SampleManage.xml 파일 생성
<!– 맵핑될 Mapper 클래스 경로 입력–> <mapper namespace=”Sample”> <select id=”getSampleData “ parameterType=”hashmap “ resultType=”hashmap “> SELECT ‘홍길동’ USERNM , ‘TEST1’ USERID, ‘001’ USERSN FROM dual union ALL SELECT ‘테스트’ USERNM , ‘TEST2’ USERID, ‘002’ USERSN FROM dual union ALL SELECT ‘놀부’ USERNM , ‘TEST3’ USERID, ‘003’ USERSN FROM dual union ALL SELECT ‘흥부’ USERNM , ‘TEST4’ USERID, ‘004’ USERSN FROM dual </select> </mapper> |
---|
Test
RESTClient Tool 을 사용하여 생성된 API를 테스트 한다. RESTClient Tool 사용법은 별도로 제공되는 사용법을 참고 하도록 한다. (참고사이트: http://rest-client.googlecode.com/)
프레임워크 개발환경
개발환경
Mobile 서버 프레임워크 개발환경에 대해 설명한다.
개발 환경 소개
Mobile 서버 프레임워크의 비즈니스 프로그램 개발 및 API 테스트 등의 대한 지원 도구에 대해서 설명한다.
IDE (Integrated Development Environment)
통합된 개발 환경을 위해 Eclipse IDE 기반으로 제공한다.
API Test Tool
rest-client 설치 및 사용 가이드에 대한 전반적인 사항을 정리한다. 아래 설치 가이드는 윈도우 7을 기준으로 작성한 것 입니다.
설치 전 사전 준비사항
자바 공식 홈페이지에서 JDK6 설치 파일을 다운로드 받는다.
설치 및 사용 가이드
- rest-client 다운로드 사이트
*http://code.google.com/p/rest-client/downloads/list 에서 restclient-ui-2.5-jar-with-dependencies.jar* 파일을 선택하여 다운로드 한다.
Body 탭에서 아래와 같이 입력박스에 서버로 전송할 데이터를 입력한다.