Dubbo服务消费者调用HSF服务提供者失败

更新时间:

问题描述

Dubbo服务消费者调用HSF服务提供者失败,具体报错信息如下:

java.lang.Exception: [HSF-Provider-192.168.XX.XX] Error log: [HSF-Provider] App [xxxxxxx-3b6f-42d3-xxxx-0ad2434xxxxx] failed to verify the caller signature [null] for [com.alibaba.edas.DemoService:1.0.0] [sayHello] from client [192.168.XX.XX]

或者

2019-08-02 17:17:15.187 [WARN ] [cf67433d1e7a44412a518bd190100d176-node401] [NettyClientWorker-4-1] [o.a.d.r.p.dubbo.DecodeableRpcResult:91] |  [DUBBO] Decode rpc result failed: null, dubbo version: 2.7.3, current host: xxx.xx.xx.xxx
java.lang.StackOverflowError: null

问题原因

发生报错的原因如下:

  • 鉴权问题:HSF开启了调用鉴权,而Dubbo暂时不支持鉴权。
  • EDAS-Container版本问题:HSF服务提供和依赖的hessian-lite版本较低,不支持JDK 8的LocalDateTime的序列化。

解决方案

  • 鉴权问题:在HSF服务端增加参数-DneedAuth=false,关闭调用鉴权。
    说明:在EDAS控制台中设置JVM参数方法请参见设置部署在ECS集群中的应用设置JVM参数
  • EDAS-Container版本问题:请参见运行环境升降级,升级HSF服务端的EDAS-Container的版本到最新版本。

适用于

  • 企业级分布式应用服务EDAS