Multi Channel User Guide
From JCFWiKi
Copyright © 2008 Daewoo Information Systems Co., Ltd. |
|
X-Internet과 연동을 위해 사용되는 멀티 채널을 적용/사용하는 퀵 가이드이며, 스트럿츠2와 스프링2.5 그리고 Ibatis2 이상의 환경을 대상으로 한다. |
목차 |
[편집] 라이브러리 적용
- jcf-3.0.1.jar 와 jcf-ibatis-sqlmap-1.0-SNAPSHOT.jar 적용.
- 기본의 jcf-xxx.jar 대신에 jcf-3.0.1은 jcf-3.0.1-SNAPSHOT-1038 빌드 이상의 버전을 적용하면 된다.
- ibatis를 사용하는 경우, 기존에 사용하던 일반 ibatis-2.3.xxx.jar 대신에 jcf-ibatis-sqlmap-1.0-SNAPSHOT.jar를 적용한다.
[편집] web.xml 수정
- web.xml에 작성되어 있는 스트럿츠2의 필터디스패처의 클래스를 jcf.web.ux.miplatform.MiplatformChannelIntegrationFilterDispatcher 으로 수정한다.
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> 에서.... <filter> <filter-name>struts2</filter-name> <filter-class>jcf.web.ux.miplatform.MiplatformChannelIntegrationFilterDispatcher</filter-class> </filter> 으로 변경..
[편집] Action 클래스에서 데이터 입출력하기
- InChannel을 통해서 UI를 통해 전달된 데이터를 자바 객체로 가져온다.
- getVariable(String variableName) String : 주어진 variableName값에 일치하는 variable의 값을 스트링으로 반환한다.
- getVariables() Map : 모든 variable 값을 맵객체로 반환한다.
- getDataSet(Class clazz, String dataSetName) Object : 주어진 dataSetName에 일치하는 데이터셋의 값을 주어진 clazz 타입의 객체로 변환하여 리턴한다.
- getDataSetList(Class clazz, String dataSetName) List : 주어진 dataSetName에 일치하는 데이터셋의 값을 주어진 clazz 타입의 객체 리스트로 변환하여 반환한다.
- OutChannel을 통해서 자바 객체의 데이터를 XML로 변경하여 클라이언트로 보내준다.
- setDataSet(String dataSetName, Object dataSet) void : 주어진 dataSet 값을 dataSetName으로 데이터셋으로 설정한다.
- setDataSets(Map dataSetMap) void : 데이터셋이름(Key)과 데이터셋(value)으로 사용할 자바객체로 구성된 맵객체인 dataSetMap을 데이터셋으로 설정한다.
- setVariable(String variableName, String variableValue) void : 주어진 variableName으로 variableValue를 베리어블로 설정한다.
- setVariables(Map variableMap) void : 문자열의 variableName과 variableValue로 구성된 맵 객체인 variableMap의 값들을 베리어블로 설정한다.
- send(Map dataSetMap, Map variableMap) void : 주어진 dataSetMap과 variableMap의 값을 클라이언트에게 전송한다.
- send(Map dataSetMap) void : 주어진 dataSetMap의 값을 클라이언트에게 전송한다.
- send() void : set 메소드를 통해서 설정된 데이터셋과 베리어블 값들을 클라이언트에게 전송한다.
- success(String code, String message) void : 주어진 코드와 메세지 값으로 클라이언트에게 처리 처리 완료 응답을 보낸다(send() 사용하지 않음).
- success(String message) void : 주어진 메세지 값으로 클라이언트에게 처리 처리 완료 응답을 보낸다(send() 사용하지 않음).
- success() void : 클라이언트에게 처리 처리 완료 응답을 보낸다(send() 사용하지 않음).
- error(String errorCode, String errorMessage) void : 주어진 에러코드와 에러메세지로 클라이언트에게 처리 실패 응답을 보낸다(send() 사용하지 않음).
- error(String errorMessage) void : 주어진 에러메세지로 클라이언트에게 처리 실패 응답을 보낸다(send() 사용하지 않음).
- error() void : 클라이언트에게 처리 실패 응답을 보낸다(send() 사용하지 않음).
- API 사용 예제 - 저장시
public void saveCodes() { List saveCodes = InChannel.getDataSetList(Code.class, "ds_code"); codeService.saveCodes(saveCodes); OutChannel.success(); }
- API 사용 예제 - 조회시
public void findUser() { // InChannel을 통해서 userId 베리어블 값과 가져온다. String userId = InChannel.getVariable("userId"); Code locationCode = InChannel.getDataSet(Code.class, "ds_location_code"); List user = userService.findUsers(userId); List house = houseService.findHouses(userId, locationCode); String currentFlag = getSession().getAttribute("currentFlag"); // OutChannel을 통해서 가져온 객체 user, house 그리고 스트링값 currentFlag를 OutChannel에 세팅한 후, 전송한다. OutChannel.setVariable("currentFlag", currentFlag); OutChannel.setDataSet("ds_user", user); OutChannel.setDataSet("ds_house", house); OutChannel.send(); }
[편집] 주의 사항
- 1. DB 에서 조회한 데이터를 새로운 List 객체(new ArrayList)에 저장하지 않는다.
- 2. 조회 결과로 맵 객체는 사용하지 않는다.
- 3. 한건을 조회할 경우에도 리스트를 사용한다.(ibatis dao에서는 리스트로 조회하고, action 단에서도 조회된 리스트를 그대로 OutChannel.setDataSet(..)한다. 즉, 객체 한건단위로 조회하는 것을 지양한다. 만약 null인경우 적절한 응답을 못주게 된다.)
