• RPC远程调用 之 Hessian


      Hessian将网络传输的对象转换为二进制流通过Http进行传递,不过它是使用自己的序列化机制实现的编组与反编组,其支持的数据类型是有限制的,不支持复杂的对象。Hessian的优点是可以透过防火墙。

      Hessian也是轻量级的 ws服务,好处是不需要关心过程,调用时就像调用本地一样,毕竟是RMI,http的话,需要自己做好对象的解析  --------方便

    以spring boot整合hessian为例

    首先

    服务端 和 客户端

    添加hessian依赖

    <dependency>    
          <groupId>com.caucho</groupId>    
           <artifactId>hessian</artifactId>    
            <version>4.0.38</version>
    </dependency>


    服务端

    public interface HelloService {
      public String sayHello();
    }

    
    

    @Service("helloService")
    public class HelloServiceImpl implements HelloService{
      @Override
      public String sayHello() {
        return "Hello Service!!!";
      }
    }

    
    

    @Component
    public class HelloServicePublic {
      @Autowired
      private HelloService helloService;
      //发布服务
      @Bean(name = "/helloService")
      public HessianServiceExporter accountService() {
        HessianServiceExporter exporter = new HessianServiceExporter();
        exporter.setService(helloService);
        exporter.setServiceInterface(HelloService.class);
        return exporter;
      }
    }


    客户端

    public interface HelloService {
      public String sayHello();
    }

    @Component
    public class HelloServiceClient {
      @Bean
      public HessianProxyFactoryBean helloClient() {
        HessianProxyFactoryBean factory = new HessianProxyFactoryBean();
        factory.setServiceUrl("http://localhost:8081/taskServer/helloService");
        factory.setServiceInterface(HelloService.class);
        return factory;
      }
    }

    @Controller
    public class UserController {

      @RequestMapping(value="/getHelloRpc",method= RequestMethod.GET)
      @ResponseBody
      public String getHelloRpc(HttpServletRequest request ,ShopTaskUser user) {
        return helloService.sayHello();
      }

    }

    简单,再也不需要自己做对象的解析了……

    注意:

    1、当参数是一个实体类时,如 com.a.projects.hessian.model.Hello  两边路径需一致,interface 接口类没有路径限制。

      当以提供 jar  形式时,忽视这个情况……

    设置hessian超时时间

    修改 com.caucho.hessian.client.HessianProxyFactory 

    private long _readTimeout = 6000;
    private long _connectTimeout = 6000;

    
    
  • 相关阅读:
    目标检测应用化之web页面(YOLO、SSD等)
    传统候选区域提取方法
    非极大值抑制(Non-Maximum Suppression,NMS)
    Darknet windows移植(YOLO v2)
    线性判别分析 LDA
    SVM 支持向量机
    特征-相似度衡量
    布隆过滤器 Bloom Filter
    聚类算法
    图论--最大流
  • 原文地址:https://www.cnblogs.com/xiexy/p/8343090.html
Copyright © 2020-2023  润新知