SpringBoot配置开放多端口


在使用k8s存活探针的时候,如果需要增加端口专门用于存活探针的调用端口,可以通过以下方式开启多个端口。

新增扩展端口

application.yml

server:
    port: 8120
    extensionPorts: 8121

配置Tomcat

EmbeddedTomcatConfig.java

package com.wenlincheng.pika.auth.config;

import org.apache.catalina.connector.Connector;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;

/**
 * 配置开放多端口
 *
 * @author Pikaman
 * @version 1.0.0
 * @date 2021/4/2 1:56 下午
 */
@Configuration
public class EmbeddedTomcatConfig {

    @Value("${server.extensionPorts}")
    private String extensionPorts;

    @Bean
    public TomcatServletWebServerFactory servletContainer() {

        TomcatServletWebServerFactory tomcatWebServerFactory = new TomcatServletWebServerFactory();
        Connector[] additionalConnectors = this.additionalConnector();
        if (additionalConnectors != null && additionalConnectors.length > 0) {
            tomcatWebServerFactory.addAdditionalTomcatConnectors(additionalConnectors);
        }
        return tomcatWebServerFactory;
    }

    private Connector[] additionalConnector() {
        if (StringUtils.isBlank(this.extensionPorts)) {
            return null;
        }
        String[] ports = this.extensionPorts.split(",");
        List<Connector> result = new ArrayList<>();
        for (String port : ports) {
            Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
            connector.setScheme("http");
            connector.setPort(Integer.parseInt(port));
            result.add(connector);
        }
        return result.toArray(new Connector[] {});
    }
}

运行效果

2021-04-02 14:39:44.344  INFO 30701 -- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8110 (http) 8121 (http)
2021-04-02 14:39:44.355  INFO 30701 -- [           main] o.a.coyote.http11.Http11NioProtocol      : Initializing ProtocolHandler ["http-nio-8110"]
2021-04-02 14:39:44.356  INFO 30701 -- [           main] o.a.coyote.http11.Http11NioProtocol      : Initializing ProtocolHandler ["http-nio-8121"]
2021-04-02 14:39:44.362  INFO 30701 -- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-04-02 14:39:44.362  INFO 30701 -- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.37]

欢迎关注微信公众号:【皮卡战记】

皮卡战记

文章作者: Pikaman
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Pikaman !
评论
 上一篇
正则表达式 正则表达式
关于正则表达式概念正则表达式可以用来处理,搜索和匹配字符串,一个字符串就是一个正则表达式,至少可以匹配它本身: // 输出 true System.out.println(Pattern.matches("coder", "coder")
2020-04-14
下一篇 
【学习资源】电子书分享(持续更新) 【学习资源】电子书分享(持续更新)
这篇文章主要是用于分享自己收集的一些电子书,电子书的种类会涵盖后端、前端、算法与数据结构、数据库、开源框架等技术,当然还有非计算机领域的书籍也会陆续更新,大家可以通过网盘链接的方式自行获取。电子书主要是网上收集的,有些是自己花钱购买的,都是
2020-03-13
  目录