GATEWAY 2.0 개발 가이드¶
사 용 권 한
본 문서에 대한 서명은 ㈜유라클 내부에서 본 문서에 대하여 수행 및 유지관리의 책임이 있음을 인정하는 것임.
제.개정 이력
버전 |
변경일자 |
제.개정 내용 |
작성자 |
1.0 |
2013.11 |
최초작성 |
이명보 |
1. 개요¶
1.1. 목적¶
본 문서는 모바일 하이브리드 서비스 앱 구축 프로젝트중 게이트웨이 서버의 개발을 위한 제반 사항을 기술한다.
1.2 고려사항¶
매뉴얼 변경 시에는 근거를 명시하고 버전 관리를 정확하게 수행
본 매뉴얼에 도식화 된 이미지는 모두 파워포인트 가로 문서로 첨부
2. 시스템 구성¶
2.1. 시스템 구성도(H/W)¶
아래 그림은 모피어스 플랫폼 게이트웨이 서버의 시스템 구성도를 도식화한 것이다.
H/W 에 대한 구성도 이다. DMZ 에는 Web Server, WAS 가 위치하고 내부망에는 기존 기간계 시스템 및 플랫폼 UI 리소스 파일을 저장 하기 위한 NAS 가 배치되는 구조이다. 단 보안 정책에 따라서 WAS는 DMZ 또는 내부망으로 위치가 변경될 수 있다.
2.2. 시스템 구조도¶
아래 그림은 모피어스 플랫폼 게이트웨이 서버의 시스템 구조도를 도식화한 것이다.
Client 와 G/W 서버간 HTTP 통신을 통하여 정의된 JSON 데이터 형식으로 송수신하고 웹 요청을 받은 Controller 가 정의된 Camel 의 Routing Message Engine 을 이용하여 기간계 시스템과의 상호연동을 수행한다.
2.3. 시스템 구성요소¶
구성요소 |
설명 |
비고 |
---|---|---|
Spring Dispachter Servlet |
|
|
DB |
|
|
Legacy |
|
|
Morpheus Admin |
|
|
2.4. 소프트웨어 구성¶
아래 그림은 모피어스 플랫폼 게이트웨이 서버의 소프트웨어 구성도를 도식화한 것이다.
구분 |
구성요소 |
제품내역 |
|
---|---|---|---|
시스템 S/W |
OS |
Server |
Linux, Unix, Windows 계열 OS |
Network |
TCP/IP |
||
DBMS |
Oracle |
||
WAS |
Weblogic, Jeus, Tomcat, JBOSS(most overall WAS 지원) |
||
Web Server |
WebtoB, Apache, IIS (most overall Web Server 지원) |
||
어플리케이션 S/W |
개발 환경 |
Server |
JDK SE 1.6 권장 (JDK 1.5 이상 지원) |
Spring 3.1.2 Version, Mybatis 3.2.2 Version |
|||
Camel 2.6 Version |
|||
개발 환경 |
Client |
JDK SE 1.6 권장 (JDK 1.5 이상 지원), Eclipse Helios 이상 권장 |
3. 개발 절차¶
3.1. 서버 개발 절차¶
아래와 같은 절차를 통해 분석 및 확장 개발을 수행한다.
기간계 시스템에서 제공 하는 연동 가이드 및 연동 모듈을 개발 하고 클라이언트와 G/W 서버간의 전문을 정의하여 배포 한다.
4. API 서비스 개발¶
Spring 은 Model, View, Controller(MVC) 구조를 가지고 있으며 J2EE 애플리케이션 개발에 일관된 프레임웍을 제공함과 동시에 원하는 컴포넌트만 선택적으로 사용할 수 있다는 이점이 있다. Spring 의 Annotation 기반으로 RESTful API를 구현하여 클라이언트에 서비스를 제공한다.
4.1. Controller 생성¶
4.1.1. 사용 Annotation¶
Spring Framework 에서는 Stereotype Annotation 을 활용하여 MVC 개발을 지원한다. 생산성 향상을 위해서 @Controller, @RequestMapping, @RequestParam 등의 Annotation 을 사용한다. 기타 Spring Framework 를 참고 하도록 한다.
구성요소 |
설명 |
---|---|
@Controller |
Controller 클래스를 정의 |
@Autowired |
의존관계를 자동으로 설정한다. |
@RequestMapping |
웹 요청에 대한 메소드 매핑 Annotation |
@RequestParam |
웹 요청의 파라미터와 메소드 파라미터간의 매핑 Annotation |
@PathVariable |
메소드에 매개 변수 주석을 사용하여 URI 변수의 값에 바인딩 한다. |
@ResponseBody |
메소드에서 리턴되는 값을 view가 아닌 HTTP Response Body 에 직접 쓰여진다. |
@RequestBody |
HTTP Request Body를 핸츨러 메소드에서 직업 사용 가능 |
4.1.2. Controller Class 생성¶
kr.morpheus.sample.controller 폴더에 sampleController.java 파일을 생성한다.
@RequestMapping 웹 요청에 대한 수행할 Controller, Method 를 매핑 하기 위한 Annotation 이다.
구분 |
설명 |
---|---|
method |
|
value |
|
파일 소스
public class SampleController { //어노테이션으로 SampleService 클래스를 주입받는다. @Autowired(required=true) private SampleService sampleService; @SuppressWarnings(“unchecked”) @ResponseBody @RequestMapping(method=RequestMethod.POST, value=”/api/sample/{id}”) public String get(HttpServletRequest request, HttpServletResponse response, @PathVariable String id , @RequestBody String body) throws Exception { // JSON 문자열을 Map or List Object 로 변환 body = URLDecoder.decode(body, “UTF-8”); ObjectMapper om = new ObjectMapper(); Map<String, Object> requestMap = om.readValue(body, new TypeReference<Map<String, Object>>(){}); //비지니스 로직 실행 requestMap = (Map<String, Object>) sampleService.getCompanySample( requestMap , id ); //Map Object를 JSON 문자열로 변환 ObjectMapper mapper = new ObjectMapper(); String data = mapper.writeValueAsString(requestMap); return data; } } |
---|
4.2. Service 생성¶
4.2.1. 사용 Annotation¶
구성요소 |
설명 |
---|---|
@Service |
Service 클래스의 정의, 자동 빈 등록 |
4.2.2 Service Class 생성¶
kr.morpheus.sample.service 폴더에 SampleService.java 파일을 생성한다.
파일 소스
//어노테이션으로 SampleSession bean 등록 @Service public class SampleService { //어노테이션으로 SqlSession을 주입받는다. @Autowired(required=true) private SqlSession sqlSession; public Object getCompanySample( Map<String, Object> requestMap , String id ){ //HEAD 와 BODY 를 담은 MAP Object Map<String, Object> responseMap = new HashMap<String, Object>(); //HEAD 정보가 담길 MAP Object @SuppressWarnings(“unchecked”) Map<String, Object> responseHeadMap = (Map<String, Object>) requestMap.get(“head”); //BODY 정보가 담길 MAP Object Map<String, Object> responseBodyMap = new HashMap<String, Object>(); SampleDto sampleDto = new SampleDto(); sampleDto.setCID(id); //Mapper class 생성 //DB에서 정보를 조회 한다. SampleMapper sampleMapper = sqlSession.getMapper(SampleMapper.class); sampleDto = sampleMapper.getCompanySample(sampleDto); //조회 결과를 BODY MAP에 담는다. responseBodyMap.put(“CID”, sampleDto.getCID()); responseBodyMap.put(“DEPT”, sampleDto.getDEPT()); responseBodyMap.put(“USER_NAME”, sampleDto.getUSER_NAME()); responseBodyMap.put(“COMPANY”, sampleDto.getCOMPANY()); responseMap.put( “head”, responseHeadMap ); responseMap.put( “body”, responseBodyMap ); return responseMap; } } |
---|
4.3. Mapper Interface 생성¶
kr.morpheus.sample.mapper 폴더에 SampleMapper.java 파일을 생성한다.
파일 소스
public interface SampleMapper { //Mybatis의 select문 id와 메소드명을 동일하게 작업 SampleDto getCompanySample(SampleDto sampleDto); } |
---|
4.4. Dto Class 생성¶
kr.morpheus.sample.dto 폴더에 SampleDto.java 파일을 생성한다.
파일 소스
public class SampleDto { private String CID; private String DEPT; private String USER_NAME; private String COMPANY; public String getCID() { return CID; } public void setCID(String cID) { CID = cID; } public String getDEPT() { return DEPT; } public void setDEPT(String dEPT) { DEPT = dEPT; } public String getUSER_NAME() { return USER_NAME; } public void setUSER_NAME(String uSER_NAME) { USER_NAME = uSER_NAME; } public String getCOMPANY() { return COMPANY; } public void setCOMPANY(String cOMPANY) { COMPANY = cOMPANY; } } |
---|
4.5. Mybatis maper XML 생성¶
kr.morpheus.samle.sqlmap 폴더에 SampleManage.xml 파일 생성
<!– 맵핑될 Mapper 클래스 경로 입력–> <mapper namespace=”kr.morpheus.sample.mapper.SampleMapper”> <select id=”getCompanySample” parameterType=”kr.morpheus.sample.dto.SampleDto” resultType=”kr.morpheus.sample.dto.SampleDto”> SELECT CID , DEPT , USER_NAME , COMPANY FROM SAMPLE WHRER CID = CID </select> </mapper> |
---|
4.6. Test¶
RESTClient Tool 을 사용하여 생성된 API를 테스트 한다. RESTClient Tool 사용법은 별도로 제공되는 사용법을 참고 하도록 한다. (참고사이트: http://rest-client.googlecode.com/)
5. 프레임워크 개발환경¶
5.1. 개발환경¶
Morpheus Mobile 서버 프레임워크 개발환경에 대해 설명한다.
5.1.1. 개발 환경 소개¶
Morpheus Mobile 서버 프레임워크의 비즈니스 프로그램 개발 및 API 테스트 등의 대한 지원 도구에 대해서 설명한다.
5.2. IDE (Integrated Development Environment)¶
통합된 개발 환경을 위해 Eclipse IDE 기반으로 제공한다.
5.3. API Test Tool¶
rest-client 설치 및 사용 가이드에 대한 전반적인 사항을 정리한다. 아래 설치 가이드는 윈도우 7을 기준으로 작성한 것 입니다.