我正在使用由Jersey和Jackson提供支持的JSON REST API的Java服务器上工作。代码归结为类似的东西:
@GET
@Path("/data")
@ManagedAsync
public void getData(@Suspended final AsyncResponse response) {
Stream<MyDataObject> dataStream = myDataBase.getData();
// How to stream the data to the client
// instead of collecting it in a List first?
List<MyDataObject> data = dataStream.collect(Collectors.toList());
response.resume(Response.ok(data).build());
}
我们希望将结果流式传输到客户端,而不是在List
中收集数据,因为对象的数量可能很大。通过google和stackoverflow上的搜索,我发现我可能需要StreamingOutput
,但我不知道如何通过杰克逊连接到泽西岛。
简而言之:如何将数据库中的结果直接流式传输到客户端?