• 20220507 2. Integration Remoting and Web Services


    前言

    文档地址

    Spring 支持使用各种技术进行远程处理。远程处理支持简化了远程支持服务的开发,这些服务通过 Java 接口和对象作为输入和输出来实现。目前,Spring 支持以下远程处理技术:

    • Java Web Services : Spring 通过 JAX-WS 为 Web 服务提供远程处理支持
    • AMQP : 单独的 Spring AMQP 项目支持通过 AMQP 进行远程处理作为底层协议

    从 Spring Framework 5.3 开始,由于安全原因和更广泛的行业支持,对多种远程处理技术的支持现在已经不再推荐。在 Spring 框架的下一个主要版本中,支持性的基础设施将被移除。

    以下远程处理技术现在已不推荐使用,不会被替换:

    • Remote Method Invocation (RMI) : 通过使用 RmiProxyFactoryBean 和 rsiveviceexporter,Spring 支持传统的 RMI (使用 java.rmi.Remote 接口和 java.rmi.RemoteException ) 和通过 RMI 调用器 (使用任何 Java 接口) 进行透明远程处理
    • Spring HTTP Invoker (Deprecated) : Spring 提供了一种特殊的远程处理策略,允许通过 HTTP 进行 Java 序列化,并支持任何 Java 接口 (就像 RMI 调用器那样) 。相应的支持类是 HttpInvokerProxyFactoryBeanHttpInvokerServiceExporter
    • Hessian : 通过使用 Spring 的 HessianProxyFactoryBeanHessianServiceExporter ,您可以通过 Caucho 提供的基于 http 的轻量级二进制协议透明地公开您的服务
    • JMS (Deprecated) : spring-jms 模块中的 JmsInvokerServiceExporterJmsInvokerProxyFactoryBean 类支持通过 JMS 进行远程处理,作为底层协议

    AMQP

    Spring Remoting with AMQP 将在 Spring AMQP 项目 3.0 版本中被删除

    参见 Spring Remoting

    选择技术时的考虑

    这里介绍的每一种技术都有其缺点。在选择技术时,您应该仔细考虑自己的需求、公开的服务以及通过网络发送的对象。

    在使用 RMI 时,您不能通过 HTTP 协议访问对象,除非您对 RMI 通信进行隧道化。RMI 是一个相当重量级的协议,因为它支持全对象序列化,当您使用需要通过连接进行序列化的复杂数据模型时,这一点非常重要。然而,RMI-JRMP 与 Java 客户机绑定在一起。它是一个 Java 到 Java 的远程处理解决方案。

    如果您需要基于 HTTP 的远程处理,但又依赖于 Java 序列化,Spring 的 HTTP 调用程序是一个很好的选择。它与 RMI 调用器共享基本的基础设施,但使用 HTTP 作为传输。请注意,HTTP 调用器不仅限于 Java 到 Java 远程处理,还限于客户端和服务器端的 Spring 。(后者也适用于非 RMI 接口的 Spring 的 RMI 调用程序)

    在异构环境中操作时,Hessian 可能提供重要的价值,因为它们显式地允许非 Java 客户机。然而,非 Java 支持仍然是有限的。已知的问题包括 Hibernate 对象的序列化以及以延迟方式初始化的集合。如果您有这样的数据模型,可以考虑使用 RMI 或 HTTP 调用器而不是 Hessian 。

    JMS 可以用于提供服务集群,并让 JMS 代理负责负载平衡、发现和自动故障转移。默认情况下,Java 序列化用于 JMS 远程处理,但是 JMS 提供者可以使用不同的连接格式化机制,比如 XStream ,以便在其他技术中实现服务器。

    最后但并非最不重要的一点是,EJB 比 RMI 有优势,因为它支持标准的基于角色的身份验证和授权以及远程事务传播。也可以让 RMI 调用器或 HTTP 调用器支持安全上下文传播,尽管核心 Spring 没有提供这种支持。Spring 只为插入第三方或自定义解决方案提供适当的挂钩。

    Java Web Services

    提供了对标准 Java Web Services API 的全面支持:

    • 使用 JAX-WS 公开 web 服务
    • 使用 JAX-WS 访问 web 服务

    除了 Spring Core 中对 JAX-WS 的支持外,Spring 还提供了 Spring Web Services ,这是一种契约优先、文档驱动的 Web 服务解决方案,强烈推荐用于构建现代的、面向未来的 Web 服务。

    其他略

    RMI (Deprecated)

    从 Spring Framework 5.3 开始,RMI 支持就已经过时,不会被取代。

    使用 Hessian 通过 HTTP 远程调用服务 (Deprecated)

    从 Spring Framework 5.3开始,Hessian 支持就已经过时,不会被取代。

    Spring HTTP Invoker (Deprecated)

    从 Spring Framework 5.3开始,HTTP Invoker 支持就已经过时,不会被取代。

    JMS (Deprecated)

    从 Spring Framework 5.3开始, JMS 远程处理就已经过时,不会被取代。

  • 相关阅读:
    Python在程序中进行多任务操作-协程
    Python-异常处理
    Python多任务-协程
    【每日一具4】TikTok 抖音国际版(网站)使用起来非常简单,无需FQ随便看
    【每日一具3】优美APP一款好用的短视频软件,优美APP专注于各种小姐姐短视频
    Python在程序中进行多任务操作-线程
    Python在程序中进行多任务操作-进程
    Python多任务-线程
    Python多任务-进程
    【每日一具3】优美APP一款好用的短视频软件,优美APP专注于各种小姐姐短视频
  • 原文地址:https://www.cnblogs.com/huangwenjie/p/16361252.html
Copyright © 2020-2023  润新知