繁体   English   中英

REST Web服务接口-多线程

[英]Rest Web Service Interface - Multithreaded

以下是现有Rest接口实现的代码段。

@RestController
@RequestMapping("/login")
public class LoginController {


    @Autowired
    private LoginProcessor loginProcessor;

    @RequestMapping(
        consumes = MediaType.TEXT_XML_VALUE, 
        produces = { MediaType.TEXT_XML_VALUE,
                     MediaType.APPLICATION_JSON_VALUE },
        value = "/v1/login", 
        method = RequestMethod.POST)

     public LoginResponse loginRequest(
            @RequestBody String credentials) throws JAXBException {

               return loginProcessor.request(credentials);
     }
}

如果从不同的客户端发起了对loginRequest()的REST调用,并且可能同时启动了:

1)将创建一个新线程来处理每个请求。 因此,所有请求都被并发处理吗?

要么

2)是否有一个线程来处理所有请求,这意味着在任何一次都仅执行loginRequest(),而其他请求排队了?

理想情况下,我希望该接口能够一次处理多个请求。

感谢您在澄清和加深我对该主题的理解方面的帮助。

皮特

您可以在堆栈溢出中搜索此类问题,因为以前已经回答过。 您可以阅读以下答案: https : //stackoverflow.com/a/7457252/10632970 https://stackoverflow.com/a/17236345/10632970

祝您学习顺利。

每个应用程序都应在Web服务器(tomcat)或应用程序服务器(Web逻辑)服务器中运行,默认情况下,tomcat Web容器将具有200个线程(您可以根据需要进行调整),因此在tomcat中一次可以同时处理200个线程

对于每个输入请求,将由Web容器线程接受,并在分派器Servlet旁边到达相应的控制器类。

我想您正在使用spring框架(因为您已经使用了Autowired和其他注释)。 这样可以解决您的问题:是的,spring将为每个新请求创建新线程。 请参考这个答案,这应该可以解决您的查询

https://stackoverflow.com/a/17236345/7622687

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM