public class CustomKeepAliveFilter implements Filter
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
logger.info("######心跳接口进入过滤器##########,uri=={}",request.getRequestURI());
Constants.PROTOCOL.setLength(0);
Constants.PROTOCOL.append(request.getScheme());
Boolean flag = Boolean.TRUE;
if(MapUtils.isEmpty(Constants.SCHEDULED_TASKS) ||
!Constants.SCHEDULED_TASKS.containsKey
(String.valueOf(RequestEnum.STATIONS_LIST.getCode()))){
flag = getAllStations(response);
}
if(flag){
chain.doFilter(request, response);
}
InterfaceResponseCache.KEEP_ALIVE_TIME.set(Instant.now().getEpochSecond());
//发生异常将错误消息以json返回
ResponseBean<Boolean> responseBean = new ResponseBean<>();
responseBean.setResults(Boolean.FALSE);
responseBean.setMessage(ResultCodeEnum.SUCCESS.getMessage());
String jsonString = JSON.toJSONString(responseBean);
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(jsonString.getBytes());
outputStream.flush();
注册过滤器
@Bean
public FilterRegistrationBean getFilterRegistrationBean(CustomKeepAliveFilter customKeepAliveFilter){
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(customKeepAliveFilter);
registration.setName("customKeepAliveFilter");
registration.addUrlPatterns("/dashboard/heart/keepalive");
registration.setOrder(1);
return registration;
}