我们的主要应用程序在端口 8443 上management.port
提供服务,我们使用在端口 8444 上提供执行器端点。
有没有办法让一个端点(健康端点)同时在 8443 和 8444 上服务,而其余端点只留在端口 8444 上?
我们的主要应用程序在端口 8443 上management.port
提供服务,我们使用在端口 8444 上提供执行器端点。
有没有办法让一个端点(健康端点)同时在 8443 和 8444 上服务,而其余端点只留在端口 8444 上?
如果您使用的是内置的 Tomcat 容器,您可以:
您的代码可能看起来像这样。
@ComponentScan
@Configuration
@EnableAutoConfiguration
public class Application extends WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter implements EmbeddedServletContainerCustomizer {
@Autowired
private PortInterceptor portInterceptor;
public static void main(String[] args) throws Exception {
SpringApplication application = new SpringApplication(Application.class);
application.run(args);
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(portInterceptor);
}
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory)container;
Connector connector = new Connector();
connector.setPort(8444);
tomcat.addAdditionalTomcatConnectors(connector);
}
}
@Component
public class PortInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if(request.getLocalPort() == 8444){
return isHealthCheckRequest(request);
}
return true;
}
}