Closed
Description
抱歉英文不好,就用中文了。以上是对泛化调用的需求记录;
目标:实现goclient to javaserver 的泛化调用
以下是实现的探讨,我入门java不到一个月,肯定会有不对的地方,欢迎指出,也希望有java老鸟帮忙看看,十分感谢。
所谓泛化调用是指客户端拿不到服务端的具体类的情况(在go的客户端表现为没有写死的providerserver接口和pojo定义),java的dubbo框架已经有了这个功能,这个功能对于dubbo接口网关类服务的实现是必不可少的。
看了源码我自我以为的java的实现:
java provider端有这样一个interface
所有的客户端都调用该接口的$invoke进行访问,将原来的方法、参数、类型都作为请求参数
(我自己测试过,确实能够调通,但由于hessian2的这个问题,没有进入下一步的测试)
如图
客户端在没有注册pojo是如何解析返回的数据的。看了源码,invoke方法会将pojo转换成map返回,map中的所有元素都是基本类型,java客户端直接解析map即可,所以目前来看,如果hessain2能够支持不定深度map、数组的解析,应该就可以支持泛化调用。
Activity