防止控制器响应

时间:2018-04-26 13:01:11

标签: java spring spring-boot

我正在使用spring boot来模拟我们更复杂的服务之一。虽然所有标准案例都很容易完成,但有一个案例给我带来了一些麻烦。理论上,我嘲笑的应用程序可能会崩溃并关闭连接而不发送响应。

我在春季启动时尝试了几件事来实现这一点,而实际上没有让我的模拟器崩溃。这包括抛出异常处理程序中的异常并且从那里没有正确响应,但是到目前为止,要么已经通过spring生成了错误响应,要么以某种方式解析为空响应。

是否可以选择让@Conroller中的方法在没有任何响应的情况下导致已关闭的连接?

2 个答案:

答案 0 :(得分:0)

您可以创建如下方法:

@ResponseBody
@RequestMapping("/your-url")
public String test() {
    return null;
}

您也可以将@Controller更改为@RestController并删除@ResponseBody

答案 1 :(得分:0)

关闭连接是HTTP规范和协议的责任。您无法以编程方式强制执行它。 HTTP客户端和HTTP服务器之间正在进行连接协商。

虽然您可以尝试中断当前线程或设置标题连接:关闭,但您不应该搞乱处理连接和请求的那部分。您的HTTP服务器可能会意外启动。

尝试不同的方法。如果您需要模拟已关闭的连接,您可以以编程方式分配HTTP服务器的新实例,向其发送请求,保持请求处理并终止实例是一个单独的线程。我确定你会找到一个更好的方法,从另一个角度找到问题的根源。