我需要制作一个Java REST服务,该服务将返回输入流作为响应。我的问题是,在客户端收到整个流之后,我不知道如何关闭流。我正在使用Java和CXF。谢谢
@GET
@Path("/{uuid}")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response getAttachmentByUuid(@PathParam("uuid")String uuid)
{
//getting inputstream from AWS S3
InpputSream is=getStreamFromS3(uuid);
return Response.status(Response.Status.OK).entity(is).build();
// will this "is" stream causes memory leak,, do I have to close it. Client side is not controlled by me
}
JAX-RS是使用Java Servlet实现的。在CXF的情况下,使用CXFServlet
。你流将使用被发送到客户端HttpServletResponse
的Servlet接口的
public void doGet(HttpServletRequest request, HttpServletResponse response)
你不应该关闭一个流源(HttpServletResponse
),如果您尚未创建它。这是容器的责任,您可能会干扰请求的生命周期
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句