【发布时间】:2015-06-29 05:00:31
【问题描述】:
我需要公开一些服务以供 Java 客户端(它们应该使用 httpinvoker)和其他语言(它们应该使用 REST)远程使用。
我可以配置 spring boot 来暴露两者吗? (我不介意是否会使用两个具有不同端口的独立实例,例如this post)。
我放弃了为 内部使用 REST 的 Java 客户端提供 API 的想法,因为使用 RestTemplate. 手动将所有 REST 端点连接到代码中是相当乏味的
我喜欢 HttpInvoker 的概念,因为 ProxyFactoryBean 会自动使用。如果 Spring Remoting 能够以 JMS、AMQP 和其他人可以做到的方式做到这一点,我会朝这个方向前进。
【问题讨论】:
-
您可能混合了两个习惯用法:RPC 和状态传输。 httpInvoker 是关于远程过程调用的。您只需调用一个方法,传入一些参数并获得某种结果。在 REST 中,您几乎要处理更改某物的特定状态(这基本上是 REST 的想法)。我想,这种情况的最佳解决方案是在您的服务前面有两个不同的外观,它们遵循每种 API 样式的原则。
-
我认为这两种技术都可以改变状态。在 REST 中,它是一个 http GET,使用 httpInvoker,您可以调用一个 getMethod。对于修改/创建值 REST 使用 PUT/POST 和 httpInvoker 调用 set/create。但是,当您谈论这两个立面时,这就是有趣的地方:如何以优雅的方式完成?
-
@Marged 为什么要使用 Spring 的 HttpInvoker 等已弃用的工具?它在 Spring 2.0 中已被弃用,我认为 Spring Boot 不会自动配置甚至管理依赖项。
-
我还没有在 spring boot 中检查对 httpinvoker 的支持,因此缺少 boot 支持可能会成为一个问题。您是否有弃用 httpinvoker 的来源?我知道它的支持在 spring 集成中发生了变化,但我认为即使在当前版本的 spring 中它也是积极支持的
-
您不能将 bean 配置为通常的 Rest 服务并使用 httpinvoker 公开它吗? HttpInvoker 配置非常简单,不用 SpringBoot 也可以自己完成
标签: rest spring-boot spring-remoting httpinvoker