Jersey clientFilter 過(guò)濾
eureka-wiki

image
POM依賴:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19.1</version>
</dependency>
實(shí)現(xiàn)抽象類ClientFilter的handle方法
public class IpCilentFilter extends ClientFilter {
@Override
public ClientResponse handle(ClientRequest clientRequest) throws ClientHandlerException {
//響應(yīng)對(duì)象的處理
ClientResponse response = this.getNext().handle(clientRequest);
return response;
}
}
注入clientFilter
@Bean
public DiscoveryClientOptionalArgs discoveryClientOptionalArgs() {
DiscoveryClientOptionalArgs discoveryClientOptionalArgs = new DiscoveryClientOptionalArgs();
discoveryClientOptionalArgs.setAdditionalFilters(Collections.singletonList(new IpCilentFilter()));
return discoveryClientOptionalArgs;
}
自定義filter過(guò)濾
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean registration = new FilterRegistrationBean(new ServerRequestAuthFilter());
registration.addUrlPatterns("/*");
return registration;
}
public class ServerRequestAuthFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
//業(yè)務(wù)實(shí)現(xiàn),根據(jù)請(qǐng)求的IP或者參數(shù)判斷是否可以執(zhí)行注冊(cè)或者訪問(wèn)
filterChain.doFilter(request, response);
}
}
攔截具體客戶端注冊(cè)、續(xù)約、下線請(qǐng)求,請(qǐng)參考
/eureka/apps
com.netflix.eureka.resources.ApplicationResource

image
總結(jié):
eureka:
client:
fetch-registry: true
- 跟了下源碼,第一種clientFilter只支持懶加載模式(版本1.6.2)
- 自定義filter過(guò)濾比clientFilter 更加靈活,因?yàn)閏lientfilter不會(huì)限制在eureka-server上的任何東西