Skip to content

about Generic$invoke #84

Closed
Closed
@pantianying

Description

抱歉英文不好,就用中文了。以上是对泛化调用的需求记录;

目标:实现goclient to javaserver 的泛化调用

以下是实现的探讨,我入门java不到一个月,肯定会有不对的地方,欢迎指出,也希望有java老鸟帮忙看看,十分感谢。

所谓泛化调用是指客户端拿不到服务端的具体类的情况(在go的客户端表现为没有写死的providerserver接口和pojo定义),java的dubbo框架已经有了这个功能,这个功能对于dubbo接口网关类服务的实现是必不可少的。

看了源码我自我以为的java的实现:
java provider端有这样一个interface
image
所有的客户端都调用该接口的$invoke进行访问,将原来的方法、参数、类型都作为请求参数
(我自己测试过,确实能够调通,但由于hessian2的这个问题,没有进入下一步的测试)
如图
image

客户端在没有注册pojo是如何解析返回的数据的。看了源码,invoke方法会将pojo转换成map返回,map中的所有元素都是基本类型,java客户端直接解析map即可,所以目前来看,如果hessain2能够支持不定深度map、数组的解析,应该就可以支持泛化调用。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions