Hessian Binary Web Service Protocol远程接口调用入门

摘要:Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。
hessian类似于Webservice,但是它不使用soap协议,它把协议报文封装到http封包中,通过HTTP信道传输。是一种高效简洁的远程调用框架,它采用的是二进制RPC协议(Binary),具有轻量、传输量小、平台无关的特点,特别适合于目前网络带宽比较小的手机网络应用项目。 Hessian是通过servlet提供远程服务,完全使用动态代理来实现的,推荐采用面向接口编程,因此,Hessian服务建议通过接口暴露。 hessian已经支持Java,Flash/Flex,Python,C++,.NET C#,D,Erlang,PHP,Ruby,Objective C。其中我最喜欢的就是它不需要我们与xml“打交道”,直接操作对象,省去了很多麻烦。
缺点如果service层中返回的对象是复杂对象,使用它就会削弱Hessian的传输量小的优点,而且也会增加Hessian客户端的代码量。既然它是把对象序列化为二进制流的形式在http信道中传输,那么对于安全性高的应用不应该采用hessian(比如网上支付等)、

官方简介:Hessian 是一个二进制协议,提供web 服务就像创建Servlet一样简单. 使用服务就像使用JDK代理接口一样简单,下面就看一下程序例子。

一:首先看一下程序截图:


二:服务端:

1.接口:

package com.micai.hessian.server;public interface Basic {public String hello();}

2.实现类:

package com.micai.hessian.server;public class BaseService implements Basic {private String greetings = "Hello, hessian!";public void setGreetings(String greetings) {this.greetings = greetings;}public String hello() {return greetings;}}

3.web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name>Hessian</display-name><servlet><servlet-name>ducklyl</servlet-name><servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class><init-param><param-name>home-class</param-name><param-value>com.micai.hessian.server.BaseService</param-value></init-param><init-param><param-name>home-api</param-name><param-value>com.micai.hessian.server.Basic</param-value></init-param></servlet><servlet-mapping><servlet-name>ducklyl</servlet-name><url-pattern>/ducklyl</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>


三:客户端:

1.测试类:

