是否可以使用REST和httpInvoker在spring boot中远程公开bean

时间:2015-04-21 20:17:20

标签: rest spring-boot spring-remoting httpinvoker

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

我可以配置弹簧启动以暴露两者吗? (我不介意是否会使用两个具有不同端口的独立实例,例如this post)。

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

5 个答案:

答案 0 :(得分:3)

在Spring Boot中公开HTTP调用程序端点实际上非常简单,看起来好像缺少某些东西。在路径@SpringBootApplication的{​​{1}}中(例如使用spring-webmvc POM),添加以下bean定义:

spring-boot-starter-web

HTTP调用程序端点现在在@Bean(name = "/my.service") public HttpInvokerServiceExporter myHttpInvokerServiceExporter(MyService myServiceImpl) { HttpInvokerServiceExporter exporter = new HttpInvokerServiceExporter(); exporter.setServiceInterface(MyService.class); exporter.setService(myServiceImpl); return exporter; } 公开,不会影响任何其他映射。您可以根据需要添加任意数量的端点;然后在顶部使用一些/my.service作为REST。

答案 1 :(得分:2)

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

否则,你可以创建自己的jar来消耗你的休息服务,让你的java客户端使用它,而不需要了解其他服务。

答案 2 :(得分:2)

我们在这里使用这两种技术。 HttpInvoker for Java-to-Java调用。用于其他客户端的纯JSON over HTTP(类似于REST但不是真正的REST)。我认为项目jsonrpc4j提供了一种实现HTTP内容的好方法。

答案 3 :(得分:2)

看看春天休息的人。它将Java接口绑定到REST服务。这并没有解决“暴露”服务的问题,但却更容易使用它。

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

答案 4 :(得分: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 Integration Http with Spring Boot and @RequestMapping

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