11

我需要公开一些服务以供 Java 客户端(它们应使用 httpinvoker)和其他语言(它们应使用 REST)远程使用。

我可以配置 spring boot 来暴露两者吗?(我不介意是否会使用两个具有不同端口的单独实例,就像在这篇文章中一样)。

我放弃了为内部使用 REST的 Java 客户端提供 API 的想法,因为使用RestTemplate. HttpInvoker 的概念手动将所有 REST 端点连接到代码中相当繁琐,因为它ProxyFactoryBean会自动使用。如果Spring Remoting 能够以某种方式为 JMS、AMQP 和其他方式完成此操作,我将采用这种方式。

4

5 回答 5

3

你可以使用这样的东西。将您的服务公开为休息服务。然后让您的 java 客户端使用http或其他库来使用这些服务。如果任何其他方也有兴趣,他们也可以以自己的方式消费它。

否则,您可以创建自己的 jar 来使用您的休息服务,并让您的 java 客户端使用它,而无需了解休息服务。

于 2015-04-24T07:12:42.740 回答
3

在 Spring Boot 中公开 HTTP 调用程序端点实际上非常容易,以至于看起来好像缺少了什么。在路径上@SpringBootApplication有的spring-webmvc(例如使用spring-boot-starter-webPOM)中,添加以下 bean 定义:

@Bean(name = "/my.service")
public HttpInvokerServiceExporter myHttpInvokerServiceExporter(MyService myServiceImpl) {
    HttpInvokerServiceExporter exporter = new HttpInvokerServiceExporter();
    exporter.setServiceInterface(MyService.class);
    exporter.setService(myServiceImpl);
    return exporter;
}

HTTP 调用程序端点现在暴露在/my.service并且不会影响任何其他映射。您可以根据需要添加任意数量的此类端点;然后是一些@RequestMapping用于 REST 的 s。

于 2016-06-06T13:38:46.803 回答
2

我们在这里使用这两种技术。用于 Java 到 Java 调用的 HttpInvoker。用于其他客户端的基于 HTTP 的普通 JSON(类似于 REST,但不是真正的 REST)。我认为 jsonrpc4j 项目提供了一种很好的方式来实现 HTTP 的东西。

于 2015-09-08T22:28:36.130 回答
2

看看 spring-rest-invoker 。它将 Java 接口绑定到 REST 服务。这并不能解决“暴露”服务的问题,但可以更容易地使用它。

https://github.com/ggeorgovassilis/spring-rest-invoker

于 2017-08-09T05:20:16.840 回答
0

HttpInvoker 在 spring-integration 2.x 之后被删除:http: //docs.spring.io/spring-integration/docs/2.0.x/reference/html/httpinvoker.html(!重要标题提供了详细信息)。在 3.x 和 4.x 版本中有对 HTTP 支持的引用:http: //docs.spring.io/spring-integration/docs/latest-ga/reference/html/http.html

还有另一篇 SO 帖子,有人询问 HTTP 支持和带有一些相关信息的 Spring Boot:Spring Integration Http with Spring Boot and @RequestMapping

希望这能让你走出兔子洞。

于 2015-04-30T19:34:13.633 回答