입력/응답 전문변환

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객체

Framework의 거래파라미터객체에 대한 접근, 거래에 대한 lookup기능을 제공받는다.

String remoteAddr

Client IP address, HTTP통신인 경우 HttpServletRequest.getRemoteAddr()와 같다.

반환값

ResolvedRequest

입력전문을 변환한 시스템헤더객체, 업무서비스입력객체를 포함하고 있는 ResolvedRequest객체

1.2. resolveFldRequest

입력데이터를 FLD전문→객체로 변환하여 ResolvedRequest객체를 생성한다.

파라미터와 반환값은 "resolveXmlRequest"와 동일하다.

1.3. resolveJsonRequest

입력데이터를 JSON전문→객체로 변환하여 ResolvedRequest객체를 생성한다.

파라미터와 반환값은 "resolveXmlRequest"와 동일하다.

1.4. resolveSerializedRequest

입력데이터를 Java Serialized → 객체로 변환하여 ResolvedRequest객체를 생성한다.

파라미터와 반환값은 "resolveXmlRequest"와 동일하다.

1.5. Sample

bxm.default.extension프로젝트의 bxm.dft.request.DefaultRequestResolver.java를 참고한다.

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에 쓴다.

resolveXmlResponse메소드 파라미터
입력/출력구분 파라미터 설명

입력파라미터

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에 쓴다.

resolveSerializedObjectResponse메소드 파라미터
입력/출력구분 파라미터 설명

입력파라미터

ResolvedRequest request

입력전문을 변환한 시스템헤더객체, 업무서비스입력객체를 포함하고 있는 ResolvedRequest객체

ResolvedResponse response

응답전문으로 변환할 시스템헤더객체, 업무서비스응답객체를 포함하고 있는 ResolvedResponse객체

OutputStream outStream

응답데이터를 쓸 OutputStream

반환값

없음

2.5. Sample

bxm.default.extension프로젝트의 bxm.dft.request.DefaultResponseResolver.java를 참고한다.

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)에 저장한다.

traceRequestMessage메소드 파라미터
입력/출력구분 파라미터 설명

입력파라미터

DataSource datasource

이미지로그를 저장할 때 사용되는 Datasource

ResolvedRequest request

입력전문을 변환한 시스템헤더객체, 업무서비스입력객체를 포함하고 있는 ResolvedRequest객체

byte[] message

입력전문

반환값

boolean

true : 이미지로그 저장성공

false : 이미지로그 저장실패, 호출한 곳에서 CannotCreateImageLoggingException을 발생시킨다.

3.2. traceResponseMessage

응답전문을 로그저장소(BXM_LOG_IMG_XX)에 저장한다.

traceResponseMessage메소드 파라미터*
입력/출력구분 파라미터 설명

입력파라미터

DataSource datasource

이미지로그를 저장할 때 사용되는 Datasource

ResolvedRequest request

입력전문을 변환한 시스템헤더객체, 업무서비스입력객체를 포함하고 있는 ResolvedRequest객체

ResolvedResponse response

응답전문으로 변환할 시스템헤더객체, 업무서비스응답객체를 포함하고 있는 ResolvedResponse객체

byte[] message

응답전문

반환값

boolean

true : 이미지로그 저장성공

false : 이미지로그 저장실패

3.3. Sample

bxm.default.extension프로젝트의 bxm.dft.request.DefaultRequestTrace.java를 참고한다.

Copyright© Bankwareglobal All Rights Reserved.