1.前文回顾

image.png

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

2.soul-examples-http启动分析

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 如下如:(没有当断点发现不了问题的)

image.png

这里得到的结论:

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

SpringMvcClientBeanPostProcessor这个类实现了BeanPostProcessor

补充说明BeanPostProcessor这个接口

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

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

初始化顺序

@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?

这时推到出如下的框图:

image.png

总结

image.png

后续:

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

负载均衡的规则处理

插件加载分析

接入不同协议的服务

soul显示服务器错误,Soul接入一个Http服务相关推荐

  1. soul显示服务器异常,soul聊天状态异常 消息发送失败

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. soul聊天状态异常,消息发送失败的原因及解决方法如下: 1.发不出消息(显示红色感叹号),一般是由于网络不稳定,建议更换网络或者 ...

  2. soul显示服务器异常,soul账号状态异常是什么意思?soul账号异常操作多久解封

    soul是一款很受欢迎的灵魂社交app,用户在soul可以结交志趣相投的朋友,还可以发广场动态,不过有的朋友可能会因为一些原因导致账号异常,那么soul账号状态异常是什么情况呢?soul异常操作行为暂 ...

  3. xp系统更新的服务器失败是怎么回事啊,xp系统显示“服务器错误500”的两种解决方法...

    xp纯净版系统在浏览网页的时候会遇到这样或者那样的错误,比如经常遇到404错误,503错误,怎么回事呢?这些都是HTTP的状态码,不同的状态码代表不同的错误类型,有些不常用的状态码便没有详细的记载,例 ...

  4. 电脑xp传照片显示服务器错误,xp系统显示“服务器错误500”的两种解决方法

    xp纯净版系统在浏览网页的时候会遇到这样或者那样的错误,比如经常遇到404错误,503错误,怎么回事呢?这些都是HTTP的状态码,不同的状态码代表不同的错误类型,有些不常用的状态码便没有详细的记载,例 ...

  5. 玩游戏显示服务器错误,为什么会显示服务器错误

    2006-12-13 14:41:57 我问新浪客服了,结果我很生气,说是整个新浪统一登陆方面出现的问题 ,什么现在工程师还在做调整和处理,说是整个新浪电信服务器问题,我觉得不管怎么样也得事先通知咱们 ...

  6. 网渲显示服务器错误,网络渲染疑难解答指南 | 3ds Max 2021 | Autodesk Knowledge Network...

    建议 进行网络渲染作业时,导致服务器失败的原因有很多.<Autodesk Backburner 用户指南>的"疑难解答"中介绍了其中的一些原因,网址为 www.auto ...

  7. CC送人气票显示服务器错误,[已解决]用户尝试创建新帐户时出现“服务器错误” - Magento 1.7...

    当用户尝试创建一个新的帐户,他们填写自己的信息上/客户/帐号/创建页面就好了,然后当他们点击提交,他们得到这500错误: The website encountered an error while ...

  8. 西瓜显示服务器错误,西瓜云服务器

    西瓜云服务器 内容精选 换一换 云服务器组是对云服务器的一种逻辑划分,云服务器组中的弹性云服务器遵从同一策略.当前仅支持反亲和性,即同一云服务器组中的弹性云服务器分散地创建在不同的主机上,提高业务的可 ...

  9. mvc怎么请求服务器错误信息,asp.net-mvc – IIS显示服务器错误而不是自定义错误...

    我正在使用MVC 5,我正在使用自定义视图处理我的错误,例如(404,403 --等) 它在我的本地IIS上工作正常,但是当我在登台服务器上发布时,它显示有关这些错误代码的IIS服务器错误消息. 它显 ...

最新文章

  1. C# JS URL 中文传参出现乱码的解决方法
  2. c++重定向后恢复_【STM32CubeIDE】重定向printf
  3. java 边界_Java数组边界问题
  4. sql删除过程的命令是什么_一个删除表字段的自动化执行工单的思考
  5. TCP/IP / 状态转换图
  6. JAVA程序中 + 号的使用
  7. php循环读取mysql_PHP无限循环获取MySQL数据
  8. js_long.php,protobuf.js 与 Long.js的使用详解
  9. STM32F407使用MFRC522射频卡调试及程序移植成功
  10. 如何在Azure中配置SQL Server 2008 R2故障转移群集实例
  11. 【详细】endnote中英文文献混排
  12. oracle 中平铺函数,oracle spatial
  13. 串口通信的隔离传输方案记录
  14. matlab向量与x正方向的夹角_matlab 一个向量和矩阵中各行向量的夹角余弦值
  15. 乐山—都江堰青城山精彩游记
  16. 关于买房提前还款问题
  17. #XMind 8 Update 8下载与补丁激活
  18. 用Python绘制分子结构
  19. global的作用以及使用方法
  20. 全国十大期货app排行榜

热门文章

  1. XorPay.com 支付平台介绍【免费开通个人微信支付接口】
  2. 编程应该怎么学?学好编程讲方法
  3. Linux-read函数
  4. [环保] 为了反击无耻的两桶油雇来的砖家,三伏天,我一个月开车不开空调测油耗
  5. Python游戏制作(一)
  6. (详细)强化学习--贝尔曼方程
  7. IDEA警告: Redundant character escape xxx in RegExp
  8. DSP期末复习核心考点
  9. SM 2256K AB 无缓存量产工具
  10. java学习输出文档