dubbo动态导出服务提供者

1.实现效果

在dubbo服务运行过程中,上传正确的java代码文件,自动编译生成class并注册到dubbo zk 中,可以正常dubbo invoke来调用。整个过程服务不用重启。我写了个框架并命名为D-Unit

2.框架用法

1.项目配置xml文件,配置spring bean。
在这里插入图片描述
2.服务运行时,将新增的正确jiava代码上传到/usr/local/dunits路径下,就会自动编译,并注册到zk。

3.暴露的接口名规则
比如有一段java代码要动态注册:

在这里插入图片描述
注意 :类的全限定名称是com.yunji.groupbuy.service.TTestGroupbuyImpl
则暴露接口名为: com.yunji.groupbuy.service.TTestGroupbuyService

dubbo invoke测试发现接口已经正确注册进来了,接下来就可以invoke执行了。到此我们的原项目代码是没有TTestGroupbuyService类的。
在这里插入图片描述

3.实现主要思路

1.提供java动态编译工具,可以将java代码编译成class文件,并加载到内存中生成class对象。这里我用了openhft,在源代码上做了一些修改。
在这里插入图片描述
2.动态注册dubbo接口到zk, 这是关键部分代码。
在这里插入图片描述

3.根据实现类代码,生成接口代码,然后在动态编译,关键部分在
Decoder类中。
在这里插入图片描述

关键步骤就是以上这些,源代码是我自己写的,可以加我qq找我获取,头已白。

老生常谈:深圳有爱好音乐的会打鼓(吉他,键盘,贝斯等)的程序员和其它职业可以一起交流加入我们乐队一起嗨。我的QQ:657455400 表演视频实例https://v.qq.com/x/page/f0517awx0x4.html