我需要公开一些服务以供Java客户端(它们应该使用httpinvoker)和其他语言(它们应该使用REST)远程使用。
我可以配置spring Boot 来公开这两个示例吗?(我不介意使用两个具有不同端口的独立示例,就像this post一样)。
我放弃了为内部使用REST的Java客户端提供API的想法,因为使用RestTemplate.
手动将所有REST端点连接到代码中是相当乏味的。我喜欢HttpInvoker的概念,因为ProxyFactoryBean
可以自动使用。如果Spring Remoting能够以一种可以为JMS、AMQP和其他应用程序完成的方式来完成这一点,我将朝着这一方向前进。
6条答案
按热度按时间qrjkbowd1#
你可以这样做,把你的服务公开为一个休息服务,然后让你的java客户端使用http或其他库来消费这些服务,如果其他任何一方也感兴趣,他们也可以用他们自己的方式来消费。
另外,您可以创建自己的jar来使用您的rest服务,并让您的java客户端使用它,而无需了解rest服务。
w80xi6nr2#
在Sping Boot 中暴露HTTP调用程序端点实际上非常容易,看起来好像缺少了什么。在路径上有
spring-webmvc
的@SpringBootApplication
中(例如使用spring-boot-starter-web
POM),添加以下bean定义:HTTP调用程序终结点现在在
/my.service
公开,不会影响任何其他Map。您可以添加任意数量的此类终结点;然后一些@RequestMapping
用于顶部的REST。30byixjq3#
我们在这里使用两种技术。HttpInvoker用于Java到Java调用。普通的JSON over HTTP用于其他客户端(类似于REST,但不是真正的REST)。我认为jsonrpc4j项目提供了一种很好的方法来实现HTTP内容。
7cwmlq894#
看一看spring-rest-invoker,它将Java接口绑定到REST服务,这并没有解决“暴露”服务的问题,但使使用它变得更加容易。
https://github.com/ggeorgovassilis/spring-rest-invoker
56lgkhnf5#
HttpInvoker在spring集成2.x之后被删除:http://docs.spring.io/spring-integration/docs/2.0.x/reference/html/httpinvoker.html(!Important header提供详细信息)。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
希望这能让你从兔子洞里走出来。
jdg4fx2g6#
当调用者的信任度无法验证时,使用Spring HTTP Invoker是很危险的。很长一段时间以来,它都被弃用了,而且在Spring 6中,它的支持将被移除,所以不要使用它。
最好将通信实现为REST调用,并将其 Package 在易于使用的方法中,就像其他一些答案所建议的那样,即Maleen Abewardana的one-https://stackoverflow.com/a/29840971/3673367。
参考文献:
P.S.是的,我知道这个问题很老了,我确信OP不再需要答案了,但是我写这个问题是为了所有其他未来的读者,所以他们不使用Spring HTTP Invoker,也不使用任何其他类似RPC/RMI的Spring特性。