Adrninistrator / java-all-call-graph

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

大佬求问:在微服务间的调用,到service就不再继续了。 #7

Closed dabaixiaozhu closed 2 years ago

dabaixiaozhu commented 2 years ago

我这里是调用Dubbo的api进行服务间的调用,那么这种情况下(jar包都有了)就到达不了其余服务jar的实现类里面的逻辑。请问这种方式有什么思路吗?

Adrninistrator commented 2 years ago

可以发个示例代码出来看一下不,build.gradle里有邮箱

dabaixiaozhu commented 2 years ago

已经发送邮箱啦,这里贴过来一下~ 如果是单体的函数调用关系,现在是可以实现的,有碰到问题的是微服务间调用的一个场景,举例如下:

项目,消费者:dubbo-consumer @Controller

public class DemoController {

@Autorired 
private DemoService service;

 @RequestMapping(value = "/hello", method = RequestMethod.GET)
 public String sayHello() {
    System.out.println("consumer start");
    demoService.getPermissions(1L);
    return "id";
}

} 但是调用链路,到demoService.getPermissions(1L); 就不会继续往下了,调用链如下

[0]#consumer.DemoController:sayHello@org.springframework.web.bind.annotation.RequestMapping("/hello") [1]# [DemoController:17] org.springframework.context.support.ClassPathXmlApplicationContext:getBean [1]# [DemoController:19] demo.DemoService:getPermissions

其余模块的代码我也贴一下: 项目,api:dubbo-api public interface DemoService { List getPermissions(Long id); }

项目,生产者:dubbo-provider public class DemoServiceImpl implements DemoService {

public List<String> getPermissions(Long id) {
    List<String> demo = new ArrayList<String>();
    demo.add(String.format("Permission_%d", id - 1));
    demo.add(String.format("Permission_%d", id));
    demo.add(String.format("Permission_%d", id + 1));
    return demo;
}

}

dabaixiaozhu commented 2 years ago

还有一个小问题哈,7.0.2这个版本,https://github.com/Adrninistrator/java-all-call-graph/blob/main/java-all-call-graph/src/main/java/com/adrninistrator/jacg/runner/RunnerWriteDb.java 这个类会爆红,具体代码是261这行,应该是graph2的代码还没提上去?

// 记录方法代码行号输出文件路径 callGraphLineNumberOutputFilePath = jCallGraph.getMethodLineNumberOutputFilePath();

Adrninistrator commented 2 years ago

callgraph2这个jar包确实是提交漏了,今天晚上会重新提交,参考 https://github.com/Adrninistrator/java-all-call-graph/issues/6

Adrninistrator commented 2 years ago

上面提到的Dubbo服务,把相关的jar包也添加到配置文件的参数后解决了吧 缺少的代码重新提交了

dabaixiaozhu commented 2 years ago

已解决! 好的,我更新下版本,感谢!

---原始邮件--- 发件人: @.> 发送时间: 2022年5月6日(周五) 晚上8:30 收件人: @.>; 抄送: @.**@.>; 主题: Re: [Adrninistrator/java-all-call-graph] 大佬求问:在微服务间的调用,到service就不再继续了。 (Issue #7)

上面提到的Dubbo服务,把相关的jar包也添加到配置文件的参数后解决了吧 缺少的代码重新提交了

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

akioyuan commented 2 years ago

像这种通过消息来调用的关系,最后能解决吗? 我这边是Android的StateMachine,向上查找到processMessage,就没了~

Adrninistrator commented 2 years ago

可以发一下代码吗,大概查了一下,不确定和你使用的方式是不是一样的