• 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();
        }
    }


  • 相关阅读:
    Core Animation笔记(变换)
    Core Animation笔记(- Layer 基本属性)
    使用AndroidStudio编写APICloud模块需要注意的地方,解决模块未定义。
    MAC中使用APICloud同步代码错误解决办法
    【深入理解Java虚拟机 】类加载器的命名空间以及类的卸载
    【深入理解Java虚拟机 】类的加载器
    【深入理解Java虚拟机】类的初始化过程
    Netty中ByteBuf的引用计数线程安全的实现原理
    Java使用PipedStream管道流通信
    Java中的守护线程
  • 原文地址:https://www.cnblogs.com/rodge-run/p/6492877.html
Copyright © 2020-2023  润新知