一、下载Hessian

可在hessian官网http://hessian.caucho.com/ 或者http://download.csdn.net/detail/wodediqizhang/9543682下载jar包。
此处用的是hessian-4.0.3.jar

二、 搭建Hessian的Server

2.1.新建一个web项目,HessianTest,如图1。将hessian-4.0.3.jar放在lib下。

2.2.提供服务接口HessianService,代码如下:

  1. package com.cn.wjztr.service;
  2. import com.cn.wjztr.model.HelloWorld;
  3. /**
  4. *
  5. *
  6. * 类名称:HessianService
  7. * 类描述: 定义对外提供服务的接口
  8. * 创建人:wodediqizhang@163.com
  9. * 修改时间:2016-6-7 下午4:39:33
  10. * Modification History:
  11. * =============================================================================
  12. *   Author         Date          Description
  13. *   ------------ ---------- ---------------------------------------------------
  14. *   ghb<span style="font-family: Arial, Helvetica, sans-serif;">                         2016-6-7        创建文档 </span>
  15. * =============================================================================
  16. * @version 1.0.0
  17. *
  18. */
  19. public interface HessianService {
  20. public HelloWorld sayHelloWorld();
  21. }

2.3.HessianService接口要使用HelloWorld对象,HelloWorld代码如下:

  1. package com.cn.wjztr.model;
  2. import java.io.Serializable;
  3. public class HelloWorld implements Serializable{
  4. /**
  5. * serialVersionUID:TODO(用一句话描述这个变量表示什么)
  6. *
  7. * @since 1.0.0
  8. */
  9. private static final long serialVersionUID = 2303638650074878501L;
  10. /**
  11. * 名字
  12. */
  13. private String name;
  14. public HelloWorld() {
  15. }
  16. public HelloWorld(String name) {
  17. this.name = name;
  18. }
  19. public String getName() {
  20. return name;
  21. }
  22. public void setName(String name) {
  23. this.name = name;
  24. }
  25. }

2.4.实现HessianService接口,实现类为HessianServiceImpl:

  1. package com.cn.wjztr.service.impl;
  2. import com.cn.wjztr.model.HelloWorld;
  3. import com.cn.wjztr.service.HessianService;
  4. /**
  5. *
  6. *
  7. * 类名称:HessianServiceImpl
  8. * 类描述:对外提供服务的接口的实现
  9. * 创建人:<span style="font-family: Arial, Helvetica, sans-serif;">wodediqizhang@163.com</span>
  10. * 修改时间:2016-6-7 下午4:47:40
  11. * Modification History:
  12. * =============================================================================
  13. *   Author         Date          Description
  14. *   ------------ ---------- ---------------------------------------------------
  15. *   ghb           2016-6-7        创建文档
  16. * =============================================================================
  17. * @version 1.0.0
  18. *
  19. */
  20. public class HessianServiceImpl implements HessianService {
  21. @Override
  22. public HelloWorld sayHelloWorld() {
  23. // TODO Auto-generated method stub
  24. return new HelloWorld("hello,World");
  25. }
  26. }

2.5.配置web.xml,添加对HessianServlet的配置:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="3.0"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  7. <display-name></display-name>
  8. <welcome-file-list>
  9. <welcome-file>index.jsp</welcome-file>
  10. </welcome-file-list>
  11. <servlet>
  12. <!-- 配置 HessianServlet,Servlet的命名任意-->
  13. <servlet-name>ServiceServlet</servlet-name>
  14. <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
  15. <!-- 配置接口的具体实现类 ,param-name命名任意-->
  16. <init-param>
  17. <param-name>service-class</param-name>
  18. <param-value>com.cn.wjztr.service.impl.HessianServiceImpl</param-value>
  19. </init-param>
  20. </servlet>
  21. <!-- 映射 HessianServlet的访问URL地址-->
  22. <servlet-mapping>
  23. <servlet-name>ServiceServlet</servlet-name>
  24. <url-pattern>/ServiceServlet</url-pattern>
  25. </servlet-mapping>
  26. </web-app>

此时,Hessian Server的配置已经完成了,接下来将应用部署在tomcat并启动。访问链接http://127.0.0.1:8081/HessianTest/ServiceServlet,得到信息如下:

三、实现Hessian的client

