[apache/dubbo]dubbo测试callback报错。

2023-12-12 668 views
3

按照callback例子写的,消费端调用时报Exception in thread "main" com.alibaba.dubbo.rpc.RpcException Caused by: com.alibaba.dubbo.remoting.RemotingException: Fail to decode request due to: RpcInvocation [methodName=addListener, parameterTypes=[class java.lang.String, interface api.callback.CallbackListener], arguments=null, attachments={path=com.csc.microServe.api.callback.CallbackService, input=763, name=org.jeecg.Test, dubbo=2.8.4, version=0.0.0}]

回答

3

c.alibaba.com.caucho.hessian.io.SerializerFactory:528 - Hessian/Burlap: 'org.jeecg.modules.order.service.impl.CallbackListenerImpl' is an unknown class in sun.misc.Launcher$AppClassLoader@18b4aac2: 服务端报这个错。可是CallbackListenerImpl就是dubbo CallbackListener的接口实现

1

麻烦提供一个 demo

7

@Service public class DubboCallbackRunner implements ApplicationRunner {

@Autowired
private CallbackListener callbackListener; //这里注入了consumer的实现

@Autowired
private CallbackService callbackService;

@Override
public void run(ApplicationArguments applicationArguments) throws Exception {

// callbackService.sendMessage("test"); //这个接口能调用成功 // callbackService.addListener("123", callbackListener); //这个接口调用失败(无论是在接口里new一个listener还是提供诸如的实现都不行) } }

其余代码均同demo

6

@Service @Slf4j public class CallbackListenerImpl implements CallbackListener, Serializable { private static final long serialVersionUID = 1L;

@Override
public void changed(String s) {

}

}

3

2.8.4是dubbox吧?可以替换成dubbo 2.7.8试试

4

dubbox的话我不太确定是否支持这种功能,而且我们目前暂时不打算去做兼容。如果想使用一些新特性的话还是建议升级到dubbo 2.7.8哦

8

hessian.io.SerializerFactory这个类在反序列化 consumer CallbackListenerImpl的实现类时,无法识别。classloader里没有这个类。 但是服务端貌似又不应该精确知道每个消费者的实现类? 期望识别的类应该就是CallbackListener 这个接口把?

3

我看了下dubbox的sample好像没区别。。。

0

@jinkelazzz 你好,不好意思 dubbox 版本不在当前维护版本内,dubbox 最后一个版本 2.8.4 发布直接快六年了,dubbox 的特性也都迁移到 apache/dubbo 中,你可以尝试使用最新的 2.7.x 版本测试是否可以使用