입력/응답 전문변환
BX Framework은 입출력 전문변환을 위한 변환모듈(DefaultRequestResolver, DefaultResponseResolver)를 제공한다. Framework을 사용하게 될 사용자환경에 기본제공 변환모듈을 적용할 수 없는 경우 변환모듈을 사용자환경에 적합하게 커스터마이징할 수 있다.
1. 입력전문 변환
입력전문 변환은 ReqeustResolver모듈을 통하여 수행한다.
ReqeustResolver는 bxm.request.RequestResolver, bxm.request.JsonMessageResolver 인터페이스를 구현한다. (JSON을 사용하지 않는 경우는 JsonMessageResolver를 구현하지 않는다.)
-
bxm.request.RequestResolver
… public ResolvedRequest resolveXmlRequest( Class<?> headerclass, InputStream inStream, String charSet, ApplicationContainer container, String remoteAddr) throws Exception; public ResolvedRequest resolveFldRequest( Class<?> headerclass, InputStream inStream, String charSet, ApplicationContainer container, String remoteAddr) throws Exception; public ResolvedRequest resolveSerializedObjectRequest( Class<?> headerclass, InputStream inStream, ApplicationContainer container, String remoteAddr) throws Exception;
-
bxm.request.JsonMessageResolver
… ResolvedRequest resolveJsonRequest( Class<?> headerclass, InputStream inStream, ApplicationContainer container, String remoteAddr) throws Exception; // ReqeustResolver에서는 resolveJsonResponse를 구현하지 않는다. void resolveJsonResponse( ResolvedRequest request, ResolvedResponse response, OutputStream outStream) throws Exception;
1.1. resolveXmlRequest
입력데이터를 XML전문→객체로 변환하여 ResolvedRequest객체를 생성한다.
입력/출력구분 | 파라미터 | 설명 |
---|---|---|
입력파라미터 |
Class<?> headerclass |
시스템헤더 객체 |
InputStream inStream |
입력데이터를 읽어들일 InputStream객체 |
|
String charSet |
입력데이터를 읽어들일때 사용될 character set(encoding) |
|
ApplicationContainer container |
Framework application container객체 |
|
String remoteAddr |
Client IP address, HTTP통신인 경우 HttpServletRequest.getRemoteAddr()와 같다. |
|
반환값 |
ResolvedRequest |
입력전문을 변환한 시스템헤더객체, 업무서비스입력객체를 포함하고 있는 ResolvedRequest객체 |
1.2. resolveFldRequest
입력데이터를 FLD전문→객체로 변환하여 ResolvedRequest객체를 생성한다.
파라미터와 반환값은 "resolveXmlRequest"와 동일하다.
1.3. resolveJsonRequest
입력데이터를 JSON전문→객체로 변환하여 ResolvedRequest객체를 생성한다.
파라미터와 반환값은 "resolveXmlRequest"와 동일하다.
2. 응답전문 변환
응답전문 변환은 ResponseResolver모듈을 통하여 수행한다.
ResponseResolver는 bxm.request.ResponseResolver, bxm.request.JsonMessageResolver 인터페이스를 구현한다. (JSON을 사용하지 않는 경우는 JsonMessageResolver를 구현하지 않는다.)
-
bxm.request.ResponseResolver
… // 더 이상 구현하지 않는다. public void setHeaderFieldProperties(Map<String, IOmmFieldType> props); public void resolveXmlResponse(ResolvedRequest request, ResolvedResponse response, OutputStream outStream, String charSet) throws Exception; public void resolveFldResponse(ResolvedRequest request, ResolvedResponse response, OutputStream outStream, String charSet) throws Exception; public void resolveSerializedObjectResponse(ResolvedRequest request, ResolvedResponse response, OutputStream outStream) throws Exception;
-
bxm.request.JsonMessageResolver
… // ResponseResolver에서는 resolveJsonRequest를 구현하지 않는다. ResolvedRequest resolveJsonRequest( Class<?> headerclass, InputStream inStream, ApplicationContainer container, String remoteAddr) throws Exception; void resolveJsonResponse( ResolvedRequest request, ResolvedResponse response, OutputStream outStream) throws Exception;
2.1. resolveXmlResponse
응답데이터를 객체→XML전문으로 변환하여 OutputStream에 쓴다.
입력/출력구분 | 파라미터 | 설명 |
---|---|---|
입력파라미터 |
ResolvedRequest request |
입력전문을 변환한 시스템헤더객체, 업무서비스입력객체를 포함하고 있는 ResolvedRequest객체 |
ResolvedResponse response |
응답전문으로 변환할 시스템헤더객체, 업무서비스응답객체를 포함하고 있는 ResolvedResponse객체 |
|
OutputStream outStream |
응답데이터를 쓸 OutputStream |
|
String charSet |
응답데이터를 OutputStream에 쓸 때 사용될 character set(encoding) |
|
반환값 |
없음 |
2.2. resolveFldResponse
응답데이터를 객체→FLD전문으로 변환하여 OutputStream에 쓴다.
파라미터와 반환값은 "resolveXmlResponse"와 동일하다.
2.3. resolveJsonResponse
응답데이터를 객체→JSON전문으로 변환하여 OutputStream에 쓴다.
파라미터와 반환값은 "resolveXmlResponse"와 동일하다.
2.4. resolveSerializedObjectResponse
응답데이터를 객체→Java Serialized으로 변환하여 OutputStream에 쓴다.
입력/출력구분 | 파라미터 | 설명 |
---|---|---|
입력파라미터 |
ResolvedRequest request |
입력전문을 변환한 시스템헤더객체, 업무서비스입력객체를 포함하고 있는 ResolvedRequest객체 |
ResolvedResponse response |
응답전문으로 변환할 시스템헤더객체, 업무서비스응답객체를 포함하고 있는 ResolvedResponse객체 |
|
OutputStream outStream |
응답데이터를 쓸 OutputStream |
|
반환값 |
없음 |
3. 이미지로깅
이미지로깅은 입력전문, 응답전문을 거래데이터 확인 , 거래추적등의 목적을 위하여 로그형태로 기록하는 것을 말한다.
단, 전문전체를 기록하면 성능을 저하시킬 수 있으므로 전문의 일정부분을 로그로 기록하는 것을 권장한다.
Framework에서 제공하는 기본구현체인 DefaultRequestTrace의 경우 전문로그를 Database에 기록한다. 테이블명은 BXM_LOG_IMG_01 ~ 31으로 31개테이블을 사용한다. 현재일자에 따라 사용할 테이블을 결정한다.
이미지로깅 모듈은 bxm.request.RequestTrace 인터페이스를 구현해야 한다.
-
bxm.request.RequestTrace
… boolean traceRequestMessage( DataSource datasource, ResolvedRequest request, byte[] message); boolean traceResponseMessage( DataSource datasource, ResolvedRequest request, ResolvedResponse response, byte[] message); // 더 이상 사용하지 않는다. boolean traceLargeRequestMessage( DataSource datasource, ResolvedRequest request, byte[] message); // 더 이상 사용하지 않는다. boolean traceLargeResponseMessage( DataSource datasource, ResolvedRequest request, ResolvedResponse response, byte[] message);
3.1. traceRequestMessage
입력전문을 로그저장소(BXM_LOG_IMG_XX)에 저장한다.
입력/출력구분 | 파라미터 | 설명 |
---|---|---|
입력파라미터 |
DataSource datasource |
이미지로그를 저장할 때 사용되는 Datasource |
ResolvedRequest request |
입력전문을 변환한 시스템헤더객체, 업무서비스입력객체를 포함하고 있는 ResolvedRequest객체 |
|
byte[] message |
입력전문 |
|
반환값 |
boolean |
true : 이미지로그 저장성공 |
3.2. traceResponseMessage
응답전문을 로그저장소(BXM_LOG_IMG_XX)에 저장한다.
입력/출력구분 | 파라미터 | 설명 |
---|---|---|
입력파라미터 |
DataSource datasource |
이미지로그를 저장할 때 사용되는 Datasource |
ResolvedRequest request |
입력전문을 변환한 시스템헤더객체, 업무서비스입력객체를 포함하고 있는 ResolvedRequest객체 |
|
ResolvedResponse response |
응답전문으로 변환할 시스템헤더객체, 업무서비스응답객체를 포함하고 있는 ResolvedResponse객체 |
|
byte[] message |
응답전문 |
|
반환값 |
boolean |
true : 이미지로그 저장성공 |