调用Hessian的客户端,创建HessianTestClient类,代码如下:

  1. package com.cn.wjztr.controller;
  2. import java.net.MalformedURLException;
  3. import com.caucho.hessian.client.HessianProxyFactory;
  4. import com.cn.wjztr.model.HelloWorld;
  5. import com.cn.wjztr.service.HessianService;
  6. /**
  7. *
  8. *
  9. * 类名称:HessianTestClient
  10. * 类描述:
  11. * 创建人:wodediqizhang@163.com
  12. * 修改时间:2016-6-7 下午4:57:11
  13. * Modification History:
  14. * =============================================================================
  15. *   Author         Date          Description
  16. *   ------------ ---------- ---------------------------------------------------
  17. *   ghb            2016-6-20        创建文档
  18. * =============================================================================
  19. * @version 1.0.0
  20. *
  21. */
  22. public class HessianTestClient {
  23. public static void main(String[] args) {
  24. //在服务器端的web.xml文件中配置的HessianServlet映射的访问URL地址
  25. String url = "http://127.0.0.1:8081/HessianTest/ServiceServlet";
  26. HessianProxyFactory factory = new HessianProxyFactory();
  27. HessianService service = null;
  28. try {service = (HessianService) factory.create(HessianService.class, url);}
  29. catch (MalformedURLException e) {
  30. // TODO Auto-generated catch block
  31. e.printStackTrace();}
  32. //创建IService接口的实例对象
  33. HelloWorld helloWorld = service.sayHelloWorld();
  34. //调用Hessian服务器端的ServiceImpl类中的getUser方法来获取一个User对象
  35. System.out.println(helloWorld.getName());}}
  36. }
  37. }
  1. <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">        运行这个类,会得到“hello,World”信息:</span>

后记:这篇博是借鉴了孤傲苍狼(http://www.cnblogs.com/xdp-gacl/p/3897534.html)这篇文章的内容实现的,不过他是将server和client分开,并将server的接口打了jar包给client,在client项目里面引用jar包里的接口实现对server的调用。这里我觉得理解原理就好,所以就我在这里就写一起了。

再后记:上个后记都说了借鉴,那这篇文章还设为转载吧。就这样。

Hessian知识学习总结(二)——Hessian的helloworld的更多相关文章

  1. 客户端相关知识学习(二)之h5与原生app交互的原理

    前言 现在移动端 web 应用,很多时候都需要与原生 app 进行交互.沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能.所以,这次 ...

  2. Unity基础知识学习笔记二

    1,object Instantiate(object original,Vector3 position,Quaternion rotation)       克隆原始物体,并返回克隆物体.     ...

  3. Java基础知识学习(二)

    Java语法基础 数据类型.类型转换.运算符.逻辑运算符.参考C#,基本一致 输入输出 输出 System.out.print("abc"); System.out.printf( ...

  4. 服务端相关知识学习(二)之Zookeeper可以干什么

    Zookeeper主要可以干哪些事情 配置管理,名字服务,提供分布式同步以及集群管理.那这些服务又到底是什么呢?我们为什么需要这样的服务?我们又为什么要使用Zookeeper来实现呢,使用Zookee ...

  5. Hessian学习总结(一)——Hessian入门

    一.远程通讯协议的基本原理 网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http . tcp . udp 等等, http . ...

  6. 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句

    salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...

  7. Hessian探究(一)Hessian入门示例

    一.hessian的maven信息: [html] view plain copy print? <dependency> <groupId>com.caucho</gr ...

  8. 从零开始学习jQuery (二) 万能的选择器

    本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...

  9. AspectJ基础学习之二搭建环境(转载)

    AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...

随机推荐

  1. A Simple Math Problem (矩阵快速幂)

    Lele now is thinking about a simple function f(x).  If x < 10 f(x) = x.  If x >= 10 f(x) = a0 ...

  2. 解决git从remote clone后所有文件都改变的问题

    遇到2次这种情况了,git从remote clone项目代码后发现所有文件都要改变,因为权限改变了,可以通过git来设置忽略权限变化 git config --global core.fileMode ...

  3. NET Core Web发布包

    给ASP.NET Core Web发布包做减法 https://www.cnblogs.com/sheng-jie/p/9122582.html 1.引言 紧接上篇:ASP.NET Core Web ...

  4. Ubuntu 18.04 Python3.6.6导入wx模块报Gtk-Message : 17:06:05.797 :Failed to load module "canberra-gtk-module"

    解决办法: root@sishen:~# apt-get install libcanberra-gtk-module

  5. T-SQL多个小计+合计,分类汇总

    select then '合计' else cast(姓名 as varchar) end 姓名, then '姓名小计' else cast(学期 as varchar) end 学期, case ...

  6. hubbledotnet 使用笔记

    Hubble vs 字符串 <connectionStrings> <add name="Search" connectionString="serve ...

  7. HDU 1847 Good Luck in CET-4 Everybody! 四级好运!(博弈)

    思路:先用P/N状态来找规律. N状态:1 2 4 6 8 16 P状态:3 5 因为3=1+2, 无论拿1或者2皆输.看看5,只要抽掉2就变成了3,所以是N状态.看看6,可以抽掉1 2 4,若抽1, ...

  8. hdu 2126 Buy the souvenirs 买纪念品(01背包,略变形)

    题意: 给出一些纪念品的价格,先算出手上的钱最多能买多少种东西k,然后求手上的钱能买k种东西的方案数.也就是你想要买最多种东西,而最多种又有多少种组合可选择. 思路: 01背包.显然要先算出手上的钱m ...

  9. 洛谷 P1345 [USACO5.4]奶牛的电信Telecowmunication

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  10. 从PEP-8学习Python编码风格

    (搬运自我在SegmentFault的博客) 关于空行 类与顶级函数(top-level function)的定义之间应当空两行. 类中的方法之间应当空一行. 方法中的逻辑部分之间可以空一行. 关于原 ...