• Nacos-spring-samples解析


    小白们在看这个用例的时候得注意,这个东东不知道他是为了让大家能够快速体验还是怎么的,

    反正我一开始没整明白,有点想当然的去理解了;

    我一直以为这个Nacos-spring-samples只是一个简单的客户端,跟我之前的自己用例中去调用nacos一样(没有去看他的代码),

    但是后面去看的时候有点想当然了,这个Nacos-spring-samples启动的时候触发了一个核心简易的nacos平台,看下他的配置文件

     <listener>
            <listener-class>com.alibaba.nacos.embedded.web.servlet.EmbeddedNacosHttpServerListener</listener-class>
        </listener>

    这个监听服务启动的时候会设置他的系统属性,就是nacos的IP地址加端口号,这个有点牛逼,动态的!

    public class EmbeddedNacosHttpServerListener implements ServletContextListener {
    
        private static final String SERVER_ADDRESS_PROPERTY_NAME = "nacos.server-addr";
    
        private EmbeddedNacosHttpServer httpServer;
    
    
        @Override
        public void contextInitialized(ServletContextEvent servletContextEvent) {
            try {
                if (!System.getProperties().containsKey(SERVER_ADDRESS_PROPERTY_NAME)) {
                    httpServer = new EmbeddedNacosHttpServer();
                    httpServer.start(false);
                    System.setProperty(SERVER_ADDRESS_PROPERTY_NAME, "127.0.0.1:" + httpServer.getPort());
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    
        @Override
        public void contextDestroyed(ServletContextEvent servletContextEvent) {
            if (httpServer != null) {
                httpServer.stop();
            }
        }
    }
     public EmbeddedNacosHttpServer start(boolean blocking) {
    
            httpServer.createContext(path, nacosConfigHttpHandler);
    
            nacosConfigHttpHandler.init();
    
            if (blocking) {
                startServer();
            } else {
                future = executorService.submit(new Runnable() {
                    @Override
                    public void run() {
                        startServer();
                    }
                });
            }
    
            return this;
        }
     private void startServer() {
            httpServer.start();
            String threadName = Thread.currentThread().getName();
            System.out.printf("[%s] Embedded Nacos HTTP Server(port : %d) is starting...%n", threadName, port);
            System.out.printf("[%s] Embedded Nacos HTTP Server mapped request URI : %s...%n", threadName, path);
        }

    这样他就启动了一个微缩版的nacos客户端平台,而不是我们通常理解的下面这个平台,之前我一直用下面这个平台的参数去做测试,(# ̄~ ̄#)

    提醒大家看的时候不要想当然,多看看代码,把下面这个方法简单的设置下,就可以设置成我们之前想当然的nacos

    @Override
        public void contextInitialized(ServletContextEvent servletContextEvent) {
            System.setProperty(SERVER_ADDRESS_PROPERTY_NAME, "127.0.0.1:" +"8848");
    
        }
  • 相关阅读:
    Undo/Redo实现
    [CruiseControl]binary安装和启动
    perl读写文件和命令行解析
    C++跨平台IDE之CodeBlocks
    Swig实现多语言接口
    让人梦萦的西安小吃(转载)
    推荐:Visual Basic.NET Windows Forms 编程
    健康生活16个健康习惯
    推荐一个ASP的内容管理框架(ASP Nuke)
    《企业应用架构模式》读书笔记(1)
  • 原文地址:https://www.cnblogs.com/longxok/p/11077637.html
Copyright © 2020-2023  润新知