com.caucho.hessian.io.HessianProtocolException: expected hessian reply at end of file

新的项目需要使用Hessian来进行接口调用,初步学习后上手使用遇到些许小坑,在此记录一

下,希望能给遇到同种问题的码云们提供一个方向

Hessian 的使用方法比较简单,这里不再赘述。直接上问题

 

expected end of call ('z') at 0x53 (S).

expected hessian reply at end of file

出现此种问题多数从俩个方向考虑,一,客户端 服务端的Hessian是否相同。二,是不是接口class中有重载方法

Hessian 默认是不支持函数重载的 可通过

factory.setOverloadEnabled(true);开启,至此问题解决

 

原理:

Hessian 默认不支持函数重载

public class HessianProxyFactory implements ServiceProxyFactory, ObjectFactory {
    protected static Logger log = Logger.getLogger(HessianProxyFactory.class.getName());
    private SerializerFactory _serializerFactory;
    private HessianRemoteResolver _resolver = new HessianProxyResolver(this);
    private String _user;
    private String _password;
    private String _basicAuth;
    private boolean _isOverloadEnabled = false; // 默认为false
    private boolean _isHessian2Reply = true;
    private boolean _isHessian2Request = false;
    private boolean _isChunkedPost = true;
    private boolean _isDebug = false;
    ...

Hessian 通过代理实现,应该有一个代理类HessianProxy他实现了InvocationHandler里面有一个invoke方法

mangleName 如何获取。到此应该已经很清楚了,如果不指定重载则加载方法时只是根据名称,要不报错要不每次只是定位到第一个方法。如果指定可以重载则返回的是方法名称是 XXX_string_int_string_string_string_string_string_XXX 这种格式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值