这段时间在用hessian,发现无法很好的支持方法重载。原有的程序接口如下。
/**
* @author sagahl
*
*/
public interface DisCountService {
/**双方验证签名的md5key*/
public String md5key = "xxxxxxxxxxxxx";
/**
* 根据xx查询aDiscountQueryVO 查询
* @param DiscountQueryVO aDiscountQueryVO
* @param signature --签名 ,对aDiscountQueryVO.userId 进行md5签名
* @return DiscountResultVO
*
*/
public DiscountResultVO getDiscountBy(DiscountQueryVO aDiscountQueryVO,String signature);
}
由于业务的需要接口的入参需要更改,但是又需要保留原有的接口方法名。于是定义接口如下:
public interface DisCountService {
/**双方验证签名的md5key*/
public String md5key = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
/**
* @param DiscountQueryVO aDiscountQueryVO
* @param signature --签名 ,对aDiscountQueryVO.userId 进行md5签名
* @return DiscountResultVO
*
*/
public DiscountResultVO getDiscountBy(DiscountQueryVO aDiscountQueryVO,String signature);
/**
* @param DiscountQueryVO aDiscountQueryTwoVO
* @param signature --签名 ,对aDiscountQueryVO.userId 进行md5签名
* @return DiscountResultVO
*
*/
public DiscountResultVO getDiscountBy(DiscountQueryTwoVO aDiscountQueryTwoVO,String signature);
}
通过不同的入参调用服务端不同的方法。但是发现服务端实现了两个方法,但通过调用
public DiscountResultVO getDiscountBy(DiscountQueryTwoVO aDiscountQueryTwoVO,String signature);
发现在服务端实际调用的还是
public DiscountResultVO getDiscountBy(DiscountQueryVO aDiscountQueryVO,String signature);
让我很疑惑不解。看了hessian的代码后才发现原因。
hessian中HessianSkeleton中的
String methodName = in.readMethod();
Method method = getMethod(methodName);
是最终取得的反射的方法,methodName的值为getDiscountBy。getMethod(methodName)的实现是
protected Method getMethod(String mangledName)
{
return (Method) _methodMap.get(mangledName);
}
而_methodMap的值是接口DisCountService中所有的方法。这个时候后取到的是第一个方法。
以上所述表明,无法调用方法重载的远端服务,至少会有可能不准确。提出的方案是将调用的方法的参数也传到服务端,再通过方法名和参数调用准确的方法。不知道是否合理。
新手发帖请各位指正!
分享到:
- 2008-12-09 17:26
- 浏览 1908
- 评论(3)
- 论坛回复 / 浏览 (1 / 2262)
- 查看更多
相关推荐
Hessian是BEA Systems开发的一种二进制Web服务协议,它提供了序列化和远程方法调用的机制。在Java项目中,Hessian被广泛用于服务间的通信,尤其是对于那些需要快速、低开销的通信场景。 1. **Hessian服务端**: - ...
Hessian远程调用框架是基于Java的轻量级RPC(Remote Procedure Call)解决方案,它允许开发者在分布式系统中实现高效、便捷的跨网络对象方法调用。本教程将引导你入门Hessian,通过一个简单的JAVA demo来理解其工作...
在IT行业中,远程调用是一种常见的技术,使得客户端可以跨网络调用远程服务器上的方法,就像调用本地方法一样方便。Hessian是Apache项目下的一个轻量级的RPC(Remote Procedure Call,远程过程调用)框架,它提供了...
Hessian是Apache软件基金会的Caucho项目开发的一个开源RPC框架,它支持二进制协议,能够高效地进行远程方法调用。本教程将详细介绍"Hessian远程调用RPC最简单demo",包括服务器端服务发布和客户端服务调用的实现,...
5. 调用服务:通过代理对象,像调用本地方法一样调用远程服务的方法。 四、Hessian的优势与应用场景 Hessian的主要优势在于其高效的数据传输和简单易用的API,这使得它在低带宽环境或者对性能要求较高的场景下尤为...
在IT行业中,Hessian是一种基于二进制协议的远程方法调用(RMI)框架,它由Caucho Technology开发并维护。Hessian的目标是提供高效、简单的方式进行跨语言、跨平台的服务调用,尤其适合Java和Adobe Flex之间的通信。在...
Hessian提供了一个URL,客户端通过这个URL可以直接调用服务端的方法,就像调用本地方法一样。客户端需要导入Hessian的库,然后使用HessianProxyFactory创建服务的代理对象。 4. **执行远程调用**:现在,客户端可以...
Hessian是一种高效的RPC(Remote Procedure Call)协议,它允许Java应用程序之间进行远程方法调用,类似于RMI(Remote Method Invocation)。Hessian由Caucho公司开发,它的主要优点在于序列化效率高,能够将Java...
Hessian是一种二进制Web服务协议,它提供了一种轻量级、高效的远程方法调用方式。它基于HTTP协议,可以将Java对象序列化为二进制格式,减少了网络传输的数据量,从而提高了通信效率。 Spring框架提供了强大的依赖...
Hessian框架是一款轻量级的Java远程方法调用(Remote Method Invocation, RMI)框架,由Caucho Technology公司开发。它主要应用于分布式系统中,允许应用程序通过HTTP协议进行高效、透明的远程调用,降低了分布式...
- Java客户端会通过Hessian库与服务器端建立连接,调用服务端暴露的方法。 - 客户端代码需要知道服务器的URL以及要调用的服务接口。Hessian库会自动处理序列化和反序列化,使得客户端可以像调用本地方法一样调用...
此外,Hessian还支持类型安全的方法调用,确保客户端和服务器端之间的接口匹配。 ### Hessian的优点 1. **效率高**:由于使用二进制格式,Hessian在传输数据时占用的带宽更少,解析速度更快。 2. **简单易用**:...
Hessian是一种二进制Web服务协议,它由Caucho Technology公司开发,主要用于提供轻量级、高效的远程方法调用(Remote Method Invocation,RMI)服务。Hessian的目标是简化分布式系统之间的通信,通过减少网络传输的...
在IT行业中,Hessian是一种轻量级的远程过程调用(RPC)协议,它使得服务端的方法可以直接在客户端被调用,仿佛它们就在本地一样。Hessian基于HTTP协议,使用二进制编码,以提高传输效率和性能。而Spring框架是Java...
在示例代码中,我们将通过 Hessian protocol 调用这四个方法,并截取并分析请求报文和应答报文的格式。 2.1 Hessian 报文结构应用示例背景说明 在示例代码中,我们使用 Java 语言编写了一个简单的示例,用于形象地...
在服务器端,通过HessianServlet来暴露这个服务,客户端则通过HessianProxyFactory来创建服务代理,从而能够调用远程服务的方法。这种简单设置可以让开发者快速理解Hessian的基本工作原理。 二、Hessian与Spring...
Hessian的目标是提供一种快速、简洁的数据序列化和远程方法调用(RPC)机制。在这个简单的demo中,我们将探讨Hessian的核心概念,以及如何在实际应用中使用它。 首先,我们需要理解什么是数据序列化。数据序列化是...
1. 调用远程方法:在Android客户端,你可以像调用本地方法一样调用远程服务的方法,Hessian库会自动处理网络通信和序列化细节。 ```java String result = service.remoteMethod("参数"); ``` 2. 处理结果:服务器...
《Hessian远程调用技术详解》 在分布式系统中,远程调用是常见的通信方式,它使得服务可以跨越网络边界,实现组件之间的交互。Hessian,由Caucho公司开发,是一种高效的二进制RPC(Remote Procedure Call)协议,常...