注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

java 远程调用之Hessian详细说明  

2012-12-14 12:21:24|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.官方网址 
http://hessian.caucho.com/ 
这网站比较简单,经常报404。 


2.什么是hessian
 
The Hessian binary web service protocol makes web services usable without requiring a large framework, and without learning yet another alphabet soup of protocols. Because it is a binary protocol, it is well-suited to sending binary data without any need to extend the protocol with attachments. 
Hessian是一个轻量的二进制网络服务,提供远程接口调用服务。它是一个轻量级框架,不需要你去学习其他的服务协议,因为他是通过二进制传输的,生成的二进制流像普通的访问一样,在网络进行传输,不需要扩展其他协议。 

3.支持的语言 
因为hessian遵照二进制协议,所以可以提供多个语言的服务。 
可以支持如下语文 
wiki  Java   Flash/Flex  Python  C++  .NET C# D  Erlang  PHP  Objective C 


      相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议(Binary),因为采用的是二进制协议,所以它很适合于发送二进制数据。Hessian通常通过Web应用来提供服务,因此非常类似于WebService。只是它不使用SOAP协议。 
      Hessian通过Servlet提供远程服务。需要将匹配某个模式的请求映射到Hessian服务。Spring的DispatcherServlet可以完成该功能,DispatcherServlet可将匹配模式的请求转发到Hessian服务。Hessian的server端提供一个servlet基类, 用来处理发送的请求,而Hessian的这个远程过程调用,完全使用动态代理来实现的,,推荐采用面向接口编程,因此,Hessian服务建议通过接口暴露。

 

Hessian处理过程示意图: 
客户端——>序列化写到输出流——>远程方法(服务器端)——>序列化写到输出流 ——>客户端读取输入流——>输出结果

环境搭建 
Hessian的下载和安装请按如下步骤进行: 
(1)登http://www.caucho.com/hessian/下载Hessian。 
(2)把Hessian相应的Jar包放到Web应用下,所有的jar文件都应该放在WEB-INF/lib下,该文件也不例外。



[代码] 1.服务接口(Hello.java)

1package server;
2 
3public interface Hello {
4  String hello(String name);
5}

[代码] 2.接口实现(HelloImpl.java)

1package server;
2 
3public class HelloImpl implements Hello{
4  public String hello(String name) {
5      return "hello,"+name+"! 欢迎学习Hessian";
6  }
7}

[代码] 服务端配置(web.xml)

01<?xml version="1.0" encoding="UTF-8"?>
02<web-app version="2.4"
03  xmlns="http://java.sun.com/xml/ns/j2ee"
04  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
05  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
06  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
07  <servlet>
08    <servlet-name>hessianService</servlet-name>
09    <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
10    <init-param>
11      <param-name>service-class</param-name>
12      <param-value>server.HelloImpl</param-value>
13    </init-param>
14    <load-on-startup>1</load-on-startup>
15  </servlet>
16  <servlet-mapping>
17    <servlet-name>hessianService</servlet-name>
18    <url-pattern>/hessianService</url-pattern>
19  </servlet-mapping>
20</web-app>

[代码] 4.客户端代码(RomoteTest.java)

01package client;
02 
03import java.net.MalformedURLException;
04import server.Hello;
05import com.caucho.hessian.client.HessianProxyFactory;
06 
07public class RomoteTest {
08  public static void main(String[] args) {
09    //hessian服务的url 其中hessian-v1是项目名
10    String url = "http://192.168.1.104:8081/hessian-v1/hessianService";
11    //创建HessianProxyFactory实例
12    HessianProxyFactory factory = new HessianProxyFactory();
13    //获得Hessian服务的远程引用
14    try {
15      Hello hello = (Hello)factory.create(Hello.class,url);
16      System.out.println(hello.hello("kingtoon"));
17    } catch (MalformedURLException e) {
18      e.printStackTrace();
19    }
20  }
21}
  评论这张
 
阅读(1212)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016