嘿嘿……想用其他类库的,可以在后端加,前端只需要加一条协议,来表明这次请求需要哪种类库不就可以了
dubbo 的 telnet 服务,我粗略看了一下
java.util.List
,而我需要给到Ljava/util/List<Ljava/lang/String;>;
其他的没仔细研究,可能我研究的不深,所以就没有用自带的 telnet
其实 Dubbo 服务的本质还是在服务器上监听了一个端口,然后你按照你 hessian 协议把数据打包好后,就往这个端口发送过去就可以了
这么来考虑的话,你只需要在后台启动一个 sock 链接,连接到 Dubbo 那个服务器,这是连接的部分
下面我来贴一个数据打包的结构吧,这是整个包的数据结构,分先后,具体的 hessian 是怎么打包的,建议看看 hessian 的官方文档:http://hessian.caucho.com/doc/hessian-ws.html
[
{
"HEADER": {
"struct": "12ds",
"value": "dabbc2000000000000000000",
"desc": "不足12位后面补0"
}
},
{
"dataLength": {
"struct": "uint32",
"value": "",
"desc": "数据长度"
}
},
{
"DOUBLE_VERSION": {
"struct": "根据hessian协议序列化",
"value": "2.5.3",
"desc": ""
}
},
{
"interface": {
"struct": "根据hessian协议序列化",
"value": "com.test.account.service",
"desc": "接口名称"
}
},
{
"interfaceVersion": {
"struct": "根据hessian协议序列化",
"value": "2.0",
"desc": "Dubbo服务的版本号,就是在被测服务xml里面写的那个"
}
},
{
"methodName": {
"struct": "根据hessian协议序列化",
"value": "getScoreMemberInviteInfo",
"desc": "函数名"
}
},
{
"paramType": {
"struct": "根据hessian协议序列化",
"value": "Ljava/lang/String;",
"desc": "参数类型"
}
},
{
"param": {
"struct": "根据hessian协议序列化",
"value": "sss",
"desc": "参数值"
}
},
{
"attachments": {
"struct": "根据hessian协议序列化",
"value": {
"customer": "python-dubbo-test",
"owner": "tbj-test",
"timeout": 5
},
"desc": ""
}
}
]
也不算大佬,你只要把我上面贴的 github 连接,然后反着考虑,你也能弄出来;
当初的想法是,让不会写代码的人也可以测试 Dubbo 接口