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