一、简介

Hessian和Burlap是由Caucho Technology提供的基于HTTP协议的轻量级远程服务解决方案。他们都致力于借助尽可能简单那的API和通信协议来简化Web服务。
    Hession和Burlap就如同一个事物的两面,但是每一个解决方案都服务于略微不同的目的。Hession就像RMI一样,使用二进制尽心客户端和服务端的交互。但与其他二进制远程调用技术(如,RMI)不同的是,它的二进制消息可以移植到其他开发语言中(如,PHP、Python、C++、C#)。Burlap是一种基于XML的远程调用技术,这使得它可以自然而然的移植到任何能够解析XML的语言上。正因为如此,Burlap比起Hessian的二进制格式而言有更强的可读性。但,与其他基于XML的远程技术(如,SOAP、XML-RPC)不同,Burlap的消息结构尽可能的简单,不需要额外的外部定义语言(如,WSDL、IDL)。
    你可能想知道如何在Hession和Burlap之间抉择,很大程度,他们是一样的。唯一的区别在于Hession的消息似乎二进制的,在带宽上更有优势,而Burlap的消息是XML的,有更好的可读性。
    由于Hessian和Burlap都是基于HTTP协议的,他们都解决了RMI所头疼的防火墙渗透问题。但是当传递过来的RPC消息中包含序列化对象时,RMI就完胜Hessian和Burlap了。因为Hessian和Burlap都采用私有的序列化机制,如果数据模型非常复杂,那么Hessian和Burlap的序列化模型可能无法胜任。

二、Hession开发步骤

1、编写服务接口

1 package com.cnblogs.javalouvre.service;
2
3 public interface GreetService {
4
5 String sayHello(String name);
6
7 }

2、编写服务实现类,须继承自com.caucho.hessian.server.HessianServlet

 1 package com.cnblogs.javalouvre.service;
2
3 import com.caucho.hessian.server.HessianServlet;
4
5 public class GreetServiceImpl extends HessianServlet implements GreetService {
6
7 private static final long serialVersionUID = 1880738686281295739L;
8
9 @Override
10 public String sayHello(String name) {
11 return "Hello " + name;
12 }
13
14 }

3、配置web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app 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 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
5 version="2.5">
6
7 <servlet>
8 <servlet-name>HessianServlet</servlet-name>
9 <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
10 <init-param>
11 <param-name>home-class</param-name>
12 <param-value>com.cnblogs.javalouvre.service.GreetServiceImpl</param-value>
13 </init-param>
14 <init-param>
15 <param-name>home-api</param-name>
16 <param-value>com.cnblogs.javalouvre.service.GreetService</param-value>
17 </init-param>
18 <load-on-startup>1</load-on-startup>
19 </servlet>
20
21 <servlet-mapping>
22 <servlet-name>HessianServlet</servlet-name>
23 <url-pattern>/GreetService</url-pattern>
24 </servlet-mapping>
25
26 <welcome-file-list>
27 <welcome-file>index.html</welcome-file>
28 <welcome-file>index.htm</welcome-file>
29 <welcome-file>index.jsp</welcome-file>
30 </welcome-file-list>
31
32 </web-app>

4、测试客户端

 1 package com.cnblogs.javalouvre.client;
2
3 import java.net.MalformedURLException;
4
5 import com.caucho.hessian.client.HessianProxyFactory;
6 import com.cnblogs.javalouvre.service.GreetService;
7
8 public class Client {
9
10 public static void main(String[] args) {
11 String url = "http://10.108.1.138:8080/Hessian/GreetService";
12
13 try {
14 GreetService service = (GreetService) (new HessianProxyFactory()).create(GreetService.class, url);
15 System.out.println(service.sayHello("Jobs"));
16 } catch (MalformedURLException e) {
17 e.printStackTrace();
18 }
19 }
20
21 }

三、Burlap开发步骤

1、编写服务接口(同Hessian示例的接口)
    2、编写服务实现类,须继承自com.caucho.burlap.server.BurlapServlet

 1 package com.cnblogs.javalouvre.service;
2
3 import com.caucho.burlap.server.BurlapServlet;
4
5 public class GreetServiceImpl extends BurlapServlet implements GreetService {
6
7 @Override
8 public String sayHello(String name) {
9 return "Hello " + name;
10 }
11
12 }

3、配置web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app 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 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
5 version="2.5">
6
7 <servlet>
8 <servlet-name>GreetService</servlet-name>
9 <servlet-class>com.cnblogs.javalouvre.service.GreetServiceImpl</servlet-class>
10 <load-on-startup>1</load-on-startup>
11 </servlet>
12
13 <servlet-mapping>
14 <servlet-name>GreetService</servlet-name>
15 <url-pattern>/GreetService</url-pattern>
16 </servlet-mapping>
17
18 <welcome-file-list>
19 <welcome-file>index.html</welcome-file>
20 <welcome-file>index.htm</welcome-file>
21 <welcome-file>index.jsp</welcome-file>
22 </welcome-file-list>
23
24 </web-app>

4、测试客户端

 1 package com.cnblogs.javalouvre.client;
2
3 import java.net.MalformedURLException;
4
5 import com.caucho.burlap.client.BurlapProxyFactory;
6 import com.cnblogs.javalouvre.service.GreetService;
7
8 public class Client {
9
10 public static void main(String[] args) {
11 String url = "http://10.108.1.138:8080/Burlap/GreetService";
12
13 try {
14 GreetService service = (GreetService) (new BurlapProxyFactory()).create(GreetService.class, url);
15 System.out.println(service.sayHello("Jobs"));
16 } catch (MalformedURLException e) {
17 e.printStackTrace();
18 }
19 }
20
21 }

java rpc的更多相关文章

  1. 2.Dubbo开源分布式服务框架(JAVA RPC)

    1. Dubbo介绍 Dubbox是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能RPC(即远程调用)实现服务的输出和输入功能, 可以和Spring框架无集成.Dubbo是一款高性能 ...

  2. java RPC系列之二 HTTPINVOKER

    java RPC系列之二  HTTPINVOKER 一.java RPC简单的汇总 java的RPC得到技术,基本包含以下几个,分别是:RMI(远程方法调用) .Caucho的Hessian 和 Bu ...

  3. java RPC系列之一 rmi

    java RPC系列之一    rmi 一.java RPC简单的汇总 java的RPC得到技术,基本包含以下几个,分别是:RMI(远程方法调用) .Caucho的Hessian 和 Burlap . ...

  4. Java RPC 框架 Solon 1.3.7 发布,增强Cloud接口能力范围

    Solon 是一个微型的Java RPC开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC. ...

  5. Java RPC 框架 Solon 1.3.9 发布,更便利的支持

    Solon 是一个微型的Java RPC开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC. ...

  6. JAVA RPC (七) 手把手从零教你写一个生产级RPC之client请求

    上节说了关于通用请求代理,实际上对spring的bean引用都是通过koalasClientProxy来实现的,那么在代理方法中才是我们实际的发送逻辑,咱们先看一下原生的thrift请求是什么样的. ...

  7. JAVA RPC (六) 之手把手从零教你写一个生产级RPC之client的代理

    首先对于RPC来讲,最主要的无非三点[SERVER IO模型].[序列化协议].[client连接池复用],之前的博客大家应该对thrift有一个大致的了解了,那么我们现在来说一说如何将thrift的 ...

  8. JAVA RPC (六) 之thrift反序列化RPC消息体

    我们来看一下服务端的简单实现,直接上thrift代码,很直观的来看一看thrift的server到底干了些什么 public boolean process(TProtocol in, TProtoc ...

  9. JAVA RPC (五) 之thrift序列化RPC消息体

    让大家久等了.继续更新thrift序列化的消息体,下面我们一步一步的看一看thrift的rpc是怎么实例化消息体的. 首先我们先准备一个request文件 namespace java bky str ...

  10. JAVA RPC (四) 之thrift序列化普通对象

    先简单写一个thrift文件 本地通过thrift编译之后会生成一个java源文件.------编译口令 :thrift -gen java mytestrequest.thrift 编译后的源代码如 ...

随机推荐

  1. 设计模式之模板方法模式&&迪米特法则(代码Objective-C展示)

    模板方法模式 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变一个算法的结构即可重定义该算法的某些特定步骤. 比如说,小时候数学老师的随堂检测,都是在黑板 ...

  2. BAT-显示桌面图标

    echo offecho 显示用户的文件REG ADD HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons ...

  3. Spring框架中InitializingBean执行顺序

    本文转自:https://www.cnblogs.com/yql1986/p/4084888.html package org.test.InitializingBean; 2 3 import or ...

  4. VS2013代码调试:[7]如何避免调试时加载符号

    调试的时候不小心点了个东西,然后就花很长时间加在各种dll 解决办法: 1.点 调试2.然后 选项和设置3.右边勾上 启用源服务器支持4.左边点 符号5.把微软符号服务器勾6.运行的时候等一下 莫慌! ...

  5. Dubbo相关博文整理

    configServer配置中心在dubbo client和 dubbo server之间的作用 http://www.cnblogs.com/dengzy/p/5677531.html dubbo ...

  6. JS DOM操作思维导图

  7. viewpager+fragment滑动切换卡顿问题

    最近在做项目的时候遇到个问题,viewpager中的fragment添加使用listview添加数据后出现滑动卡顿,造成用户体验感极差.找了很久的资料,也试了很多大方法,在这里给大家分享下: 1.添加 ...

  8. [Qt] 利用QtWebKit完成JavaScript访问C++对象

    一. 介绍 在浏览器扩展或者WebApp的项目经常用的脚本语言javascript有很多局限性,比如,javascript语言不能够夸窗口访问js对象,不能直接读写磁盘文件(这个也正是发明人设计的安全 ...

  9. HBase二级索引与Join

    转自:http://www.oschina.net/question/12_32573 二级索引与索引Join是Online业务系统要求存储引擎提供的基本特性.RDBMS支持得比较好,NOSQL阵营也 ...

  10. 自然语言交流系统 phxnet团队 创新实训 个人博客 (四)

    关于项目中个使用到的自然语言语音转文字&文字转语言的个人总结: VOICE_NAME, "xiaoyan");speechSynthesizer.setParameter( ...