Adrninistrator / java-all-call-graph

Generate all call graph for Java Code.
Apache License 2.0
437 stars 111 forks source link

微服务调用链无法解析到接口类的方法 #36

Closed wang422403 closed 1 year ago

wang422403 commented 1 year ago

目前我们公司微服务使用的是dubbo,在向上解析调用链时,只能到顶层,接口实现类。无法解析到接口类。由于dubbo注册到注册中心的服务地址是接口类的地址,所以无法对应上。是否有什么办法?感谢作者!

wang422403 commented 1 year ago

因为接口类是在二方包里面,我没有将二方包加入解析,是否加入解析就可以生成?

Adrninistrator commented 1 year ago

因为接口类是在二方包里面,我没有将二方包加入解析,是否加入解析就可以生成?

可以试一下哈,如果dubbo有通过注解来指定实际使用的类的话,可能需要做一下特殊处理

wang422403 commented 1 year ago

image image 单纯把这个二方包的类引进来,解析向上的还是不能到这个接口类

Adrninistrator commented 1 year ago

这是服务定义的代码吧,使用的代码麻烦也贴一下

wang422403 commented 1 year ago

这是服务定义的代码吧,使用的代码麻烦也贴一下

这个跟使用的代码有关系吗?A服务是服务提供者,B服务是消费者。我现在只是解析服务提供者这个项目的调用关系。 目前向上解析是只解析到了AppRemoteService这个实现类中的方法,我希望的是解析到IAppRemoteService这个接口类

wang422403 commented 1 year ago

我们是做一个平台,公司有100多个项目,我们不知道他们的调用关系。我们的目的是让测试解析自己负责的项目,然后看这次版本变更影响了哪些RPC服务,再根据监控的链路关系找到上游的服务。将其串起来,现在有问题是RPC是通过接口类来定义服务的,而我解析到的消费者项目只解析到实现类

Adrninistrator commented 1 year ago

正常情况下,会存在接口到实现类方法的调用关系 需要检查一下数据库表jacg_method_call,根据caller_simple_class_namecallee_simple_class_name字段查找一下相关的类 AppRemoteService IAppRemoteService

wang422403 commented 1 year ago

正常情况下,会存在接口到实现类方法的调用关系 需要检查一下数据库表jacg_method_call,根据caller_simple_class_namecallee_simple_class_name字段查找一下相关的类 AppRemoteService IAppRemoteService

image 只有这第三个才找到数据

wang422403 commented 1 year ago

这个都是作为调用者

wang422403 commented 1 year ago

没有AppRemoteService这个类作为被调用者的关系

wang422403 commented 1 year ago

java-callgraph2用的是0.2.2的 java-all-call-graph是0.8.0的 因为我基于这两个版本做了比较多的二开

Adrninistrator commented 1 year ago

先用最新版的试一下吧,看起来是存在接口调用实现类方法的调用关系的

Adrninistrator commented 1 year ago

有需要的话可以给邮箱发个消息

wang422403 commented 1 year ago

有需要的话可以给邮箱发个消息

哪个邮箱

Adrninistrator commented 1 year ago

有需要的话可以给邮箱发个消息

哪个邮箱

publish.gradle里面有

xiongxt86 commented 1 year ago

感觉还是自己获取到调用关系,再二次加工比较好,我这边碰到的是内部有自定义的XXXService替代了dubbo原始的Service