Java ResponseEntity在使用DeferredResult时获得空正文
我正在使用SpringBoot 1.4.4创建一个异步RESTful api。除了成功处理请求外,一切正常。尽管我显式地将字符串值设置为结果对象,但DeferredResult始终具有空正文和200 OK状态代码。代码如下所示: RestController impl:Java ResponseEntity在使用DeferredResult时获得空正文,java,rest,spring-boot,Java,Rest,Spring Boot,我正在使用SpringBoot 1.4.4创建一个异步RESTful api。除了成功处理请求外,一切正常。尽管我显式地将字符串值设置为结果对象,但DeferredResult始终具有空正文和200 OK状态代码。代码如下所示: RestController impl: @Async public DeferredResult<ResponseEntity<String>> parseWithLongDelay( @RequestBody MyRe
@Async
public DeferredResult<ResponseEntity<String>> parseWithLongDelay(
@RequestBody MyRequestObject req){
DeferredResult<ResponseEntity<String>> result = new DeferredResult<>();
:
:
result.setResult(new ResponseEntity<String>("That big zip file successfully parsed.", HttpStatus.OK));
return result;
}
@Async
使用LongDelay解析公共延迟结果(
@请求主体(请求对象请求){
DeferredResult=新的DeferredResult();
:
:
setResult(新的ResponseEntity(“那个大zip文件成功解析了。”,HttpStatus.OK));
返回结果;
}
客户端:
@Test
public void test(){
ListenableFuture<ResponseEntity<String>> futureEntity = new AsyncRestTemplate().postForEntity(url, requestEntity,
String.class);
futureEntity.addCallback(new MyFutureCallback());
:
}
class MyFutureCallback implements ListenableFutureCallback<ResponseEntity<String>> {
@Override
public void onSuccess(ResponseEntity<String> entity) {
String body = entity.getBody();
log.info("response content: " + body);
//always get null body, there is no server side exception or error
//when callback happens
}
}
@测试
公开无效测试(){
ListenableFutureEntity=new AsyncRestTemplate().postForEntity(url,requestEntity,
字符串(类);
addCallback(新的MyFutureCallback());
:
}
类MyFutureCallback实现ListenableFutureCallback{
@凌驾
成功时公共无效(响应实体){
String body=entity.getBody();
log.info(“响应内容:+body”);
//始终获取空正文,不存在服务器端异常或错误
//当回调发生时
}
}
我希望字符串“那个大的zip文件成功解析。”作为主体返回而不是null?有线索吗?请帮忙 我发现在我的案例中,
ShallowEtagHeaderFilter
是故障的原因。这就是我在休息方法中所做的,以避免身体空虚:
ShallowEtagHeaderFilter.disableContentCaching(request);
从具有完全不同用途的控制器中删除
@Async
。相同的问题,您解决了还是仍然卡住?相同的问题,其他人有此问题吗?