hessian 演示 (Java和.net交互)

Hessian通信案例(java) 简述Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,主要用作面向对象的消息通信。 GXP中的hessian插件在于提供一种hessian报文与xml报文之间的转换规则,用户可以轻易的采用hessian插件(hessian_pack && hessian_unpack) 阅读详情

Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据  在进行基于Hessian的项目开发时,应当注意以下几点:   ▲JAVA服务器端必须具备以下几点:   ·包含Hessian的jar包   ·设计一个接口,用来给客户端调用   ·实现该接口的功能   ·配置web.xml,配好相应的servlet   ·对象必须实现Serializable 接口   ·对于复杂对像可以使用Map的方法传递   ▲客户端必须具备以下几点:   ·java客户端包含Hessian.jar的包。C#中引用hessianCSharp.dll   ·具有和服务器端结构一样的接口。包括命名空间都最好一样

  ·利用HessianProxyFactory调用远程接口。

 

一、服务器(service)

1、实体类

 1 public class CarDO implements java.io.Serializable{
 2 
 3     /**
 4      * 一定要实现Serializable因为要远程传输
 5      */
 6     private static final long serialVersionUID = 1L;
 7 
 8     String color;
 9 
10     String length;
11 
12     String name;
13 
14     public String getColor() {
15         return this.color;
16     }
17     public void setColor(String color) {
18         this.color = color;
19     }
20     public String getLength() {
21         return this.length;
22     }
23     public void setLength(String length) {
24         this.length = length;
25     }
26     public String getName() {
27         return this.name;
28     }
29     public void setName(String name) {
30         this.name = name;
31     }

 

 2、接口类

 1 
 2 import com.hessian.server.javabean.CarDO;
 3 /**
 4  * @author sunney
 5  *
 6  */
 7 public interface IHello {
 8     
 9     /**
10      * 返回字符串
11      * @return
12      */
13     String sayHello();
14     
15     /**
16      * 返回一个实体
17      * @param carDO
18      * @return
19      */
20     CarDO searchCarInfo(CarDO carDO);
21 }
22 

 

 3、实现类

 

 1 
 2 import com.caucho.hessian.server.HessianServlet;
 3 import com.hessian.server.IHello;
 4 import com.hessian.server.javabean.CarDO;
 5 
 6 public class Hello extends HessianServlet implements IHello{
 7     /**
 8      * 
 9      */
10     private static final long serialVersionUID = 1L;
11 
12     public String sayHello(){
13         return "Hello world,zoomhoo again!";
14     }
15 
16     public CarDO searchCarInfo(CarDO carDO) {   
17         System.out.println("server Color:"+carDO.getColor());
18         System.out.println("server Name:"+carDO.getName());
19         System.out.println("server Length:"+carDO.getLength());
20         carDO.setColor("blue");
21         carDO.setName("baoma"); 
22         carDO.setLength("1000000");
23        return carDO;
24     }
25 
26     
27 }

 

 

 4、web.xml

  1 <?xml version="1.0" encoding="ISO-8859-1"?>

 2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 5     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 6 
 7         <context-param>
 8             <param-name>contextConfigLocation</param-name>
 9             <param-value>/WEB-INF/remoting-servlet.xml</param-value>
10         </context-param>
11 
12          <listener>
13             <listener-class> 
14                 org.springframework.web.context.ContextLoaderListener</listener-class>
15         </listener>
16 
17         <servlet>
18             <servlet-name>remoting</servlet-name>
19 
20             <servlet-class> 
21                 org.springframework.web.servlet.DispatcherServlet</servlet-class>
22             <load-on-startup>1</load-on-startup>
23         </servlet>
24 
25         <servlet-mapping>
26             <servlet-name>remoting</servlet-name>
27             <url-pattern>/remoting/*</url-pattern>
28         </servlet-mapping>
29             
30     <servlet>
31         <servlet-name>Hello</servlet-name>
32         <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
33         <init-param>
34             <param-name>home-class</param-name>
35             <param-value>com.hessian.server.impl.Hello</param-value>
36         </init-param>
37         <init-param>
38             <param-name>home-api</param-name>
39             <param-value>com.hessian.server.IHello</param-value>
40         </init-param>
41         <load-on-startup>1</load-on-startup>
42     </servlet>
43     <servlet-mapping>
44         <servlet-name>Hello</servlet-name>
45         <url-pattern>/Hello</url-pattern>
46     </servlet-mapping>
47     </web-app>

 

5、remoting-servlet.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
 3     "http://www.springframework.org/dtd/spring-beans.dtd">
 4 <beans>
 5     <!--  定义普通bean实例--> 
 6     <bean id="hello" class="com.hessian.server.impl.Hello"/>
 7     <!--  使用HessianServiceExporter 将普通bean导出成Hessian服务-->
 8     <bean name="/HessianRemoting" 
 9         class="org.springframework.remoting.caucho.HessianServiceExporter">
10         <!--  需要导出的目标bean-->
11         <property name="service" ref="hello"/>
12         <!--  Hessian服务的接口-->                 
13         <property name="serviceInterface" value="com.hessian.server.IHello"/>
14     </bean>
15 </beans>

 

 

 二、客户端(clent)

1、客户端也要有对应该的实体类,最好包的路径要一样。如: com.hessian.server.javabean.CarDO

    以上存在不在贴代码。

2、接口

1 import com.hessian.server.javabean.CarDO;
2 /**
3  * @author 
4  * 
5  */
6 public interface IHello {  
7     String sayHello();
8     CarDO searchCarInfo(CarDO carDO);
9 }

 

 3、实现类

 1 
 2 package com.hessian.client;
 3 
 4 import java.net.MalformedURLException;
 5 
 6 import com.caucho.hessian.client.HessianConnectionException;
 7 import com.caucho.hessian.client.HessianProxyFactory;
 8 import com.hessian.server.IHello;
 9 import com.hessian.server.javabean.CarDO;
10 
11 /**
12  * @author 
13  * 
14  */
15 public class simpleTest {
16 
17     /**
18      * @param args
19      */
20     public static void main(String[] args) {
21         //String url = "http://192.168.1.10:8080/hessiantest/Hello";
22          String url = "http://localhost:8080/hessian-server/Hello";
23         HessianProxyFactory factory = new HessianProxyFactory();
24         try {
25             IHello hello = (IHello) factory.create(IHello.class, url);
26             System.out.println(hello.sayHello());
27         
28             CarDO carDO =new CarDO();
29             carDO.setColor("red");
30             carDO.setLength("100mile");
31             carDO.setName("bieke");
32             CarDO returncarDO=hello.searchCarInfo(carDO);
33             
34             System.out.println("client Color:"+returncarDO.getColor());
35             System.out.println("client Name:"+returncarDO.getName());
36             System.out.println("client Length:"+returncarDO.getLength());
37             
38         } catch (MalformedURLException e) {
39             e.printStackTrace();
40         }  catch (HessianConnectionException e) {
41             e.printStackTrace();
42         } 
43     }
44 }

 

 

 

 就这么简单。呵呵,大家一起讨论吧。呵呵。

Java二进制协议之Hessian(1) 此文章是Hessian系列的第一篇,主要是介绍 阅读详情

相关推荐

Hessian接口包 - 轻量级RPC框架与性能测试实战

本文还有配套的精品资源,点击获取 简介:Hessian接口包是一个基于HTTP协议的远程方法调用(RPC)框架,能够高效地传输对象。该压缩包包含客户端库、核心库以及其他相关组件和示例,主要面向性能测试。通过使用这个包,开发者可以在客户端和服务端之间实现高效的Hessian通信,进而进行性能测试,比如调用延迟和并发处理能力等。理解Hessian的工作原理对于优化接口性能和跨项...

weixin_32098457的博客 1192

hessian源码,com.caucho.hessian

众所周知大名鼎鼎的开源remoting的框架hessian的速度是非常快的,有人做过测试:一个UserData类,有一个字符串属性,一个日期属性,一个double属性,分别用java,hessian来序列化一百万次,结果让人吃惊,不止是hessian序列化的速度要比java的快上一倍,而且hessian序列化后的字节数也要比java的少一倍.总是疑惑不解,为什么hessian的速度会那么快,这估计

赠人玫瑰,手留余香. 2339

基于Hessian协议的高效Web服务发布与实战

Hessian支持丰富的数据类型映射,尤其注重跨语言兼容性。其核心设计理念是:在保持语义一致的前提下,尽可能简化类型表达。以下是常见类型在Hessian中的映射规则:Java类型Hessian类型码编码方式跨语言对应(如C#)intInteger'I'32位整数intlongLong'L'64位整数longbooleanBoolean'T'/'F'单字节真/假boolString'S'UTF-8 + 长度前缀stringbyte[]

weixin_42588555的博客 1020

Hessian入门

一、远程通讯协议的基本原理   网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http 、 tcp 、 udp 等等, http 、 tcp 、 udp 都是在基于 Socket 概念上为某类应用场景而扩展出的传输协议,网络 IO ,主要有 bio 、 nio 、 aio 三种方式,所有的分布式应用通讯都基于这个原理而实

Liucheng417的博客 623

CentOS7无网环境实战:MySQL8.0完整离线安装与避坑指南(附依赖包下载)

本文详细介绍了在CentOS7无网环境下MySQL8.0的完整离线安装流程,包括依赖包获取、系统预处理、MySQL二进制安装、服务配置与优化等关键步骤。特别针对离线安装的特殊需求,提供了从依赖包下载到服务调优的全链路解决方案,帮助用户在企业内网或隔离环境中高效部署MySQL数据库。

bush的博客 175

EnlightenGAN训练复现记录

记录EnlightenGAN过程中的问题和解决方式。提示:以下是本篇文章正文内容,下面案例可供参考。

L_27N113E的博客 3847

【hessian】一 hessian 基本介绍

Hessian介绍 Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。 在进行基于Hessian的项目开发时,应当注意以下几点: JAVA服务器端必须具备以下几点: 包含Hessian的jar包 设...

qiaziliping的博客 1万+

智能车竞赛走马观碑组:如何高效识别目标板并优化绕行策略(附实战代码)

本文深入探讨了智能车竞赛走马观碑组中,如何构建从图像识别到路径决策的全栈优化方案。针对目标板识别与绕行策略的核心难点,文章详细解析了基于MobileNetV2的高效识别流水线、结合预瞄点与纯追踪算法的平滑路径规划,以及横向与纵向协同控制策略,并提供了实战代码与调试指南,旨在全面提升小车的比赛表现。

o5p6q的博客 884

Hessian 序列化、反序列化

动手点关注干货不迷路????背景问题和思考:序列化参数有枚举属性,序列化端增加一个枚举,能否正常反序列化?序列化子类,它和父类有同名参数,反序列化时,同名参数能否能正常赋值?序列化对象增加参数,反序列化类不增加参数,能否正常反序列化?用于序列化传输的属性,用包装器比较好,还是基本类型比较好?为什么要使用序列化和反序列化程序在运行过程中,产生的数据,不能一直保存在内存中,需要暂...

字节跳动技术团队官方博客 5765

在Ubuntu 22.04 LTS上搞定Intel Quartus Prime 22.1和QuestaSim:一份保姆级的安装与License配置指南

本文提供在Ubuntu 22.04 LTS上安装和配置Intel Quartus Prime 22.1与QuestaSim的详细指南。涵盖依赖安装、环境变量设置、License配置及常见问题解决,帮助FPGA开发者快速搭建稳定的开发环境。特别针对Ubuntu系统优化,确保工具链高效运行。

weixin_29208077的博客 318

从ENVI SARscape到SNAP:手把手教你迁移哨兵1 GRD数据预处理流程(含避坑指南)

本文详细介绍了从ENVI SARscape迁移到SNAP处理哨兵1 GRD数据的全流程,包括工具哲学差异、数据准备注意事项、核心处理流程等效实现及地形校正技巧。特别针对雷达数据预处理中的常见陷阱提供避坑指南,帮助用户高效完成工具迁移并确保结果质量。

weixin_28677005的博客 486

hessian Java初探

**1. hessian简介** 首先简单介绍下hessian,hessian是一个轻量级的remoting onhttp工具,类似于webService,但是hessian不是使用soap协议,他是基于自己的hessian协议(二进制RPC协议),具有轻量、传输量小、快速、平台及语言无关性等特点。hessian将协议报文封装到http封包中,通过HTTP信道进行传输,是一种高效的远程调用框

u011079274的专栏 609

OpenOCD入门到精通:第20章 Target 子系统源码分析

摘要:本章深入分析OpenOCD Target子系统的核心实现机制。重点包括:1) 通过target_type虚函数表实现多架构抽象,支持ARM、RISC-V等30+种目标;2) ARM ADIv5协议栈实现,包含DAP/AP核心数据结构和访问机制;3) 分层架构设计,从调试接口层到传输层的完整调用链路。系统采用面向对象思想,统一管理目标状态、寄存器缓存、断点/观察点等调试要素,为上层提供标准化的调试操作接口。

