API 참조
NetFUNNEL Java Agent 함수 및 사용법에 대한 완전한 참조입니다.
Netfunnel 클래스
Java Agent의 핵심 클래스입니다. Interceptor 또는 Filter에서 사용하여 NetFUNNEL 대기열 제어를 수행합니다.
생성자
Netfunnel(NetFunnelInitialize config, NetFunnelServletService service, Object logger, Object logLevel)
매개변수:
| 매개변수 | 유형 | 설명 |
|---|---|---|
config | NetFunnelInitialize | NetFUNNEL 초기화 설정 객체 |
service | NetFunnelServletService | HTTP 요청/응답을 처리하는 서비스 객체 |
logger | Object | 로거 객체 (선택사항, null 가능) |
logLevel | Object | 로그 레벨 (선택사항, 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: 요청이 차단되었거나 리다이렉트되었으므로 다음 필터/인터셉터로 진행하지 않음
동작:
- 트리거 규칙 매칭: 사용자가 접속한 페이지의 URL과 트리거 규칙을 비교
- 규칙 일치 시: NetFUNNEL 서버에 진입 요청
- 대기 응답 시: 자동으로 대기실 페이지로 리다이렉트 (302)
- 진입 성공 시: 키를 발급하고 요청을 계속 진행
예제:
// 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)
매개변수:
| 매개변수 | 유형 | 설명 |
|---|---|---|
request | HttpServletRequest | HTTP 요청 객체 |
response | HttpServletResponse | HTTP 응답 객체 |
예제:
NetFunnelServletService service = new NetFunnelServletService(request, response);
동작 흐름
정상 흐름
- 사용자가 페이지에 접속
- Interceptor/Filter에서
netfunnel.run()호출 - 트리거 규칙 매칭 확인
- 규칙 일치 시 NetFUNNEL 서버에 진입 요청
- 진입 허용 시 키 발급 및 요청 계속 진행
run()메서드가true반환
대기 흐름
- 사용자가 페이지에 접속
- Interceptor/Filter에서
netfunnel.run()호출 - 트리거 규칙 매칭 확인
- 규칙 일치 시 NetFUNNEL 서버에 진입 요청
- 대기 응답 수신
- 자동으로 대기실 페이지로 리다이렉트 (302)
run()메서드가false반환
차단 흐름
- 사용자가 페이지에 접속
- Interceptor/Filter에서
netfunnel.run()호출 - 트리거 규칙 매칭 확인
- 규칙 일치 시 NetFUNNEL 서버에 진입 요청
- 차단 응답 수신
- 차단 페이지로 리다이렉트 또는 차단 처리
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();
}
}