博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hessian入门
阅读量:6114 次
发布时间:2019-06-21

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

1)引入jar包

com.caucho
hessian
4.0.51

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
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     @Override14     public List
getExams() {15 List
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 @Override30 public File download(String path) {31 return new File(path);32 }33 34 @Override35 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     @Override38     public String toString() {39         return "Exam [id=" + id + ", name=" + name + ", start=" + start + "]";40     }41 }
View Code

4)配置servlet

1 
2
hessian
3
com.caucho.hessian.server.HessianServlet
4
5
home-api
6
henu.yyq.hessian.HelloSessian
7
8
9
home-class
10
henu.yyq.hessian.HelloSessianImpl
11
12
13
14
hessian
15
/hessian
16

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
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 testExam [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

你可能感兴趣的文章
Windows Forms 2.0 Programming 花边(002)——失算!第一章的下马威
查看>>
《WCF技术内幕》翻译12:第1部分_第2章_面向服务:概念汇总
查看>>
Java2Html使用详解
查看>>
C#字符串与字节数组互转
查看>>
Linux下Apache与MySQL+PHP的综合应用案例
查看>>
使用多级分组报表展现分类数据
查看>>
cocos2d-x中Node与Node层级架构
查看>>
2月第3周回顾:黑帽大会华府召开 场面热闹创新不多
查看>>
VB 6.0中判断是否Access 2010中存在指定表格
查看>>
流水线上的思考——异步程序开发模型(1)
查看>>
为SharePoint网站创建自定义导航菜单
查看>>
分布式系统的Raft算法——在失联阶段这个老Leader的任何更新都不能算commit,都回滚,接受新的Leader的新的更新 意味着还是可能丢数据!!!...
查看>>
检查点(Checkpoint)过程如何处理未提交的事务
查看>>
iphone开发中的手势操作:Multiple Taps
查看>>
牛刀小试Oracle之FRA学习
查看>>
Azure SQL Database (21) 将整张表都迁移到Azure Stretch Database里
查看>>
jquery autocomplete实现读取sql数据库自动补全TextBox
查看>>
前端构建工具gulp入门教程(share)
查看>>
springmvc原理
查看>>
详细说说ActionScript中function的call()方法和apply()方法
查看>>