从事嵌入式linux android驱动开发,拥有全栈能力 178

Hessian协议详解

摘要:Hessian是Caucho Technology开发的轻量级二进制RPC协议,具有跨语言、高效传输特点。它采用精简二进制编码,支持Java等多种语言,适合微服务和分布式系统。Hessian通过序列化对象实现远程调用,相比XML/JSON更高效但安全性较弱,建议配合HTTPS使用。与Spring集成简便,但在复杂泛型支持和大对象传输方面存在局限。使用时需注意版本兼容性、对象序列化要求和跨语言类型映射问题。

onlymscn的博客 1131

深度剖析XY2-100与SL2-100协议:解锁激光打标核心技术密码

XY2-100和SL2-100是激光打标领域的两种核心控制协议。XY2-100协议采用串行通信,指令集简单,适合常规打标任务,具有成本优势;SL2-100协议支持更高速率(1Mbps以上),具备曲线插补等高级指令,在精密加工领域表现突出。两者的主要差异体现在数据传输(帧结构、速率)、指令集(功能、数量)、参数调节(范围、精度)和错误处理机制等方面。实际应用中,XY2-100适合简单图形的大批量生产,SL2-100更胜任复杂曲面的高精度加工。选择时需综合考虑打标需求、设备兼容性和成本因素,未来两种协议将持续优

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 957

【RKNN】RKNN(Rockchip Neural Network)​​ 的详解

RKNN 为 Rockchip 硬件提供了高效的 AI 推理解决方案,适合需要低功耗、实时响应的边缘场景

浩瀚之水的专栏 1685

Hessian序列化

摘要:Hessian是一种高效的二进制序列化协议,支持Java及多语言互操作,适用于RPC、微服务等场景。本文介绍了Hessian的核心特性、安装配置、基本使用方法,包括对象序列化/反序列化、支持的数据类型。同时探讨了进阶配置技巧、与Dubbo/Spring的集成方案,并对比了主流序列化方案。文章还提供了常见问题解决方案、版本兼容性建议及性能优化策略,最后给出了工具类实现示例,为开发者使用Hessian提供了全面指导。

onlymscn的博客 1081

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

hessian c java_C#使用Hessian调用JAVA的函数

package itbaby;public interface PlusAPI{public String Plus2Str(int A,int B);}PlusService的CODE如下:package itbaby;public class PlusService implements PlusAPI{public String Plus2Str(int A,int B){int iSum ...

weixin_34366539的博客 152

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

hessian入门

hessian入门 一、hessian简介 Hessian是二进制的web service协议,官方网站提供Java、Flash/Flex、Python、C++、.NET C#等实现。Hessian和Axis、XFire都能实现web service方式的远程方法调用,区别是Hessian是二进制协议,Axis、XFire则是SOA...

xiaoyaGrace的博客 480

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C#使用Hessian调用JAVA的函数

Hessian其实很像web service,只不过它的协议不是SOAP,而是它自己规定的binary协议。Hessian的server端提供一个servlet基类,client端获得一个service接口(也就是stub)之后调用上面的方法,stub将方法调用marshal之后通过HTTP传到server,server借助reflection调用service方法。实战开始,先到www.

2559

.Net使用Hessian调用JAVA的函数

Hessian其实很像web service,只不过它的协议不是SOAP,而是它自己规定的binary协议。Hessian的server端提供一个servlet基类,client端获得一个service接口(也就是stub)之后调用上面的方法,stub将方法调用marshal之后通过HTTP传到server,server借助reflection调用service方法。   先到ht...

weixin_30279751的博客 89

hessian over tcp[zz]

原文 http://618119.com/archives/2009/01/11/126.html  作者 lizongbo 扩展java.net.URL支持自定义协议来优化hessian调用 hessian是个高性能的java RPC调用协议,但是官方默认只提供了基于http和https两种方式的远程调用。 虽然每天使用http方式调用上千万次也没出现性能问题,(有jdk一份功劳,jdk1.5及以上版本支持了http.KeepAlive, 默认设置为: http.KeepAlive.rem

gh_aiyz的专栏 1354

Hessian一个入门案例

Hessian与WebService一样,可以完成远程方法调用。 例如,某公司已经有了CRM系统,之后想开发一个物流系统,而物流系统的客户信息需要用到CRM系统中的客户信息,这就需要从新的物流系统去掉用CRM系统的方法获取客户数据。我们通常可以在一个系统内调用系统内的方法,但是一般不可以调用其他系统的方法,而且有的时候,我们需要的其他系统的方法并不一定与我们使用的是同一种程序设计语言,而且这两个系统一般不在同一台服务器上。想要完成这种远程方法调用,可以借助Hessian完成。

您已进入防沉迷系统... 3801

hessian 的简单介绍

一、什么是Hessian      Hessian 是一个基于 binary-RPC实现的远程通讯 library。使用二进制传输数据。Hessian通常通过Web应用来提供服务,通过接口暴露。Servlet和Spring的DispatcherServlet都可以把请求转发给Hessian服务。由以下两种方式提供,分别为:com.caucho.hessian.server.HessianServ

笑话的专栏 1585

java hessian

Hessian是二进制的web service协议,官方网站提供Java、Flash/Flex、Python、C++、.NET C#等实现。Hessian和Axis、XFire都能实现web service方式的远程方法调用,区别是Hessian是二进制协议,Axis、XFire则是SOAP协议,所以从性能上说Hessian远优于后两者,并且Hessian的JAVA使用方法非常简单。Hessi

群来群往的博客 733

RPC框架-hessian学习

先说说hessian有什么优点和缺点 一、优点: 比 Java 原生的对象序列化/反序列化速度更快, 序列化出来以后的数据更小.序列化协议跟应用层协议无关, 可以将 Hessian 序列化以后的数据放在 HTTP Body 里, 也可以放在 DUBBO 里, 或者直接用 Socket 传输。Hessian协议和web service常用的SOAP协议类似,也是将协议报文封装在HTTP封包中,通过HTTP信道进行传输的。因此Hessian协议具有与SOAP协议同样的优点,即传输不受防火墙的限制(防火墙通.

daobuxinzi的博客 667
上一篇: C#WinForm中按钮响应回车事件的简单方法
下一篇: Java和.NET交互工具 JNBridge
CodingSir
博客等级 码龄21年 2149粉丝 812原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值