본문으로 건너뛰기
버전: 3.4.4

커넥션

개요

커넥션 정보 설정

기관별, 시스템별 업무의 통신은 커넥션이 담당한다. 커넥션그룹, 커넥션의 순서로 정의한다.

커넥션그룹

커넥션트리 화면

커넥션그룹은 기관업무, 시스템업무 기준으로 커넥션을 그룹화하고, 커넥션을 부하분산 처리한다.

커넥션관리 > 커넥션정보의 좌측 트리에 기정의된 기관/시스템 업무 정보가 표시되며, 우측에는 커넥션그룹/커넥션 목록과 상세 정보가 표시된다. 해당 기관/시스템 업무에서 우클릭 후, 커넥션그룹 등록을 선택하여 등록한다.

구성항목

☑ 기본정보

  • 프로토콜구분 : TCP, HTTP 등
  • 적용일자 : 해당 커넥션을 적용할 날짜. 당일부터 실행하고자 하는 경우, 오늘 이전 날짜를 등록한다.
  • 인스턴스ID : 지정 시 해당 커넥션을 특정 인스턴스에서 사용한다.
정보

TCP를 사용하는 경우, 이 외의 추가 설정들이 필요하다.

해당 설정은 기관업무의 정보를 상속할 수 있고, 여기서 등록된 정보는 해당 커넥션 그룹 하위의 모든 커넥션에도 상속된다. 자세한 내용은 하단의 TCP를 참조한다.

커넥션

기관, 시스템과의 실질적인 통신 채널 역할을 한다. 대부분의 정보를 커넥션그룹으로부터 상속받거나 재정의할 수 있다. 커넥션 그룹에서 우클릭 후, 커넥션 등록을 선택하여 등록한다.

등록할 내용은 커넥션그룹에서 선택한 프로토콜에 따라 달라진다.

HTTP

☑ HTTP정보

  • 커넥션구분: 클라이언트, 서버
  • 서버URL: URL을 설정한다.
  • 컨텍스트패스: 컨텍스트 패스를 입력한다. 서버 URL과 포트번호, 그리고 컨텍스트 패스의 조합이 커넥션의 전체 URL이다.
  • KEEP ALIVE 여부: KEEP ALIVE 여부를 설정한다.
  • 전송타임아웃(밀리초) : HTTP 요청을 수신할 때 사용하는 타임아웃이다. 이 값을 등록하지 않을 경우 시스템 파라미터에 HTTP_REQUEST_WAIT_TIMEOUT 값이 적용된다.
정보

전송타임아웃은 거래에 대한 타임아웃 시간보다 큰 값을 설정해야 정상적으로 동작한다.

서버커넥션의 접근 가능한 URI

서버커넥션은 컨텍스트패스 유무에 따라 접근 가능한 URI가 달라진다.

서버URL포트번호컨텍스트패스접근 가능한 URI
localhost8080/context01단일 localhost:8080/context01
localhost8080localhost:8080으로 시작하는 URI전체
EX) localhost:8080, localhost:8080/a, localhost:8080/a/b

☑ 헬스체크정책

커넥션의 헬스체크 방법, 전송 주기 및 단락조건 등의 정보를 설정한다.

헬스체크방법은 송수신이없을때, 지정된시간간격 등으로 구분된다. 송수신이없을때 방식은 송수신이 없는 IDLE이 발생할 경우에 헬스체크 하는 방식이며, 일반적으로 사용된다. 지정된시간간격 방식은 지정된 시간 간격으로 헬스체크를 하는 방식이다.

각 구성항목에 대한 설명은 다음과 같다.

  • 헬스체크간격(초): 헬스체크하는 시간 간격을 설정한다. (기본값: 60)
  • 단락(Disconnect) 조건 횟수: 헬스체크 전문에 대한 응답이 없을 경우 세션을 끊기 위한 횟수를 입력한다. (기본값: 3)

☑ 추가정보

  • 회선ID : 물리적인 회선에 대한 ID

TCP

☑ TCP정보

  • 송수신구분: 송수신 구분을 설정한다.
  • 커넥션구분: 클라이언트, 서버
  • IP도메인, PORT: 커넥션구분에 따라 접속할 대상 혹은 Listen할 서버의 IP/PORT를 설정한다.
  • 커넥션유지여부: 유지(Connection-Oriented), 비유지(Connectionless)를 설정한다. 커넥션유지는 클라이언트 모드에서 인터페이스 처리를 커넥션 연결 유지 상태에서 처리하고, 커넥션비유지는 클라이언트 모드에서 인터페이스의 요청에 대한 응답이 처리되면 커넥션의 연결을 종료한다.
  • 에러조건수: 커넥션 비유지인 경우, 커넥션 연결이 계속해서 실패하면 해당 커넥션을 사용할 수 없도록 한다. 이 경우 커넥션 연결을 몇번까지 시도할 것인지 최대 값을 입력해 해당 횟수 이상으로 연결이 안 되면 해당 커넥션을 Disable한다.
  • 총세션수: 클라이언트 모드이면 하나의 커넥션으로 연결할 세션 수를 입력하고, 서버 모드이면 연결을 받아줄 세션 수를 입력한다.

