最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nacos服務(wù)無法注冊到nacos服務(wù)中心問題及解決

 更新時(shí)間:2025年11月25日 15:50:55   作者:天黑請?閉眼  
本文詳細(xì)描述了在Linux服務(wù)器上使用Tomcat啟動(dòng)Java程序時(shí),服務(wù)無法注冊到Nacos的排查過程,通過一系列排查步驟,發(fā)現(xiàn)問題出在Tomcat的啟動(dòng)機(jī)制上,導(dǎo)致無法自動(dòng)觸發(fā)服務(wù)注冊事件,最終,通過實(shí)現(xiàn)`ApplicationRunner`接口,手動(dòng)觸發(fā)服務(wù)注冊事件,解決了問題

簡介

1、程序在本機(jī)用啟動(dòng)類啟動(dòng),服務(wù)可以正常注冊到nacos

2、程序在Linux服務(wù)器用tomcat啟動(dòng),服務(wù)無法注冊到nacos

依賴

<!--客戶端負(fù)載均衡loadbalancer-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-loadbalancer</artifactId>
	<version>4.1.3</version>
</dependency>
<!-- nacos -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	<version>${spring-cloud-alibaba.version}</version>
</dependency>
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
	<version>${spring-cloud-alibaba.version}</version>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-bootstrap</artifactId>
	<version>${spring-cloud-bootstrap.version}</version>
</dependency>
<!-- sentinel -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
	<version>${spring-cloud-alibaba.version}</version>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
	<version>${spring-cloud-openfeign.version}</version>
</dependency>

異常情況

服務(wù)啟動(dòng)后無法注冊到服務(wù)中心

排查

1、檢查本機(jī)與Linux服務(wù)器程序配置文件是否存在差異,導(dǎo)致服務(wù)無法注冊

結(jié)果:配置完全相同

2、查看Linux日志,發(fā)現(xiàn)程序?qū)acos配置文件的讀取是正常的,可以正常訪問nacos的配置中心讀取配置文件

結(jié)果:nacos配置文件可以讀取,服務(wù)無法注冊到nacos

3、查看Linux服務(wù)器其他程序是否可以注冊到nacos

結(jié)果:同一臺Linux服務(wù)器其他程序可以正常注冊到nacos

4、查看可以正常注冊的程序,使用的依賴版本與當(dāng)前無法注冊的程序依賴版本是否一致

結(jié)果:openFeign、Nacos、Spring Cloud、Spring Boot依賴版本完全一致

5、將當(dāng)前程序tomcat放到其他Linux服務(wù)器啟動(dòng),服務(wù)依舊無法注冊到nacos

結(jié)果:排除是Linux服務(wù)器本身的問題

6、將程序放到可以正常注冊的程序所在的tomcat

結(jié)果:原先可以正常注冊的程序依舊正常,當(dāng)前程序還是無法正常注冊到nacos,排除tomcat的問題

斷點(diǎn)調(diào)試

1、本機(jī)用啟動(dòng)類啟動(dòng)服務(wù),可以正常觸發(fā)AbstractAutoServiceRegistration監(jiān)聽的WebServerInitializedEvent事件,會執(zhí)行服務(wù)注冊邏輯onApplicationEvent()

2、Linux服務(wù)器tomcat啟動(dòng),無法觸發(fā)AbstractAutoServiceRegistration監(jiān)聽的WebServerInitializedEvent事件,沒有執(zhí)行服務(wù)注冊邏輯onApplicationEvent()

原因

無法觸發(fā)AbstractAutoServiceRegistration監(jiān)聽的WebServerInitializedEvent事件,沒有執(zhí)行服務(wù)注冊邏輯onApplicationEvent()

根本原因不明?。。?/p>

解決

既然無法自動(dòng)觸發(fā)WebServerInitializedEvent事件,從而自動(dòng)進(jìn)行服務(wù)注冊,那就手動(dòng)進(jìn)行注冊

實(shí)現(xiàn)ApplicationRunner接口,監(jiān)聽服務(wù)啟動(dòng)事件,從而主動(dòng)進(jìn)行服務(wù)注冊

將以下類添加到程序中即可

NacosRegisterOnWar

package com.xxx.nacosregister;

import com.alibaba.cloud.nacos.ConditionalOnNacosDiscoveryEnabled;
import com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration;
import com.alibaba.cloud.nacos.registry.NacosRegistration;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.Query;
import java.lang.management.ManagementFactory;
import java.util.Set;

@Component
@ConditionalOnNacosDiscoveryEnabled
@Slf4j
public class NacosRegisterOnWar implements ApplicationRunner {

    @Autowired
    private NacosRegistration registration;

    @Autowired
    private NacosAutoServiceRegistration nacosAutoServiceRegistration;

