[英]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将为每个新请求创建新线程。 请参考这个答案,这应该可以解决您的查询
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.