博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RPC实践(三)Hessian实践
阅读量:2501 次
发布时间:2019-05-11

本文共 3329 字,大约阅读时间需要 11 分钟。

一、Hessian 简介

Hessian是一种基于二进制Web服务协议的RPC服务,它最大的特点是一个轻量级的框架基于二进制协议Binary-RPC,借助http进行交互的远程调用框架。因为它是一个二进制协议,它非常适合于发送二进制数据,而无需任何需要扩展的协议与附件。Binary-RPC 是一种和 RMI 类似的远程调用的协议,它和 RMI 的不同之处在于它以标准的二进制格式来定义请求的信息 ( 请求的对象、方法、参数等 ) ,这样做的好处是在跨语言通讯的时候也可以使用。

下图是Hessian官网的截图,目前已经支持多种语言:http://hessian.caucho.com/

二、Hessian环境准备

1、下载java 版的 Hessian jar 包

2、准备Myeclipse开发一个servlet工程

三、Hessian服务端 开发步骤

1、创建一个服务接口java类

2、实现这个服务接口

3、配置web.xml (这步是核心,前面2步和普通的servlet没有区别,配置web.xml时,需要继承HessianServlet 接口

4、发布运行

四、Hessian客户端开发步骤

1、需要接口类

2、通过HessianProxyFactory 获取代理工厂

3、通过这个代理工厂创建客户端对服务端操作的对象

4、调用服务端暴露的方法

五、Hessian的Demo实例

1、服务端Demo

1) 创建一个web 工程, StudyHessian,并在这个工程里面,创建一个服务接口 Hello.java

package com.hessian.demo;public interface Hello {		String  sayHello(String name);		String  getName ( );}
2) 实现Hello的接口 HelloImpl.java

package com.hessian.demo;public class HelloImpl implements Hello{    String myName="null";	    /*     * 实现接口Hello的方法,传入名字,赋值给成员变量后,返回  hello,名字     * @see com.hessian.demo.Hello#saytHello(java.lang.String)     */	public  String  sayHello(String name){		myName = name;		return "hello,"+name+"! ";	}		/*	 * 实现接口类,获取名字	 * @see com.hessian.demo.Hello#getName()	 */	public  String  getName ( ){		return myName;	}}
3) 编写web.xml并发布

StudyHessian
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
  
StudyHessian
  
com.caucho.hessian.server.HessianServlet
  
  
service-class
  
com.hessian.demo.HelloImpl
  
  
1
 
 
  
StudyHessian
  
/HelloServiceDemo
 

这里会有显示错误,不过不影响发布。应该是J2EE版本的问题

修复办法: 

将 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"里面的 javaee 修改  j2ee 就可以了

4)运行并查看,出现下面内容,说明服务端已经正常

服务端日志如下:

信息: Deploying web application directory E:\cwqwork\MyEclipse_Workspace\.metadata\.me_tcat7\webapps\StudyHessian十二月 13, 2016 7:36:00 下午 org.apache.coyote.AbstractProtocol start信息: Starting ProtocolHandler ["http-bio-8080"]十二月 13, 2016 7:36:00 下午 org.apache.coyote.AbstractProtocol start信息: Starting ProtocolHandler ["ajp-bio-8009"]十二月 13, 2016 7:36:00 下午 org.apache.catalina.startup.Catalina start信息: Server startup in 1941 ms

URL验证:

2、客户端编写 HelloHessianClient.java

package com.hessian.demo.client;import java.net.MalformedURLException;import com.caucho.hessian.client.HessianProxyFactory;  import com.hessian.demo.Hello;public class HelloHessianClient {		 public static void main(String[] args) {  		 		 //服务端映射的访问URL地址  		 String url = "http://127.0.0.1:8080/StudyHessian/HelloServiceDemo";   				 HessianProxyFactory factory = new HessianProxyFactory();   		 Hello  helloService = null;  		 		 try {			 helloService = (Hello) factory.create(Hello.class, url);			 }   		 		    catch (MalformedURLException e) {  		    			        // TODO Auto-generated catch block  		        e.printStackTrace();		        }  		 		    //调用接口的sayHello方法   		    System.out.println(helloService.sayHello( "boy" ) );  		    		    //调用服务器端的HelloImpl类中的getName方法   		    System.out.println(helloService.getName());		    }	 }

3.运行客户端,客户端显示如下内容:

你可能感兴趣的文章
Introspector内省和反射的区别.
查看>>
php-fpm配置笔记
查看>>
[转]解读ASP.NET 5 & MVC6系列(7):依赖注入
查看>>
[转]Asp.Net大型项目实践(11)-基于MVC Action粒度的权限管理【续】【源码在这里】(在线demo,全部源码)...
查看>>
[转]VS2010中的单元测试
查看>>
前端面试每日 3+1(每日三问)
查看>>
HC-05底层驱动
查看>>
Ruby on Rails Tutorial 第六章 用户模型
查看>>
Flex与Javascript交互
查看>>
构建之法阅读笔记03
查看>>
IOS https抓包及10.3.3版本证书不生效问题解决
查看>>
Tyvj 1921 Freda的烦恼
查看>>
SQL Server代理的阶梯 - 第2级:作业步骤和子系列
查看>>
jsoup测试例子
查看>>
Datatable/Dataset 转 JSON方法
查看>>
微信公众平台开发接口PHP SDK完整版
查看>>
tiny4412--linux驱动学习(2)
查看>>
MySQL的安装及使用教程
查看>>
iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
查看>>
KMP算法
查看>>