Skip to main content
Version: 4.6.1-saas

API Reference

Complete reference for NetFUNNEL Java Agent functions and usage.


Netfunnel Class

The core class of the Java Agent. Used in Interceptor or Filter to perform NetFUNNEL queue control.

Constructor

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

Parameters:

ParameterTypeDescription
configNetFunnelInitializeNetFUNNEL initialization configuration object
serviceNetFunnelServletServiceService object that handles HTTP request/response
loggerObjectLogger object (optional, can be null)
logLevelObjectLog level (optional, can be null)

Example:

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

run Method

Purpose: Executes NetFUNNEL queue control.

Function Signature:

boolean run()

Return Value: boolean

  • true: Request is processed normally and can proceed to the next filter/interceptor
  • false: Request is blocked or redirected, so it should not proceed to the next filter/interceptor

Behavior:

  1. Trigger rule matching: Compare the URL of the page accessed by the user with trigger rules
  2. When rules match: Request entry to NetFUNNEL server
  3. When waiting response: Automatically redirect to waiting room page (302)
  4. When entry succeeds: Issue key and continue with the request

Example:

// Used in 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();
}

// Used in 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; // Redirected or blocked
}
chain.doFilter(servletRequest, servletResponse);
}

NetFunnelServletService Class

Service class that handles HTTP request/response.

Constructor

NetFunnelServletService(HttpServletRequest request, HttpServletResponse response)

Parameters:

ParameterTypeDescription
requestHttpServletRequestHTTP request object
responseHttpServletResponseHTTP response object

Example:

NetFunnelServletService service = new NetFunnelServletService(request, response);

Operation Flow

Normal Flow

  1. User accesses page
  2. Call netfunnel.run() in Interceptor/Filter
  3. Check trigger rule matching
  4. When rules match, request entry to NetFUNNEL server
  5. When entry is allowed, issue key and continue with request
  6. run() method returns true

Waiting Flow

  1. User accesses page
  2. Call netfunnel.run() in Interceptor/Filter
  3. Check trigger rule matching
  4. When rules match, request entry to NetFUNNEL server
  5. Receive waiting response
  6. Automatically redirect to waiting room page (302)
  7. run() method returns false

Blocked Flow

  1. User accesses page
  2. Call netfunnel.run() in Interceptor/Filter
  3. Check trigger rule matching
  4. When rules match, request entry to NetFUNNEL server
  5. Receive blocked response
  6. Redirect to blocked page or handle blocking
  7. run() method returns false

Best Practices

Centralized Configuration

@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();
}
}

Environment-Specific Configuration

@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();
}
}