最近,我开始看到Tomcat出现这个奇怪的问题。我有一个小的Spring MVC应用程序(网络服务)在其上运行,除了PUT请求外,它都能正常工作。提交到服务器时,所有POST,GET等请求都可以正常工作,但是只有PUT请求挂起且响应为504。我什至没有看到该请求记录在catalina.out中。
当我重新启动Tomcat时,似乎可以解决此问题,但是当它闲置了一段时间后,它又开始起作用。
在此问题上,我将非常感谢您的帮助,如果您希望我与问题一起发布其他信息,请告诉我。
仅需注意,Tomcat的默认配置没有任何变化。版本为 Apache Tomcat / 8.5.31
我也尝试针对此问题找到一些SO解决方案,并且大多数用户都认为DB连接池是这种情况下的问题,但我的POST和GET工作正常,它们也可以连接到DB。我只是感到困惑,为什么只有PUT请求失败。
以下是我遇到的一些问题:
这是我的控制器(已删除其他请求映射):
@RestController
public class EmployeeController {
private final EmployeeService employeeService;
@Autowired
public EmployeeController(EmployeeService employeeService) {
this.employeeService = employeeService;
}
@RequestMapping(value = "/employee/{employeeID}/{status}", method = RequestMethod.PUT,
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity<Void> updateStatus(@PathVariable Integer employeeID, @PathVariable String status) {
employeeService.updateStatus(employeeID, status);
return new ResponseEntity<>(HttpStatus.OK);
}
}