    @Value("${server.port}")
    Integer port;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        if (registration != null && port != null) {
            Integer registerPort = port;
            try {
                String tomcatPort = getTomcatPort();
                if(StringUtils.isNotBlank(tomcatPort)){
                    registerPort = new Integer(tomcatPort);
                }
            } catch (Exception e) {
                log.warn("{nacos 注冊} 獲取外部Tomcat端口異常:",e);
            }
            registration.setPort(registerPort);
            nacosAutoServiceRegistration.start();
        }
    }

    /**
     *	獲取外部tomcat端口
     */
    public String getTomcatPort() throws Exception {
        MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
        Set<ObjectName> objectNames = beanServer.queryNames(
                new ObjectName("*:type=Connector,*"),
                Query.match(Query.attr("protocol"),
                        Query.value("HTTP/1.1")));
        String port = "";
        for (ObjectName objectName : objectNames) {
            port = objectName.getKeyProperty("port");
            if(StringUtils.isNotBlank(port)){
                return port;
            }
        }
        return port;
    }
}

結(jié)果

服務(wù)可以正常注冊到nacos

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot 關(guān)于Feign的超時(shí)時(shí)間配置操作

    SpringBoot 關(guān)于Feign的超時(shí)時(shí)間配置操作

    這篇文章主要介紹了SpringBoot 關(guān)于Feign的超時(shí)時(shí)間配置操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Socket與ServerSocket類構(gòu)造方法與API

    Socket與ServerSocket類構(gòu)造方法與API

    今天小編為大家整理了Socket與ServerSocket類構(gòu)造方法與API,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值。需要的朋友可以收藏下,方便下次瀏覽觀看
    2021-12-12
  • 關(guān)于Netty--Http請求處理方式

    關(guān)于Netty--Http請求處理方式

    這篇文章主要介紹了關(guān)于Netty--Http請求處理方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java IO流之字節(jié)輸入流的使用詳解

    Java IO流之字節(jié)輸入流的使用詳解

    這篇文章主要為大家詳細(xì)介紹了Java IO流中字節(jié)輸入流的使用,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下
    2022-08-08
  • javaweb中ajax請求后臺servlet(實(shí)例)

    javaweb中ajax請求后臺servlet(實(shí)例)

    下面小編就為大家?guī)硪黄猨avaweb中ajax請求后臺servlet(實(shí)例)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • Jackson自定義序列化反序列化注解加解密字段詳解

    Jackson自定義序列化反序列化注解加解密字段詳解

    這篇文章主要介紹了Jackson自定義序列化反序列化注解加解密字段詳解,一些場景中,數(shù)據(jù)庫字段用于存儲json格式數(shù)據(jù),處于安全的考慮,該json數(shù)據(jù)中,某些敏感信息字段需要做加密存儲,例如身份證號、手機(jī)號等,需要的朋友可以參考下
    2023-11-11
  • Spring Boot web項(xiàng)目的TDD流程

    Spring Boot web項(xiàng)目的TDD流程

    TDD(Test-driven development) 測試驅(qū)動(dòng)開發(fā),簡單點(diǎn)說就是編寫測試,再編寫代碼。這是首要一條,不可動(dòng)搖的一條,先寫代碼后寫測試的都是假TDD。
    2021-05-05
  • 淺析Java虛擬機(jī)詳解之概述、對象生存法則

    淺析Java虛擬機(jī)詳解之概述、對象生存法則

    這篇文章主要介紹了Java虛擬機(jī)詳解之概述、對象生存法則,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java 求解如何把二叉搜索樹轉(zhuǎn)換為累加樹

    Java 求解如何把二叉搜索樹轉(zhuǎn)換為累加樹

    這篇文章主要介紹了Java 求解把二叉搜索樹轉(zhuǎn)換為累加樹的代碼,總之需要觀察示例節(jié)點(diǎn)的規(guī)律,需要記錄上個(gè)節(jié)點(diǎn)的情況,注意引入前驅(qū)節(jié)點(diǎn)pre,具體實(shí)例代碼跟隨小編一起看看吧
    2021-11-11
  • Java中Connection timed out和Connection refused的區(qū)別講解

    Java中Connection timed out和Connection refused的區(qū)別講解

    今天小編就為大家分享一篇關(guān)于Java中Connection timed out和Connection refused的區(qū)別講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04

最新評論

潢川县| 祁连县| 牡丹江市| 临高县| 钦州市| 盈江县| 连云港市| 靖远县| 子长县| 修水县| 五河县| 兴宁市| 祥云县| 吉木乃县| 峨山| 新龙县| 青州市| 灵山县| 义马市| 措美县| 峨山| 遵义市| 含山县| 城固县| 光泽县| 江陵县| 临桂县| 佛冈县| 南城县| 明溪县| 平陆县| 溆浦县| 同德县| 绥化市| 治多县| 兴安县| 图木舒克市| 漾濞| 渑池县| 榕江县| 兰州市|