当前位置: 首页 > news >正文

Hessian入门

1)引入jar包

<!-- https://mvnrepository.com/artifact/com.caucho/hessian -->
        <dependency>
            <groupId>com.caucho</groupId>
            <artifactId>hessian</artifactId>
            <version>4.0.51</version>
        </dependency>

2)创建服务接口

 1 import java.io.File;
 2 import java.util.List;
 3 
 4 public interface HelloSessian {
 5 
 6     String sayHello(String name);
 7     
 8     List<Exam> getExams();
 9     
10     File download(String path);
11     
12     String upload(File file);
13 }

3)写实现类,其中对象要实现序列化接口,因为hessian传递的是二进制流

 1 import java.io.File;
 2 import java.util.ArrayList;
 3 import java.util.Date;
 4 import java.util.List;
 5 
 6 public class HelloSessianImpl implements HelloSessian {
 7 
 8     @Override
 9     public String sayHello(String name) {
10         return "Hello " + name;
11     }
12 
13     @Override
14     public List<Exam> getExams() {
15         List<Exam> exams = new ArrayList<>();
16         Exam e1 = new Exam();
17         e1.setId(1001);
18         e1.setName("yyq");
19         e1.setStart(new Date());
20         Exam e2 = new Exam();
21         e2.setId(1002);
22         e2.setName("lucy");
23         e2.setStart(new Date());
24         exams.add(e1);
25         exams.add(e2);
26         return exams;
27     }
28 
29     @Override
30     public File download(String path) {
31         return new File(path);
32     }
33 
34     @Override
35     public String upload(File file) {
36         String name = file.getName();
37         return "Upload " + name + " ok!";
38     }
39 
40 }
 1 import java.io.Serializable;
 2 import java.util.Date;
 3 
 4 public class Exam implements Serializable {
 5     /**serialVersionUID:(用一句话描述这个变量表示什么). 
 6      */  
 7     private static final long serialVersionUID = 1L;
 8 
 9     private int id;
10     private String name;
11     private Date start;
12     
13     public int getId() {
14         return id;
15     }
16 
17     public void setId(int id) {
18         this.id = id;
19     }
20 
21     public String getName() {
22         return name;
23     }
24 
25     public void setName(String name) {
26         this.name = name;
27     }
28 
29     public Date getStart() {
30         return start;
31     }
32 
33     public void setStart(Date start) {
34         this.start = start;
35     }
36 
37     @Override
38     public String toString() {
39         return "Exam [id=" + id + ", name=" + name + ", start=" + start + "]";
40     }
41 }
View Code

4)配置servlet

 1 <servlet>
 2         <servlet-name>hessian</servlet-name>
 3         <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
 4         <init-param>
 5             <param-name>home-api</param-name>
 6             <param-value>henu.yyq.hessian.HelloSessian</param-value>
 7         </init-param>
 8         <init-param>
 9             <param-name>home-class</param-name>
10             <param-value>henu.yyq.hessian.HelloSessianImpl</param-value>
11         </init-param>
12     </servlet>
13     <servlet-mapping>
14         <servlet-name>hessian</servlet-name>
15         <url-pattern>/hessian</url-pattern>
16     </servlet-mapping>

5)部署并且启动tomcat,不解释

6)客户端调用

客户端引入jar包,记得版本要一致

写调用测试类

 1 public static void main(String[] args) throws IOException {
 2         
 3         HessianProxyFactory factory = new HessianProxyFactory();
 4         factory.setOverloadEnabled(true);
 5         HelloSessian proxy = (HelloSessian) factory.create(HelloSessian.class, "http://localhost:8080/hessian");
 6         String ret = proxy.sayHello("test");
 7         System.out.println(ret);
 8         List<Exam> exams = proxy.getExams();
 9         for (Exam exam : exams) {
10             System.out.println(exam.toString());
11         }
12         
13         File download = proxy.download("d:/1.txt");
14         System.out.println(download.getName());
15         FileInputStream in = new FileInputStream(download);
16         byte[] buf = new byte[1024];
17         in.read(buf);
18         System.out.println(new String(buf));
19         in.close();
20         
21 //        proxy.upload(file)
22     }

 结果:

Hello test
Exam [id=1001, name=yyq, start=Tue May 01 23:48:14 CST 2018]
Exam [id=1002, name=lucy, start=Tue May 01 23:48:14 CST 2018]
1.txt
哈哈哈
第二行

 

转载于:https://www.cnblogs.com/webyyq/p/8978147.html

相关文章:

  • node常用模块---path
  • JPA的配置文件
  • 简单了解JS中的几种遍历
  • Go语言中的反射机制reflect
  • 面试题:servlet jsp cook session 背1
  • linux下安装redis扩展
  • 总结:设计模式之Template Method模式
  • 深入浅出以太坊智能合约
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • 第一个博客,南沙的星星
  • IO创建Socket通信中慎用BufferReader中的readLine()
  • lambda表达式的简单入门
  • 提交表单且不刷新页面
  • selenium+python 优化测试报告
  • Kylin性能调优记——业务技术两手抓
  • 【css3】浏览器内核及其兼容性
  • CentOS6 编译安装 redis-3.2.3
  • Debian下无root权限使用Python访问Oracle
  • download使用浅析
  • git 常用命令
  • JAVA之继承和多态
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • mongodb--安装和初步使用教程
  • Netty源码解析1-Buffer
  • swift基础之_对象 实例方法 对象方法。
  • Terraform入门 - 1. 安装Terraform
  • vue-router的history模式发布配置
  • 初识 beanstalkd
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • ------- 计算机网络基础
  • 类orAPI - 收藏集 - 掘金
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 微信小程序设置上一页数据
  • 项目实战-Api的解决方案
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 做一名精致的JavaScripter 01:JavaScript简介
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • ![CDATA[ ]] 是什么东东
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (C语言)fgets与fputs函数详解
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (简单) HDU 2612 Find a way,BFS。
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (四)模仿学习-完成后台管理页面查询
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)使用VMware vSphere标准交换机设置网络连接