본문으로 건너뛰기
버전: 4.6.1-saas

API 참조

NetFUNNEL Java Agent 함수 및 사용법에 대한 완전한 참조입니다.


Netfunnel 클래스

Java Agent의 핵심 클래스입니다. Interceptor 또는 Filter에서 사용하여 NetFUNNEL 대기열 제어를 수행합니다.

생성자

Netfunnel(NetFunnelInitialize config, NetFunnelServletService service, Object logger, Object logLevel)

매개변수:

매개변수유형설명
configNetFunnelInitializeNetFUNNEL 초기화 설정 객체
serviceNetFunnelServletServiceHTTP 요청/응답을 처리하는 서비스 객체
loggerObject로거 객체 (선택사항, null 가능)
logLevelObject로그 레벨 (선택사항, null 가능)

예제:

NetFunnelInitialize config = NetFunnelInitialize.Companion.builder()
.clientId("{{CLIENT_ID}}")
.secretKey("{{SECRET_KEY}}")
.build();
Netfunnel netfunnel = new Netfunnel(config, new NetFunnelServletService(request, response), null, null);

run 메서드

목적: NetFUNNEL 대기열 제어를 실행합니다.

함수 시그니처:

boolean run()

반환값: boolean

  • true: 요청이 정상적으로 처리되어 다음 필터/인터셉터로 진행 가능
  • false: 요청이 차단되었거나 리다이렉트되었으므로 다음 필터/인터셉터로 진행하지 않음

동작:

  1. 트리거 규칙 매칭: 사용자가 접속한 페이지의 URL과 트리거 규칙을 비교
  2. 규칙 일치 시: NetFUNNEL 서버에 진입 요청
  3. 대기 응답 시: 자동으로 대기실 페이지로 리다이렉트 (302)
  4. 진입 성공 시: 키를 발급하고 요청을 계속 진행

예제:

// Interceptor에서 사용
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
NetFunnelInitialize config = NetFunnelInitialize.Companion.builder()
.clientId("{{CLIENT_ID}}")
.secretKey("{{SECRET_KEY}}")
.build();
Netfunnel netfunnel = new Netfunnel(config, new NetFunnelServletService(request, response), null, null);
return netfunnel.run();
}

// Filter에서 사용
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
NetFunnelInitialize config = NetFunnelInitialize.Companion.builder()
.clientId("{{CLIENT_ID}}")
.secretKey("{{SECRET_KEY}}")
.build();
Netfunnel netfunnel = new Netfunnel(config, new NetFunnelServletService(request, response), null, null);
if (!netfunnel.run()) {
return; // 리다이렉트되었거나 차단된 경우
}
chain.doFilter(servletRequest, servletResponse);
}

NetFunnelServletService 클래스

HTTP 요청/응답을 처리하는 서비스 클래스입니다.

생성자

NetFunnelServletService(HttpServletRequest request, HttpServletResponse response)

매개변수:

매개변수유형설명
requestHttpServletRequestHTTP 요청 객체
responseHttpServletResponseHTTP 응답 객체

예제:

NetFunnelServletService service = new NetFunnelServletService(request, response);

동작 흐름

정상 흐름

  1. 사용자가 페이지에 접속
  2. Interceptor/Filter에서 netfunnel.run() 호출
  3. 트리거 규칙 매칭 확인
  4. 규칙 일치 시 NetFUNNEL 서버에 진입 요청
  5. 진입 허용 시 키 발급 및 요청 계속 진행
  6. run() 메서드가 true 반환

대기 흐름

  1. 사용자가 페이지에 접속
  2. Interceptor/Filter에서 netfunnel.run() 호출
  3. 트리거 규칙 매칭 확인
  4. 규칙 일치 시 NetFUNNEL 서버에 진입 요청
  5. 대기 응답 수신
  6. 자동으로 대기실 페이지로 리다이렉트 (302)
  7. run() 메서드가 false 반환

차단 흐름

  1. 사용자가 페이지에 접속
  2. Interceptor/Filter에서 netfunnel.run() 호출
  3. 트리거 규칙 매칭 확인
  4. 규칙 일치 시 NetFUNNEL 서버에 진입 요청
  5. 차단 응답 수신
  6. 차단 페이지로 리다이렉트 또는 차단 처리
  7. run() 메서드가 false 반환

모범 사례

중앙 집중식 구성

@Component
public class NetFunnelConfig {
private static final String CLIENT_ID = "{{CLIENT_ID}}";
private static final String SECRET_KEY = "{{SECRET_KEY}}";

public NetFunnelInitialize getConfig() {
return NetFunnelInitialize.Companion.builder()
.clientId(CLIENT_ID)
.secretKey(SECRET_KEY)
.build();
}
}

환경별 설정

@Configuration
public class NetFunnelConfig {
@Value("${netfunnel.client-id}")
private String clientId;

@Value("${netfunnel.secret-key}")
private String secretKey;

public NetFunnelInitialize getConfig() {
return NetFunnelInitialize.Companion.builder()
.clientId(clientId)
.secretKey(secretKey)
.build();
}
}

관련 문서