当前位置: 首页 > 知识库问答 >
问题:

在多个端口上为Spring Boot启动器endpoint提供服务

仲孙凡
2023-03-14

我们的主要应用程序在端口8443上提供服务,我们使用management.port在端口8444上提供执行器endpoint服务。

有没有办法让一个endpoint(健康endpoint)同时服务于8443和8444,而将其余endpoint仅保留在端口8444上?

共有1个答案

斜俊
2023-03-14

如果您正在使用内置的Tomcat容器,您可以:

  1. 删除管理端口配置属性
  2. 添加一个额外的连接器以服务于端口8444
  3. 添加过滤器以仅允许在该端口上访问健康检查

您的代码可能看起来像这样。

@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;
    }
}
 类似资料:
  • 问题内容: 我要对服务器进行编程,但是想知道我的想法是否可能。我的程序将在多个端口上输出到多个客户端-每个端口都可以由多个客户端访问。 通常,我会使用线程套接字服务器,但是在这种情况下,我需要它可用于多个端口。我想到的用法是下面一个模糊的伪代码: 启动服务器 侦听多个端口上的传入连接 识别正在连接的端口 如果是端口1,请启动一个线程以侦听客户端并输出消息类型 如果是端口2,请启动一个线程以侦听客户

  • 本文向大家介绍springboot在服务器上的几种启动方式(小结),包括了springboot在服务器上的几种启动方式(小结)的使用技巧和注意事项,需要的朋友参考一下 一、使用内置的tomcat,通过java -jar的方式启动 比如:java -jar bms.jar  但是这种启动方式 一旦关闭控制台 或者crtl+c 退出 此时应用就关闭了 所以我们需要换种方式 springboot中的ma

  • 本文向大家介绍Springboot启用多个监听端口代码实例,包括了Springboot启用多个监听端口代码实例的使用技巧和注意事项,需要的朋友参考一下 前段时间服务有这么个需求,web端的接口需要有web安全相关的整改,但是对内的接口并不需要。所以服务需要多个端口启动,在此记录下 代码如下 application.yml server: port: ${appPort:8800} addition

  • 我想在我的web服务器上运行多个非集群垂直市场。每个verticle由一个单独的进程/命令行启动,并为同一个主机和具有唯一路由的同一个端口创建自己的HTTP服务器(vertx.createHttpServer)。然而,这似乎不起作用,因为在开始一个垂直之后,所有进一步的垂直抛出一个BindException“地址已经在使用中”。 作为Vert. x的新手,我只能想到两种方法来通过这个考试: < l

  • 我能够在我的windows机器上运行单个zooKeer实例。但在单个windows机器上成功设置多个zooKeer实例。 根据指南,我执行了以下步骤: > 在conf文件夹中创建多个zoo.conf文件。结构如下 zookeeper\u主页--|形态--|动物园。cfg zoo\u 2。cfg zoo\u 3。cfg公司 zoo.cfg C:/opt/zooeger/data C:/opt/zoo

  • 我需要在2个或更多带有HTTPS的端口上运行同一台服务器。在早期的生产中,我们为服务配置了端口10500。目前,我们需要在启用SSL的情况下在443和10500上运行它。 java.lang.IllegalArgumentException:在方法名[0x160x030X010X010X000X010XFC0x030X030X810X00AC0x1B0x10`0xB80X8D0xAE0x9E0xE