☑ 프레임정보

프레임이란 전문 단위를 구분하는 용어로, AP 인터페이스에서 사용하는 송수신 전문은 하나의 프레임에 담긴다. 프로토콜이 TCP인 경우에 프레임을 구분하는 방식을 설정해야 한다.

프레임구분 방식은 전문길이, 딜리미터, 사용자코덱 등으로 구분된다.

1. 전문길이

전문길이 방식은 길이필드로 프레임을 구분하는 방식이며, 공통정보, Read정보, Write정보로 구분된다. 길이필드란 전문의 길이정보를 가지고 있는 필드를 의미한다.

공통정보는 길이필드에 대한 속성 정의이고, Read정보는 전문을 읽을 때 사용하며, Write정보는 전문을 쓸 때 사용한다. 각 구성항목에 대한 설명은 다음과 같다.

공통정보
  • 길이필드길이: 길이필드 항목의 길이를 설정한다.
  • 길이필드시작위치: 길이필드가 시작되는 offset값을 설정한다.
  • 길이필드캐릭터타입: 길이필드가 사용할 캐릭터셋 타입을 선택한다. 캐릭터타입은 ASCII, EBCDIC, CHARSET, BINARY 등으로 구분되며, Default 캐릭터타입은 CHARSET이다. CHARSET 선택시 기관/시스템별업무설정의 전문캐릭터셋이 적용된다.
  • 길이필드포함여부: 헤더길이의 포함여부를 설정한다. 포함일때는 전체전문길이, 미포함일때는 헤더길이를 제외한 값을 의미한다. 위의 그림의 “예시1)” 길이값은 100이고, “예시2)” 길이값은 92이다.
READ 정보
  • 길이필드조정값: 전문에 있는 전문길이 값을 조정하는 데 사용한다.
  • 전문스킵길이: 전문의 불필요한 필드를 스킵하고 전달하고 싶을 때 해당 Offset 정보를 설정한다
WRITE 정보
  • 길이필드생성여부: 길이필드 생성 여부를 선택한다. 생성일 경우에는 전문 앞에 길이필드를 생성한다. 위의 그림의 예와 같이 길이값은 길이필드길이, 길이필드포함여부 등의 필드 속성에 따라 계산되어 생성된다.
2. 딜리미터

딜리미터 방식은 구분자로 프레임을 구분하는 방식이며, 구분자는 LF, CR+LF, Stx-Etx, 사용자정의로 구분된다. 각 구성항목에 대한 설명은 다음과 같다.

딜리미터구분
  • LF: 라인피드로 프레임을 구분한다.
  • CR+LF: 캐리지리턴+라인피드로 프레임을 구분한다.
  • Stx-Etx: 전문의 시작점은 Stx로 구분하고, 종료점은 Etx로 구분한다.
  • 사용자정의: 위에 구분자 이외 사용자정의 구분자로 프레임을 구분한다.
딜리미터

딜리미터구분이 사용자정의 일때 딜리미터 값을 입력한다.

3. 사용자코덱

사용자코덱 방식은 사용자 코덱 프로그램을 호출하여 프레임을 구분하는 방식이다. 사용자코덱 프로그램은 사전에 프로그램정보 화면을 통해 등록되어 있어야 한다.

코덱 프로그램 개발 방법은 Customizing을 참조한다.

☑ 커넥션재시도정책

커넥션 구분이 클라이언트이면서 연결 유지 커넥션의 연결이 끊어졌을 때 재연결에 대한 정책 정보를 등록한다. 각 구성항목에 대한 설명은 다음과 같다.

  • 커넥션재시도간격(초): 커넥션이 끊어졌을 때 재연결을 위한 간격을 설정한다.
  • 커넥션재시도횟수: 커넥션이 끊어졌을 때 재연결을 위한 재시도 최대 횟수를 설정한다.
  • 커넥션재시도대기시간(초): 커넥션 재시도 횟수를 초과한 경우 일정 시간 이후 다시 커넥션 재시도를 하게되는데, 이때 대기할 대기시간을 설정한다. 0으로 설정할 경우에는 재시도를 하지 않고 종료한다.

☑ 헬스체크정책

커넥션의 헬스체크 방법, 전송 주기 및 단락조건 등의 정보를 설정한다.

헬스체크방법은 송수신이없을때, 지정된시간간격 등으로 구분된다. 송수신이없을때 방식은 송수신이 없는 IDLE이 발생할 경우에 헬스체크 하는 방식이며, 일반적으로 사용된다. 지정된시간간격 방식은 지정된 시간 간격으로 헬스체크를 하는 방식이다.

각 구성항목에 대한 설명은 다음과 같다.

  • 헬스체크간격(초): 헬스체크하는 시간 간격을 설정한다. (기본값: 60)
  • 단락(Disconnect) 조건 횟수: 헬스체크 전문에 대한 응답이 없을 경우 세션을 끊기 위한 횟수를 입력한다. (기본값: 3)
정보

단, 커넥션 구분이 클라이언트이면서 비유지 커넥션은 설정할 수 없다.

☑ 소켓옵션

TCP 커넥션의 소켓옵션을 설정한다. 데이터를 보내거나 받는 방법을 지정한다. 소켓옵션은 전송버퍼옵션, 운영관리옵션 등으로 구분된다.

1. 전송버퍼옵션
  • 네이글알고리즘여부: 네트워크 전송 알고리즘인 Nagle 알고리즘 사용여부를 나타낸다. 참고로 Nagle 알고리즘이 적용되면, 운영체제는 패킷을 ACK가 오기를 기다렸다가 도착하면, 그 동안 쌓여있던 데이터를 한꺼번에 보내게 된다.
  • 소켓송신/수신버퍼크기: TCP 소켓의 송신/수신 버퍼 크기를 나타낸다
2. 운영관리옵션
  • 그레이스다운: 데이터 유실 없이 정상적으로 종료하기 위한 설정이다. 설정값(초)은 종료대기를 시간을 의미하며, 0을 설정할 경우 대기하지 않고 바로 종료한다.
  • 하프Close여부: TCP 소켓의 Half close 옵션을 사용할 것인지를 선택한다. 참고로 하프Close란 송신쪽에서 데이터를 WRITE하고 스트림 한쪽을 닫는 방식을 의미한다.
    주의

    특별한 경우가 아니면 Half close 옵션을 사용하지 말 것을 권장한다.

  • 커넥션타임아웃시간: 커넥션 구분이 클라이언트인 경우 상대방과 연결하기 위한 최대 대기 시간을 나타낸다. (기본: 10초)
  • 전송타임아웃(밀리초) : 전문을 전송한 후, 응답을 수신하기 위한 대기하는 시간
3. KEEPALIVE옵션
  • KEEP ALIVE 여부: KEEP ALIVE 사용 여부
  • KEEP ALIVE IDLE(초): 최초로 KEEP ALIVE 검사를 시작하기 위한 대기 시간
  • KEEP ALIVE COUNT: KEEP ALIVE 패킷을 보낸 후, 응답이 없을 경우 다시 보내는 횟수
  • KEEP ALIVE INTERVAL(초): KEEP ALIVE 패킷을 보낸 후, 응답이 없을 경우 다시 보내기 전 대기 시간

☑ 핸들러정보

사용자 핸들러는 커넥션의 이벤트에 대해 처리하는 사용자 프로그램이다.

커넥션 이벤트는 네트워크 소켓에서 발생하는 커넥션 활성화 (channelActive), 데이터 읽기 (channelRead), 데이터 읽기 완료 (channelReadComplete), 커넥션 비활성화 (channelInActive) 등의 이벤트를 의미한다.

사용자핸들러 프로그램은 사전에 프로그램정보 화면을 통해 등록되어 있어야 한다. 핸들러 프로그램 개발 방법은 Customizing을 참조한다.

핸들러 종류
설정값설명
인바운드 핸들러수신 이벤트를 처리하는 핸들러
아웃바운드 핸들러송신 이벤트를 처리하는 핸들러
인/아웃바운드 핸들러송수신 이벤트를 처리하는 핸들러
Idle State 핸들러IDLE 상태를 처리하는 핸들러

☑ 추가정보

  • 지정응답커넥션 : 해당 커넥션으로 요청을 받은 경우 응답할 특정 커넥션
  • 회선ID : 물리적인 회선에 대한 ID

☑ 소켓모드 설정

서버의 소켓처리 방식을 지정할 수 있으며, 설정 시 엔진에서 사용하는 모든 TCP커넥션에 적용된다.

시스템 파라미터의 SOCKET_MODE를 통해 설정할 수 있고, BXI는 NIO, Epoll를 지원한다.

  • NIO(논 블로킹 소켓): 모든 입출력 작업에서 완전한 비동기 API를 사용하여 처리한다.
  • Epoll(리눅스 전용 논 블로킹 소켓): 리눅스 기반의 Epoll API를 사용하여 비동기 처리한다. Linux Kernel 2.6.28 이상 버전에서만 지원한다.