我是靠谱客的博主 矮小夕阳,最近开发中收集的这篇文章主要介绍soul显示服务器错误,Soul接入一个Http服务,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.前文回顾

b55cb81f48aa

image.png

上一讲,按照这个框图部署两个服务;在此基础上我们接入一个Http协议的服务:服务路径:soul-examples-http;

2.soul-examples-http启动分析

b55cb81f48aa

image.png

红色框中:http client register:发起http请求去注册!

注册的报是:{"appName":"http","context":"/http","path":"/http/test/","pathDesc":"","rpcType":"http","host":"192.168.137.1","port":8188,"ruleName":"/http/test/","enabled":true,"registerMetaData":false}

进入这个类:RegisterUtils

public static void doRegister(final String json, final String url, final RpcTypeEnum rpcTypeEnum) {

try {

String result = OkHttpTools.getInstance().post(url, json);

if (AdminConstants.SUCCESS.equals(result)) {

log.info("{} client register success: {} ", rpcTypeEnum.getName(), json);

} else {

log.error("{} client register error: {} ", rpcTypeEnum.getName(), json);

}

} catch (IOException e) {

log.error("cannot register soul admin param, url: {}, request body: {}", url, json, e);

}

}

说明:往这个url发送json报文!接下的问题是在哪里调用了这个方法并且这个url地址在哪?

debug 如下如:(没有当断点发现不了问题的)

b55cb81f48aa

image.png

这里得到的结论:

从堆栈信息可知:上一级调用点是SpringMvcClientBeanPostProcessor的postProcessAfterInitialization

SpringMvcClientBeanPostProcessor这个类实现了BeanPostProcessor

补充说明BeanPostProcessor这个接口

BeanPostProcessor 是一个回调机制的扩展点,它的核心工作点是在 bean 的初始化前后做一些额外的处理;postProcessAfterInitialization 方法会在任何 bean 的初始化回调(例如 InitializingBean 的 afterPropertiesSet 或自定义 init-method )之后;

SpringMvcClientBeanPostProcessor的构造器调用时机?在构造器中打上断点然后通过调用栈可知:SoulSpringMvcClientConfiguration这个配置类中@Bean标注了几个方法;

b55cb81f48aa

初始化顺序

@ConfigurationProperties(prefix = "soul.http")

并且new SoulSpringMvcConfig();这个实例对应了配置文件中的配置

soul:

http:

adminUrl: http://localhost:9095

port: 8188

contextPath: /http

appName: http

full: false

重点说明postProcessAfterInitialization完成逻辑(注册API签名)

获取bean上的注解:controller,restController,requestMapping

上述有一个不为空,获取这个bean上是否有SoulSpringMvcClient注解(clazzAnnotation)

clazzAnnotation 不为空,并且路径包含*就发一次请求,返回;

clazzAnnotation 为空;获取所有的方法;再循环获取方法上是否有SoulSpringMvcClient注解

假如有发起http请求;

Soul-admin接收逻辑:

/**

* Register spring mvc string.

*

* @param springMvcRegisterDTO the spring mvc register dto

* @return the string

*/

@PostMapping("/springmvc-register")

public String registerSpringMvc(@RequestBody final SpringMvcRegisterDTO springMvcRegisterDTO) {

return soulClientRegisterService.registerSpringMvc(springMvcRegisterDTO);

}

猜测:将数据存入数据库,并把数据同步给bootstrap?

这时推到出如下的框图:

b55cb81f48aa

image.png

总结

b55cb81f48aa

image.png

后续:

admin接收到http register之后的处理逻辑;

负载均衡的规则处理

插件加载分析

接入不同协议的服务

最后

以上就是矮小夕阳为你收集整理的soul显示服务器错误,Soul接入一个Http服务的全部内容,希望文章能够帮你解决soul显示服务器错误,Soul接入一个Http服务所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部