Java 使用 REST 的 Web 服务架构

Java web service architecture with REST

我正在设计一个 Java 将部署到 Wildfly 或 Tomcat(尚未决定)的 Web 应用程序。

基本上是关于需要 REST 接口进行通信(接受 JSON 数据)的离线 java 应用程序。这个想法是应用程序一直运行 并处理存储在 redis 缓存中的请求(存储接收到的 JSON 数据)。

我过去为网站使用了 Spring MVC 框架,但我不需要 REST 界面的 MVC 模式。

有什么方法可以告诉我使用 Spring 框架(或其他 Java 框架) 添加接收 POST 向现有离线应用请求?或者只编写 将使用与现有应用程序相同的缓存 的 REST 服务会更好?

为了说明我的问题,我附上了我正在寻找的架构的简化图:

我认为您应该使用任何轻型 ESB,例如 Camel、Mule 或 Spring Integration。如果您已经使用过 Spring,那么后者可能对您来说最简单。

此类应用的目的是促进任何事物与任何事物之间的通信(在本例中,是与您的离线应用程序的 HTTP 端点)。

看看这个:

https://www.google.ie/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=spring%20integration%20http-inbound

您可以为此使用 Spring MVC。

Mmodel 是您的域 类,View 在这种情况下是 JSON,并且 Controllers 照常处理执行逻辑操作的请求。

您还可以利用 Spring 的 @RestController 注释来快速创建您的端点,例如 java 示例:

@RestController
public class MovieController {

    @Autowired
    private MovieRepository movieRepository;

    @RequestMapping(value = "/movies/{search}", method = RequestMethod.GET)
    public List<Movie> findMovies(@PathVariable String search) {
        return movieRepository.findByName(search);
    }

    @RequestMapping(value = "/movies", method = RequestMethod.POST)
    public void postMovie(@RequestBody Movie movie) {
        movieRepository.save(movie);
    }

}

一旦您谈到 接收 一个 POST 请求,您就自动指的是 HTTP 服务器。

问题只是该服务器是 运行 作为服务还是按需提供。

Is there a way you can point me to for using a Spring framework (or some other Java framework) to add the capability to recieve a POST requests to the existing offline application?

不是没有引入某种 HTTP 容器,不。

Or it will be better to just write the REST service that will use the same cache as the existing application?

是的,没错。正如另一个提到的,我个人会坚持使用 Spring MVC。但对于您的用例,Jersey 也应该非常适合您。

Andres、ESala 和 kervin 的回答为我指明了正确的方向,但我发现最合适的解决方案是:

  • 使用 Spring MVC
  • 实现 REST 服务
  • 将主进程从现有应用程序转换为Spring计划任务