ServiceEndpoint 처리흐름 커스터마이징

BX Framework 3.0에서는 Framework에서 제공하는 ServiceEndpoint처리흐름이외에 RequestInterceptor 인터페이스를 이용하여 사용자의 처리로직을 처리흐름에 추가할 수 있다. default extension에서 RequestInterceptor로 DefaultRequestInterceptor을 사용하고 있다.

ServiceEndpoint 처리흐름 커스터마이징
Figure 1. ServiceEndpoint 처리흐름 커스터마이징

1. ServiceEndpoint RequestInterceptor

ServiceEndpoint RequestInterceptor는 bxm.request.RequestInterceptor 인터페이스를 구현하고 bxm-management-instance.xml의 interceptor-classname으로 지정한다. RequestInterceptor 인터페이스는 사용자의 처리로직을 ServiceEndpoint에 추가할 수 있는 API를 정의하고 있다.

  • Service Endpoint 의 bxm-management-instance.xml

…
<bxm-instance name="bxm-instance">
...
    <context>
    ...
         <request header-classname="bxm.dft.context.DefaultSystemHeader" imagelogging="true"
                  interceptor-classname="bxm.dft.service.endpoint.DefaultRequestInterceptor"
...
  • bxm.request.RequestInterceptor

…
    boolean afterResolvingRequest(ResponseResolver responseResolver, OutputStream outStream,
            EndpointMessageType messageType, String encoding, ResolvedRequest request)
            throws Throwable;

    void preProcess( ResolvedRequest request) throws Exception;

    void postProcess( ResolvedRequest request, ResolvedResponse response) throws Exception;

    void beforeResolvingResponse(ResolvedRequest request, ResolvedResponse response, Throwable th, DataSource datasource) throws Exception;

    void setResponseHeaderData(ResolvedResponse response);

    void afterCompletion( ResolvedRequest request, ResolvedResponse response, Throwable th) throws Exception;

1.1. afterResolvingRequest

입력전문 변환작업이 끝난 후 수행할 작업을 구현한다. 헬스체크전문에 대한 응답처리와 같이 전문해석후 곧바로 응답데이터를 보내는 경우 사용할 수 있다.

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

입력파라미터

ResponseResolver responseResolver

응답객체를 응답전문으로 변환하는 response resolver객체

OutputStream outStream

응답전문을 출력할 OutputStream

EndpointMessageType messageType

ServiceEndpoint에서 인지한 전문의 유형

String encoding

응답전문의 인코딩

ResolvedRequest request

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

반환값

boolean

true : 이후 ServiceEndpoint처리를 계속 수행

false : 응답전문을 전송한것으로 판단하고 이후 ServiceEndpoint처리를 수행하지 않고 종료

1.2. preProcess

업무서비스를 호출하기전 먼저 처리할 작업을 구현한다. 시스템헤더의 기본값을 설정하거나 Framework에서 사용하는 DataContainer를 초기화 하는 작업을 할 수 있다.

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

입력파라미터

ResolvedRequest request

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

반환값

void

1.3. postProcess

업무서비스를 호출한 후 처리할 작업을 구현한다.

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

입력파라미터

ResolvedRequest request

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

ResolvedResponse response

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

반환값

void

1.4. beforeResolvingResponse

응답전문 변환작업전에 수행할 작업을 구현한다. 주로 응답이 에러 또는 정상인지에 따라 수행할 작업을 구현한다.

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

입력파라미터

ResolvedRequest request

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

ResolvedResponse response

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

Throwable th

서비스수행중 에러가 발생했다면 원인Exception을 전달받는다. 정상상황일 때는 값이 null이다.

DataSource datasource

Framework 환경화일에 등록된 Framework Datasource객체

반환값

void

1.5. setResponseHeaderData

응답전문으로 전송할 응답시스템헤더의 항목값을 설정한다.

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

입력파라미터

ResolvedResponse response

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

반환값

void

1.6. afterCompletion

응답전문이 Client로 전송된 후 수행할 작업을 구현한다.

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

입력파라미터

ResolvedRequest request

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

ResolvedResponse response

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

Throwable th

서비스수행중 에러가 발생했다면 원인Exception을 전달받는다. 정상상황일 때는 값이 null이다.

반환값

void

Copyright© Bankwareglobal All Rights Reserved.