使用Hessian中,在Java模拟客户端的时候可能存在需要向Hessian报文头信息设置一些参数,如token信息。默认的HessianProxyFactory对没有方法设置报文头的方法。以下方法可以做到。
1.新建自己的HessianProxyFactory继承com.connection.ForwardHessianConnectionFactory
/** * 接口调用的HessianConnectionFactory * 重写Hessian的HessianURLConnectionFactory向报文头添加接入端的控制信息 * * @author ZhangMingxue * @version 1.0 * @time 2013下午04:49:30 * @JDK 1.6 */ public class ForwardHessianConnectionFactory extends HessianURLConnectionFactory { // 报文头参数 private Map<String, String> headerParamMap = null; /** * 报文头参数,通过构造方法传入 * * @param headerParamMap */ public ForwardHessianConnectionFactory(Map<String, String> headerParamMap) { this.headerParamMap = headerParamMap; } @Override public HessianConnection open(URL url) throws IOException { HessianURLConnection hessianURLConnection = (HessianURLConnection) super .open(url); if (null != headerParamMap && !headerParamMap.isEmpty()) { Set<String> keySet = headerParamMap.keySet(); for (String key : keySet) { // 向报文头中添加参数 hessianURLConnection.addHeader(key, headerParamMap.get(key)); } } return hessianURLConnection; } }
2.创建HessianProxyFactory
/** * 创建HessianProxyFactory * * @param jsc * @return */ public HessianProxyFactory createHessianProxyFactory(JavaSamplerContext jsc) { HessianProxyFactory hessianProxyFactory = new HessianProxyFactory(); // Request的Header设置参数 Map<String, String> headerParamMap = addRequestHeaderParams(jsc); // 创建自己的HessianConnectionFactory HessianConnectionFactory hessianConnectionFactory = new ForwardHessianConnectionFactory( headerParamMap); hessianConnectionFactory.setHessianProxyFactory(hessianProxyFactory); hessianProxyFactory.setConnectionFactory(hessianConnectionFactory); return hessianProxyFactory; }
/** * 接口接用请求转发 * * @param jsc * @return */ public Map<String, String> addRequestHeaderParams(JavaSamplerContext jsc) { Map<String, String> headerParamMap = new HashMap<String, String>(); headerParamMap.put("xxxxx1", jsc.getParameter("id")); headerParamMap.put("xxxxx2", jsc.getParameter("authToken")); return headerParamMap; }
3.客户端使用自己的HessianProxyFactory,获取远程接口。
public IPropose buildRemoterServer(JavaSamplerContext jsc) { HessianProxyFactory hessianProxyFactory = createHessianProxyFactory(jsc); IPropose iPropose = null; try { StringBuffer url = createServerURL(jsc, "xxx.xxx.xxxx.xxxxServlet"); iPropose = (IPropose) hessianProxyFactory.create(IPropose.class, url.toString()); } catch (MalformedURLException e) { e.printStackTrace(); } return iPropose; }
@Override public SampleResult runTest(JavaSamplerContext jsc) { SampleResult result = new SampleResult(); result.sampleStart(); try { IPropose iPropose = buildRemoterServer(jsc); Object bo = iPropose.createPl();//调用远程服务器方法 result.sampleEnd(); } catch (Exception e) { result.setSuccessful(false); result.setResponseMessage(e.getMessage()); e.printStackTrace(); } return result; }
以上的JavaSamplerContext对象可以简单理解为Map类型的参数,由jmeter测试工具创建,主要用于存放测试的参数,根Hessian没有关系,主要是我的客户端是Jmeter,如果是客户端采用的是其它技术可以把JavaSamplerContext换成Map.
相关推荐
Hessian 协议格式 Hessian 协议是一种轻量级的 remoting on http 工具,使用简单的方法...通过对 Hessian 协议报文格式的分析,我们可以更好地理解 Hessian 协议的工作原理,并更好地应用 Hessian 协议在实际项目中。
本篇将详细探讨Hessian在实战中的应用,特别是如何获取客户端请求的URL以及如何重定向或转发客户端请求。 首先,我们需要了解Hessian的基本原理。Hessian是基于HTTP的,它将Java对象序列化为二进制格式,从而减少...
Hessian是一种轻量级的二进制远程过程调用(RPC)协议,它基于HTTP,并且通常通过Servlet来暴露Web服务。Hessian的设计目标是为了提供...通过这些资源,开发者可以更深入地理解并应用Hessian在实际项目中的各种场景。
7. **实际应用**:在"Test3"、"PyDome1"和"Test1"这些文件中,可能包含了实际的代码示例或者测试用例,展示了如何在Java和Python中设置Hessian服务和客户端,以及如何进行调用。通过这些例子,开发者可以深入理解...
《Hessian应用详解》 Hessian,一种轻量级的二进制协议,因其高效、简单的特点,在分布式服务中被广泛应用。它允许开发者在HTTP上透明地调用远程方法,就像是本地方法调用一样,极大地提高了开发效率和系统性能。...
**Hessian:深入理解与应用** Hessian是一种二进制Web服务协议,它由Caucho Technology公司开发,主要用于提供轻量级、高效的远程方法调用(Remote Method Invocation,RMI)服务。Hessian的目标是简化分布式系统...
这包括设置服务器端和客户端的Hessian服务,定义服务接口,处理序列化和反序列化的过程,以及调试可能出现的问题。在进行版本升级时,要注意兼容性问题,确保旧版本的服务仍能正常工作,同时充分利用新版本带来的...
在IT领域,尤其是在医学图像分析中,Hessian矩阵是一个重要的数学工具,用于图像特征检测,特别是在血管分割的应用中。本文将深入探讨标题和描述中提到的"基于Hessian矩阵增强的心血管分割"这一主题。 Hessian矩阵...
这个技术是基于数学形态学的Hessian矩阵理论,由V.S. Frangi在1998年的论文中提出,因此也被称为Frangi滤波器。 Hessian矩阵是二阶偏导数的矩阵,它能够捕捉图像局部的曲率信息。在图像中,特征如边缘、拐角或者...
Hessian矩阵是图像梯度的二阶导数,它可以捕捉图像局部区域的曲率信息。对于二维图像,Hessian矩阵是一个2x2的矩阵,其元素由图像的二阶偏导数构成。矩阵的对角元素表示图像在水平和垂直方向的二阶导数,非对角元素...
2. **远程方法调用(RMI)**:Hessian允许一个应用调用运行在另一台机器上的服务,就像调用本地方法一样。这在分布式系统中非常有用,可以解耦服务提供者和消费者,提高系统的可扩展性和灵活性。 3. **服务接口定义...
- 在实际开发中,我们可能会需要编写一些辅助工具类来处理Hessian的相关操作,例如Hessian2Input和Hessian2Output,它们用于读写Hessian序列化的二进制流。 6. **安全性与优化**: - 虽然Hessian协议效率高,但其...
Hessian是一种二进制Web服务协议,由Caucho Technology公司开发,主要用于提供轻量级、高效的远程方法调用(Remote Method ...通过深入研究源码和利用相关工具,我们可以更好地利用Hessian的优势来优化我们的应用程序。
本文将深入探讨Hessian框架的基础知识,它是一个高效的二进制序列化协议,广泛应用于Java和.NET之间跨语言通信。通过学习Hessian,我们可以更有效地处理数据传输,提高应用性能。 首先,让我们理解什么是序列化。...
赠送Maven依赖信息文件:hessian-4.0.63.pom; 包含翻译后的API文档:hessian-4.0.63-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:com.caucho:hessian:4.0.63; 标签:hessian、caucho、jar包、java、...
而 Hessian 是一种轻量级的远程过程调用(RPC)协议,它允许应用程序之间进行高效的二进制通信。 首先,让我们深入理解 SpringMVC。SpringMVC 提供了一个灵活的架构,用于处理 HTTP 请求、路由请求到相应的处理器、...
在Spring框架中集成Hessian是为了实现远程方法调用(Remote Method Invocation, RMI),这是一种轻量级的序列化协议,可以高效地传输Java对象。Hessian使得服务提供者和服务消费者之间能够通过网络进行快速的数据...
HessianServer指的是实现Hessian协议的服务端程序,通常用于构建分布式系统,使得不同的应用可以跨网络进行无缝通信。下面将详细介绍Hessian服务端的相关知识点。 1. **Hessian协议**: Hessian是Adobe公司开发的...
1. **设置环境**:确保你已经在项目中引入了Hessian的库,对于Java,这可能是通过Maven或Gradle添加依赖。对于C++,可能需要下载并编译Hessian库。 2. **创建服务端**:定义一个要暴露的服务接口,比如一个计算两个...