启动

  • 参考官网介绍,在soul-bootstarp中,打开sofa相关依赖,启动soul-admin和soul-bootstrap,在启动example下soul-examples-sofa
  • 在启动过程中遇到sofa注解的接口失败的问题,debug源码的时候发现,接口在注册的时候,整体流程如下

image.png

  • SofaServiceBeanPostProcessor.handler
  • RegisterUtils.doRegister
  • OkHttpTools.getInstance.post--http#post方法调用soul-admin进行注册
  • SoulClientController.registerSofaRpc
  • SoulClientRegisterService.registerSofa
  • 在启动的时候,sofa插件利用Spring的bean后置处理器机制,在创建一个bean的时候,通过http调用soul-admin将插件注册到网关中,然而后面报错的具体点却是,在对插件元数据进行入库持久化的时候,报错了,具体报错的点在这

image.png

  • 这个方法使用serviceName和method进行查询,在sofa的例子中,使用的是dubboTest类型,而如果你之前用了dubbo例子,会先将dubbo例子的接口注册的时候持久化其元数据,sofa例子的参数与dubbo的参数是一样的,而这里进行注册的时候,上述红框代码使用serviceName和method查询的时候返回2条数据,导致最终注册失败。这里查出来2条数据,具体操作是在dubbo例子中先启动一次,然后修改配置文件的appName属性在启动一次,就能注册2份appName不一样其他都一样的数据。
  • 解决了问题之后,我们再进行调用测试
    image.png

Q.E.D.