Hi Thanks, this is one option, so registering an out interceptor at one of the stages which follows MARSHAL (POST_MARSHAL or MARSHAL_ENDING) should work.
However, just returning an InputStream should result in it being closed after it's been copied to the output stream. BinaryDataProvider closes InputStream after the copy has been completed. Another option is to register a prototype-scope resource class and have a @PreDestroy method on this class... Cheers, Sergey -----Original Message----- From: vickatvuuch [mailto:vlisov...@gmail.com] Sent: 30 November 2009 18:22 To: users@cxf.apache.org Subject: Re: how to close inputStream before returning response You can take a look at one of the out interceptors that handle the response. I would start somewhere around JAXRSOutInterceptor and go from there. Parimal Dhinoja wrote: > > Hi All, > > Following is my service method where I am reading file and feed it into > Response object. Even if I try to close my file streams in finally block, > I > didn't receive any file back in response. if I remove stream closing > statements from finally block, I am getting my file in response body when > checked in browser. Can someone please let me know how I can close my > streams or does it will close automatically after Response object is > returned? > > > @GET > @Path("/message1") > public Response getMessage1(@QueryParam("propertyName") > String propertyName) > { > String param = propertyName; > String filePath = "I://abc.xml"; > > FileInputStream fis = null; > BufferedInputStream bis = null; > ResponseBuilder rs = null; > Response response = null; > try > { > fis = new FileInputStream(new File(filePath)); > bis = new BufferedInputStream(fis); > rs = Response.status(200).entity(bis); > response = rs.build(); > // bis.close(); > // fis.close(); > } > catch (Exception e) > { > LOGGER.info(e.getMessage()); > } > finally > { > try > { > if (bis != null) > { > bis.close(); > LOGGER.info("===>bis is closed"); > } > if (fis != null) > { > fis.close(); > } > } > catch (Exception e) > { > LOGGER.info("Exception occured while closing streams"); > } > } > // return Response.status(200).entity(bis).build(); > return response; > > } > > -- > Regards, > Parimal > "Nothing is stationary,Change is a part of Life" > > -- View this message in context: http://old.nabble.com/how-to-close-inputStream-before-returning-response -tp26578495p26579444.html Sent from the cxf-user mailing list archive at Nabble.com.