zoukankan      html  css  js  c++  java
  • Hessian基础入门案例

      Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

          Hessian 是一个基于 binary-RPC 实现的远程通讯 library。使用二进制传输数据。
          Hessian通常通过Web应用来提供服务,通过接口暴露。
          Servlet和Spring的DispatcherServlet都可以把请求转发给Hessian服务。
          由以下两种方式提供,分别为:
          com.caucho.hessian.server.HessianServlet、org.springframework.web.servlet.DispatcherServlet。

    服务端开发:
    第一步:创建一个web项目,并导入hessian的jar包
    第二步:创建一个接口
        public interface HelloService {
            public String sayHello(String name);
            public List<User> findAllUser();
        }
    第三步:提供上面接口的实现类
        public class HelloServiceImpl implements HelloService{
            public String sayHello(String name) {
                System.out.println("sayHello方法被调用了");
                return "hello " + name;
            }

            public List<User> findAllUser() {
                List<User> list = new ArrayList<User>();
                list.add(new User(1, "小王"));
                list.add(new User(2,"小白"));
                return list;
            }
        }
    第四步:在web.xml中配置服务
        <servlet>
            <servlet-name>hessian</servlet-name>
            <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
            <init-param>
                <param-name>home-class</param-name>
                <param-value>cn.rodge.service.HelloServiceImpl</param-value>
            </init-param>
            <init-param>
                <param-name>home-api</param-name>
                <param-value>cn.rodge.service.HelloService</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>hessian</servlet-name>
            <url-pattern>/hessian</url-pattern>
        </servlet-mapping>

    客户端开发:
    第一步:创建一个客户端项目,并导入hessian的jar包
    第二步:创建一个接口(和服务端接口对应)
        public interface HelloService {
            public String sayHello(String name);
            public Object findAllUser();
        }
    第三步:使用hessian提供的方式创建代理对象调用服务
        HessianProxyFactory factory = new HessianProxyFactory();
        HelloService proxy =
            (HelloService) factory.create(HelloService.class, "http://localhost:8080/hessian_server/hessian");
        String ret = proxy.sayHello("test");
        System.out.println(ret);
        Object users = proxy.findAllUser();
        System.out.println(users);

    注:服务端中传递向客户端的自定义实体类, 需要实现Serializable序列化接口
    package cn.rodge.domain;
    import java.io.Serializable;
    public class User implements Serializable {
        private static final long serialVersionUID = 1L;
        private String id;
        private String username;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        @Override
        public String toString() {
            return "User [id=" + id + ", username=" + username + "]";
        }
        public User(String id, String username) {
            super();
            this.id = id;
            this.username = username;
        }
        public User() {
            super();
        }
    }


  • 相关阅读:
    Codeforces 1062
    HDU 1247
    力扣 7. 整数反转
    力扣 3. 无重复字符的最长子串
    力扣1. 两数之和
    力扣 78.子集
    C++编译时报错“count”符号不明确
    Java邻接矩阵存储图简易版以及深度优先优先遍历和广度优先遍历
    word中超链接显示成{HYPERLINK "url"}形式的解决方案
    Hadoop在window上运行出现:java.io.IOException: (null) entry in command string: null chmod 0644
  • 原文地址:https://www.cnblogs.com/rodge-run/p/6492877.html
Copyright © 2011-2022 走看看