package com.micai.hessian.client;import com.caucho.hessian.client.HessianProxyFactory;
import com.micai.hessian.server.Basic;public class BasicClient {public static void main(String[] args) throws Exception {String url = "http://localhost:8080/Hessian/ducklyl";//创建factory实例HessianProxyFactory factory = new HessianProxyFactory();//客户端需实现Basic接口Basic basic = (Basic) factory.create(Basic.class, url);System.out.println("Hessian: " + basic.hello());}
}


四:输出的结果如下图:


这样使用Hessian实现的简单远程接口调用就完成了,是不是很简单呢,赶快来试一下吧!


附上源代码下载地址:http://download.csdn.net/detail/sxdtzhaoxinguo/9182975

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows+Nginx+Tomcat搭建负载均衡和集群环境同时实现session共享(一)

摘要&#xff1a;随着网站的访问量越来越多&#xff0c;所以就考虑给网站增加服务器了&#xff0c;现在比较流行的做法就是给网站做集群环境&#xff0c;下面我把我做的过程记录一下&#xff0c;方便日后查看&#xff0c;同时也希望可以帮助到有需要的朋友&#xff01; 一&…

Eclipse,MyEclipse 安装SVN插件

摘要&#xff1a;MyEclipse10.5安装SVN插件最简单的方式&#xff1a; 一&#xff1a;先到SVN官网下载对应版本的SVN插件包&#xff0c;我这里下载的site-1.10.10版本 下载地址&#xff1a;http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID2240 二&#xf…

MyEclipse 10.5 安装SVN插件

摘要&#xff1a;MyEclipse10.5安装SVN插件最简单的方式&#xff1a; 一&#xff1a;先到SVN官网下载对应版本的SVN插件包&#xff0c;我这里下载的site-1.10.10版本 下载地址&#xff1a;http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID2240 二&#xf…

PHP获取服务器端的相关信息

摘要&#xff1a;PHP获取服务端端的相关信息 一&#xff1a;代码&#xff1a; <!DOCTYPE html> <html> <head><title>第一个PHP程序(获取服务器信息)</title><meta http-equiv"content-type" content"text/html"; charse…

Spring+Hibernate+SpringMVC+MySql实现配置多个数据源!

摘要&#xff1a;在日常的工作中&#xff0c;很多时候我们进行项目开发的时候&#xff0c;一个项目有可能不止用到一个数据源&#xff0c;为了提高数据库的水平伸缩性&#xff0c;需要对多个数据库实例进行管理&#xff0c;需要配置多数据源! 一&#xff1a;代码截图&#xff…

CentOS下安装Memcached,Linux下安装Memcached,centos下安装memcached,linux下安装memcached...

摘要&#xff1a;最近在看《大型分布式网站架构设计与实践》这本书&#xff0c;把其中的学习过程记录一下&#xff0c;以便日后复习。 一&#xff1a;Memcached简单介绍和描述&#xff1a; Memcached 是一个高性能的分布式内存对象缓存系统&#xff0c;用于动态Web应用以减轻数…

一个微信公众号接入另一个微信公众号的内容

摘要&#xff1a;近日来了这么一个需求&#xff0c;就是客户想在他们的微信公众号里面直接接入我们微信公众号的文章&#xff0c;于是我便开始baidu&#xff0c;google&#xff0c;最后发现了一个新的搜索引擎&#xff1a;“搜狗微信搜索”&#xff0c;该搜索引擎是最近才上线的…

SQL Server将数据库中的表复制到另一个数据库

在使用SqlServer的过程中&#xff0c;我们可能需要将表从一个数据库复制到另一个数据库中&#xff0c;今天&#xff0c;小编为大家介绍这种操作的具体方法及步骤。 一&#xff1a;复制表结构&#xff1a; 1.首先&#xff0c;打开并连接Sql Server&#xff0c;在源数据库Sourc…

SQL Server cast() 批量更新列内容

摘要&#xff1a;有这样一个需求&#xff0c;需要把数据表中的列批量更新一下&#xff0c;给后面的数字都增加20&#xff0c;如下图&#xff1a; 正确的sql如下&#xff1a; update tbl_papers_test set name 执业护士考试儿科护理学cast((cast(substring(name,12,datalength(…

SQL Server 批量更新字段值为ROW_NUMBER()+列名称

摘要&#xff1a;有这样一个需求&#xff0c;需要把数据表中的列名称的数据按行号重新排序并更新一下&#xff0c;这里用到了ROW_NUMBER()函数。 一&#xff1a;需求如下图&#xff1a; 二&#xff1a;通过执行如下sql语句实现了上面的需求&#xff0c;如下&#xff1a; update…

Maven+Tomcat的热部署方案

摘要&#xff1a;在日常的开发中&#xff0c;热部署是个非常重要的事&#xff0c;下面就介绍下Maven&#xff0c;Tomcat如何实现热部署! 第一步&#xff1a;配置Tomcat的登陆的用户名与密码 E:\apache-tomcat-7.0.68\conf\tomcat-users.xml 从第35行开始配置 <role rolenam…

readonly与disabled属性在css中区别

论readonly与disabled在css中区别 之前在项目中遇到的一个问题&#xff0c;现在想把它记录下来。 当项目需求上需要在文本框中禁用输入某个值的时候&#xff0c;我第一个反应是用了disabled&#xff0c;因为之前一直接触的都是disabled。但当我需要提交FROM表单的时候&#xf…

SuperMap iDesktop 9D中实现地图配准

SuperMap iDesktop 9D 中实现地图配准 今天在学习SuperMap 过程中无意间接触地图配准&#xff0c;实现功能之后&#xff0c;却没有了解它的作用是什么。经过学习&#xff0c;方才知道&#xff0c;地图配准其实是用在数字化地图之前&#xff0c;主要是对地图进行坐标和投影的校…

jQuery 拖拽窗体

jQuery 拖拽窗体事件 今天给大家分享一个简单拖拽事件&#xff0c;可以通过拖拽事件实现数据的传递,已达到良好的交互&#xff0c;可以实现更为可观的效果。 具体来说&#xff0c;只有三部基本的操作&#xff1a; 第一&#xff1a;当鼠标按下时触发的事件&#xff08;onmoused…

《SuperMap GIS二次开发MVC实战训练---江海区慢性病防治院系统》项目研发阶段性总结

《SuperMap GIS二次开发MVC实战训练—江海区慢性病防治院系统》项目研发阶段性总结 作者&#xff1a;爱怡同学 本次任务完成时间&#xff1a;2019年1月1日&#xff5e;2019年1月10日 开发工具与关键技术&#xff1a;SuperMap iDesktop 9D &#xff0c;MVC&#xff0c; SuperMa…

《帝友 P2P 网络借贷系统》

《帝友 P2P 网络借贷系统》 本次任务完成时间&#xff1a;2018年12月1日&#xff5e;2018年12月15日 开发工具与关键技术&#xff1a;Microsoft Visual Studio &#xff0c;SQL 完成模块功能&#xff1a;后台认证管理篇 项目流程图&#xff1a; &#xff08;1&#xff09; 事…

C#验证码

验证码生成 在学习以及做项目的过程中&#xff0c;我们有时候遇到需要验证码的情况&#xff0c;然后需要对它进行判断是否正确。但首先&#xff0c;我们就必须要生成验证码&#xff0c;才能够对其进行判断。 首先&#xff0c;这是控制层代码&#xff1a; //生成验证码public…

jquery工具箱旋转动画效果

jquery工具箱旋转动画效果 今天给大家分享一个工具箱的旋转动画效果&#xff0c;因为做GIS项目的时候所需要到&#xff0c;这是我在懒人之家看到的一个jquery鼠标点击按钮图标旋转弹出图标菜单旋转动画。 首先&#xff0c;可以引用插件&#xff0c;但因为项目所需&#xff0c;…

.NET短信接口验证

.NET短信接口验证 之前遇到的一个问题&#xff0c;因为没有接触过&#xff0c;所以自己上网查阅过资料也向他人请教以及老师&#xff0c;.NET短信接口调用&#xff0c;其实&#xff0c;网上有许多免费的短信接口平台&#xff0c;但也是有限度的&#xff0c;如果发送的数量过多…

密码判断

.NET(C#)密码判断 当我们需要对密码进行判断的时候&#xff0c;可以不使用提示框模态框的方法&#xff0c;用图片显示判断密码正确与否也是比较美观的&#xff0c;也实为方便&#xff0c;这也是老师提供一种方法。 首先&#xff0c;我们需要把样式铺垫好&#xff1a; <div…