当前位置: 首页> 房产> 建筑 > 网络服务器是什么_燕郊疫情最新消息_惠州百度关键词优化_北京网站设计公司

网络服务器是什么_燕郊疫情最新消息_惠州百度关键词优化_北京网站设计公司

时间:2025/7/12 18:18:11来源:https://blog.csdn.net/weixin_38203586/article/details/144685488 浏览次数:0次
网络服务器是什么_燕郊疫情最新消息_惠州百度关键词优化_北京网站设计公司

【现象】

程序运行报错如下:

com.netflix.discovery.shared.transport.TransportException报错Cannot execute request on any known server

【解决方案】

(1)在Maven工程中的pom去掉Eureka相关的引用(注释以下部分)

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency>

(2)在工程中搜索,org.springframework.cloud.netflix.eureka相关的import引用

(3)服务器上,打包的jar或者在lib/等目录下,删除如下jar包(否则还是会一直打印错误日志,具体原因参见原因分析)

spring-cloud-starter-netflix-eureka.xxxxxx.jar

spring-cloud-netflix-eureka-client.xxxxxx.jar

【原因分析】

主要分析一下Eureka是如何注册成为Spring中Bean的,在Spring中会调用finishRefresh()方法,代码如下:

protected void finishRefresh() {// Clear context-level resource caches (such as ASM metadata from scanning).//清空缓存clearResourceCaches();// Initialize lifecycle processor for this context.//初始化一个LifecycleProcessor,在Spring启动的时候启动bean,在spring结束的时候销毁beaninitLifecycleProcessor();// Propagate refresh to lifecycle processor first.//调用LifecycleProcessor的onRefresh方法,启动实现了Lifecycle接口的beangetLifecycleProcessor().onRefresh();// Publish the final event.//发布ContextRefreshedEventpublishEvent(new ContextRefreshedEvent(this));// Participate in LiveBeansView MBean, if active.//注册MBean,通过JMX进行监控和管理LiveBeansView.registerApplicationContext(this);
}

        重点关注 getLifecycleProcessor().onRefresh() ,它是调用生命周期处理器的onrefresh方法,找到SmartLifecycle接口的所有实现类并调用start方法。
  其调用链路为:DefaultLifecycleProcessor.startBean -> start() -> doStart() -> bean.start()

        而Eureka中,正是利用这个机制,而对应的类就是 EurekaAutoServiceRegistration(在spring-cloud-starter-netflix-eureka.xxxxxx.jar里),就实现了 SmartLifeCycle,服务注册自动配置类。

        此处就不对Eureka原理进行分析了,贴图一张供大家参考(有兴趣的自行调试代码)

关键字:网络服务器是什么_燕郊疫情最新消息_惠州百度关键词优化_北京网站设计公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: