@Slf4j
@Component
@Order(Integer.MIN_VALUE)
public class NacosRegisterServiceInit implements CommandLineRunner {
@Autowired
private NacosDiscoveryProperties nacosDiscoveryProperties;
@Autowired
private NacosServiceManager nacosServiceManager;
@Override
public void run(String... args) throws Exception {
//注册服务
registerInstance(nacosDiscoveryProperties,nacosServiceManager);
//服务下线
nacosShutdownHook(nacosDiscoveryProperties,nacosServiceManager);
}
/**
* 注册服务
*
* @param nacosProperties
* @param nacosServiceManager
*/
private void registerInstance(NacosDiscoveryProperties nacosProperties, NacosServiceManager nacosServiceManager) {
String serviceName = nacosProperties.getService();
String groupName = nacosProperties.getGroup();
String clusterName = nacosProperties.getClusterName();
String ip = nacosProperties.getIp();
int nacosPort = nacosProperties.getPort();
try {
nacosServiceManager.getNamingService().registerInstance(serviceName, groupName, ip, nacosPort, clusterName);
} catch (NacosException e) {
log.error("registerInstance from nacos error", e);
}
log.info("{} start, registerInstance.serviceName:{},groupName:{},ip:{},port:{},clusterName:{}", SpringUtil.getApplicationName(), serviceName, groupName, ip, nacosPort, clusterName);
}
/**
* 注册钩子函数,停机时从nacos下线
*
* @param nacosProperties
* @param nacosServiceManager
*/
private void nacosShutdownHook(NacosDiscoveryProperties nacosProperties, NacosServiceManager nacosServiceManager) {
RuntimeUtil.addShutdownHook(() -> {
String serviceName = nacosProperties.getService();
String groupName = nacosProperties.getGroup();
String clusterName = nacosProperties.getClusterName();
String ip = nacosProperties.getIp();
int nacosPort = nacosProperties.getPort();
try {
nacosServiceManager.getNamingService().deregisterInstance(serviceName, groupName, ip, nacosPort, clusterName);
} catch (NacosException e) {
log.error("deregister from nacos error", e);
}
log.info("{} stop, deregisterNacosInstance.serviceName:{},groupName:{},ip:{},port:{},clusterName:{}", SpringUtil.getApplicationName(), serviceName, groupName, ip, nacosPort, clusterName);
});
}
}
相关推荐
Spring Boot WAR包部署Tomcat后Nacos注册失败的3种解决方案(附完整代码)
本文深入分析了Spring Boot应用以WAR包形式部署到外部Tomcat容器后,Nacos服务注册失败的根源,并提供了三种经过生产验证的解决方案。核心问题在于外部容器部署导致Spring Boot的WebServerInitializedEvent缺失,进而中断了Nacos的自动注册流程。文章详细阐述了基于ApplicationRunner手动注册、模拟事件发布以及配置驱动的自适应策略,并附有完整的代码实现,帮助开发者彻底解决这一常见的企业级部署难题。
Nacos服务注册
【代码】Nacos服务注册。
为什么Spring Boot的war包在Tomcat下无法注册到Nacos?深入源码解析与正确配置指南
本文深入解析了Spring Boot应用以war包形式部署到外部Tomcat时,服务无法注册到Nacos的根本原因。核心在于外部容器启动不会触发Spring Boot的WebServerInitializedEvent事件,导致注册流程中断。文章提供了基于ApplicationRunner和ServletContextListener的两种解决方案,通过手动获取Tomcat端口并触发注册,确保服务能正常注册到Nacos。
SpringBoot整合nacos(服务注册与发现)
springboot通过nacos进行服务间调用 nacos简单配置
VI恒流源原理详细分析(0~10V转0/4~20mA)
但是此电阻也不能无限增加,首先我们所列方程均是基于运放虚短虚断的假设,此假设又是基于运放输入阻抗无穷大,输出阻抗无穷小的前提条件,然而实际的运放并非理想运放,对于TL082IDR这款运放,其Rid(Common-mode input resistance)典型值为1TΩ,以此来看感觉1MΩ确实还不是很大,但是还有另一个影响因素需要考虑,那就是电路的抗干扰能力,原则上,电阻越大受到外部干扰的可能性越大。也就是实现Uin 0~10V变化时对应Iout 0~20mA的一个线性对应关系。
基于STM32的频率计(采用外部中断的方式)
前言 最近在了解电赛相关的东西,和指导老师交流一下,我决定先从最简单的频率计做起。 频率计是来检测信号的频率的,在做频率计的时候可以用信号发生器发出的信号来进行测试。 原理 这是最基础的方波,我们可以通过检测上升沿的方式来测量其频率。从周期的角度出发连续两个上升沿的时间就是这个方波的周期,那这个周期分之一就是这个方波的频率了。 在思考了一段时间~~(我是萌新。。)~~ 我觉得有两个方法可以实现,第一个是采用stm32定时器的输入捕获功能,第二个就是用外部中断来实现这个功能。正如标题,我这次采用外部中断的方
Nacos手摸手教学【二】Nacos注册中心
Nacos注册中心
智能车竞赛新手必看:单车定向组直线竞速与八字慢速实战技巧
本文为智能车竞赛新手提供单车定向组直线竞速与八字慢速的实战技巧,涵盖赛道分析、动力调校、传感器配置等关键环节。通过真实案例和代码示例,详细讲解如何平衡速度与稳定性,帮助选手避免常见失误,提升比赛成绩。特别针对智能车竞赛中的直线竞速和八字慢速项目,提供从硬件选型到临场策略的全方位指导。
非 Spring Boot 的 SpringMVC 项目中注册 Nacos
/ 注意端口和服务名。System.out.println("注册到 Nacos 成功!启动 Spring 的项目,那么你可以写一个监听器,在项目启动时把服务注册到 Nacos。-- 选择稳定版本 -->// 注册服务(服务名,IP,端口)// 关闭时注销服务(可选)// Nacos 配置。里读取服务名和端口,而不是写死在代码里。
AD5940阻抗测量开发板实战:从源码获取到工程调试全解析
本文详细解析了AD5940阻抗测量开发板的实战应用,从源码获取到工程调试的全过程。AD5940作为ADI公司的高精度阻抗测量前端芯片,适用于生物阻抗分析、电化学传感器等领域。文章提供了开发环境搭建、工程配置、常见问题排查及进阶调试技巧,帮助开发者快速掌握AD5940开发板的使用方法。
华为OD机试真题:明日之星选举 (Java/Py/C/ C++/JS/GO)
华为OD机试(机考)双机位C卷 【明日之星选举】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 明日之星选举。
Spring boot项目打包war部署外部tomcat无法注册到Nacos
一、 现象:Spring boot 或者 Spring cloud 项目,如果用默认的打包jar, 使用内嵌的tomcat 启动,可以正常注册到Nacos 注册中心。 如果打包为war,部署到外部tomcat, 调用正常,消费者可以调用到 生产者服务,但是Nacos 后台的服务列表里没有显示。很诡异。。。 二、 解决方法: 使用ApplicationRunner在服务启动完成后,加载注册。 /** * @Description 项目打包war情况下部署外部tomcat,需该方式注册...
《网络安全自学教程》- MySQL脱库原理和步骤
MySQL脱库,脱库的原理,怎么脱库,脱库的步骤,一库三表六字段
Nacos手动注册,Nacos内网IP的解决办法,自动获取外网注册服务
废话不说 直接上代码pom文件: NacosUtils工具类: bootstrap.yml配置:
Python 爬虫实战:破解网页 JS 混淆加密参数
摘要:本文针对Python爬虫破解JS混淆加密参数的技术难题,系统解析了变量混淆、控制流混淆、AES/MD5加密混淆等常见类型及其检测方法,提出"定位-还原-复现"的三步破解策略。通过实战案例详细演示了从JS逆向分析到Python代码实现的完整流程,包括MD5签名生成、AES加密复现等核心代码实现,并对不同混淆场景的破解方法进行了对比分析。文中特别强调技术应用的合规性边界,指出开发者应遵守相关法律法规,在合理范围内使用逆向技术。随着反爬技术升级,建议开发者持续学习动态调试等进阶技能,同时
模型实战(16)之StrongSort (OSNET)配合YOLOv5、v7、v8 实现多目标跟踪详解
StrongSort (OSNET)配合YOLOv5、v7、v8 实现多目标跟踪详解
nacos注册服务失败_Spring Boot项目部署到tomcat下无法Nacos中注册服务
问题使用Nacos作为注册中心的Spring Boot项目,以war包形式部署到服务器上,启动项目发现该服务无法在Nacos中注册。分析查看源码,需从nacos的注册类找起,查找后发现,nacos注册类NacosAutoServiceRegistration继承了Spring Cloud中AbstractAutoServiceRegistration, 而在AbstractAutoServiceR...
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
Nacos-Client注册源码分析
1. 注册流程 源码目录下client模块下的一个测试类,模仿客户端服务注册流程 NamingTest.java @Ignore public class NamingTest { @Test public void testServiceList() throws Exception { Properties properties = new Properties(); properties.put(PropertyK..
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
Spring Boot WAR包部署Tomcat时Nacos服务注册失效的深度解析与实战修复
本文深度解析了Spring Boot应用打包为WAR部署至外部Tomcat时,Nacos服务注册失效的根本原因。核心在于外部Tomcat无法触发Spring Boot内嵌容器的WebServerInitializedEvent事件,导致自动注册流程中断。文章提供了基于ApplicationRunner接口的实战修复方案,通过JMX动态获取Tomcat端口并手动触发Nacos客户端注册,确保服务正常上线。
最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版
Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。
Spring Boot WAR包部署Tomcat:Nacos服务注册失效的根源剖析与实战修复
本文深入剖析了Spring Boot应用以WAR包形式部署到Tomcat时Nacos服务注册失效的根本原因,揭示了WebServerInitializedEvent事件缺失导致的问题本质。通过JMX动态获取Tomcat端口和ApplicationRunner触发注册的实战方案,提供了完整的修复代码实现,并给出版本兼容性检查、防火墙设置等部署验证要点,帮助开发者彻底解决外部容器部署时的服务注册难题。
HoRain云--SpringBoot WAR部署Nacos注册终极解决方案
摘要: SpringBoot项目打包为war部署到外部Tomcat后,因缺失内嵌容器的WebServerInitializedEvent事件,导致Nacos服务注册失败。解决方案是通过ApplicationRunner手动触发注册:获取Tomcat实际端口(优先通过JMX,失败则回退server.port配置),并调用NacosAutoServiceRegistration.start()。需同步检查基础配置(依赖、注解、Nacos地址及版本兼容性),部署后验证日志及Nacos控制台。若仍失败,需排查网络、
Load Logback Configuration of Nacos fail, message: ‘void ch.qos.logback...(java.net.URL)‘ 的解决办法
关于这个巨坑,是在架构新项目的时候遇到的,使用 alibaba-nacos 来作为注册中心,在之前的项目架构中,使用的是Spring Boot 2.6.x的版本,在新项目架构中,发现2.x版本的生态组件,要么停止维护了,要么是各种安全漏洞,例如在Sprring Boot 2.6.x中的nacos-client 2.0.3,包括和以下是nacos-client 2.0.3的1个直接安全漏洞:作为主架构师,果断选择了更新Spring Boot 3.3.1 ,进入到新的组件生态,
Spring Boot 微服务中获取自身IP端口和注册信息(Registration)
在Spring Boot微服务中,服务常需获取自身的IP、端口和注册信息。本文对比了三种常见方案:手动读配置或用InetUtils探测IP,存在地址不一致和随机端口问题;通过DiscoveryClient反查自己,有网络开销和时序依赖;直接注入Registration接口,数据与注册中心同源、零额外开销、无时序问题且接口标准化。文章详细说明了Registration的接口定义、用法示例及注意事项(如访问时机、与ServiceInstance的关系),结论是始终注入Registration获取自身注册信息是最
保姆级教程:用ApplicationRunner解决SpringBoot WAR部署Nacos注册问题
本文提供Spring Boot应用以WAR包形式部署到Tomcat时,解决Nacos服务注册问题的保姆级教程。通过ApplicationRunner机制和JMX获取Tomcat运行时端口,实现服务自动注册到Nacos,确保微服务架构的顺利运行。
【Spring Boot】nacos注册服务IP错误的解决方案
摘要:Spring Boot服务注册到Nacos时出现IPv6地址问题,原因是多网络接口导致IP选择偏差。解决方案包括:1)在配置中直接指定有线网络IPv4地址;2)设置优先网络段(如192.168或10.0);3)指定有线网卡名称。这些方法可确保服务使用正确的IPv4地址注册到Nacos。
Spring Boot项目打war包部署Tomcat后,Nacos服务注册失败的3种解决方案(附完整代码)
本文深入探讨了Spring Boot项目打war包部署Tomcat后Nacos服务注册失败的3种解决方案,包括手动注册服务机制、动态获取Tomcat端口和上下文感知的混合注册策略,并提供了完整代码示例。这些方案有效解决了因容器差异导致的服务注册问题,适用于不同部署场景。
84



被折叠的 条评论
为什么被折叠?



