Thank both of you for your replies, but I'm afraid I'm confused. If I create a BufferedImage, how can I return it to the client without streaming it? Since the rest web service isn't storing it anywhere but in memory, I don't understand how to get it back to the client who called the rest web service. I've tried to simply stream it from the rest web service, but I can't get access to the HttpServletResponse object as its always null. I've tried the below to get the HttpServletResponse without success. I'm calling the rest web service url directly from a link on jsp page that does a get on the rest web service url. Thanks for all of your help, greatly appreciated!
@Resource private WebServiceContext context; MessageContext ctx = context.getMessageContext(); HttpServletRequest request = (HttpServletRequest) ctx.get(AbstractHTTPDestination.HTTP_REQUEST); HttpServletResponse response = (HttpServletResponse) ctx.get(AbstractHTTPDestination.HTTP_RESPONSE); rdgrimes wrote: > > Hi, > > In addition to what Sergey has presented, which is undoubtedly more > directly to the point of what you asked, I wanted to suggest the > following. Perhaps this doesn't fit your situation, but I have never found > it actually necessary to waste the servlet framework resources to return a > streamed image. Instead, I prefer to: > > 1) Have the servlet/web service locate the image - whether that means > finding it or creating it on the server's hard drive. > > 2) Pass the name or path of the image back to the client, and > > 3) Have the client use the returned image name or path to request the > image via a standard http static image request. > > Since you indicated that you basically wanted it streamed to the browser, > presumably to simply display it, it sounds like there is no need to tie up > Java framework resources and connections to accomplish what the container > can do with simple HTTP static resource retrieval mechanisms. > > > Ron Grimes > > > > -----Original Message----- > From: Sergey Beryozkin [mailto:[email protected]] > Sent: Tuesday, November 03, 2009 10:42 AM > To: [email protected] > Subject: Re: Return an Image from a REST webservice api > > Hi > > I've looked at BufferedImage JavaDocs ant it appears that indeed, using > StreamingOutput (which can be simpler than doing a custom > MessageBodyWriter) can offer the best option, at least for a start. > > Ex. > > @Path("/images") > public ImagesResource { > @Path("{id}") > public StreamingOutput getImage(@PathParam("id") int id) { > > BufferedImage image = retrieveImage(id); > retrun new StreamingOutputImpl(image); > } > } > > private static class StreamingOutputImpl implements StreamingOutput { > > > private BufferedImage image; > > > public StreamingOutputImplBufferedImage image ) { > > this.image = image; > > } > > > public void write(OutputStream output) throws IOException, > WebApplicationException { > > // just guessing here :-), the idea is to stream the BufferdImage > instance to the output > > ImageProducer ip = image.getImageProducer(); > > im.addImageConsumer(new ImageConsumerImpl(output)); > > ip.startProduction(); > > } > > hope it helps, Sergey > >> >> Hello, >> >> I am brand new to CXF and somewhat new to Java. I have a requirement to >> write a REST webservice that returns a streamed image. My dynamically >> created image is of type BufferedImage. I don't want to persist the >> image >> but simply stream it to the browser. Can anyone help guide me down the >> right path? >> >> I'm able to write the REST webservice, but I'm unsure what annotations to >> use and what return type to specify on my REST webservice method. I've >> looked over the forum a bit and it looks like I should attempt to use the >> StreamingOutput class, but the implementation details are a little vague. >> >> Any guidance would be greatly appreciated! >> >> -Colin >> -- >> View this message in context: >> http://old.nabble.com/Return-an-Image-from-a-REST-webservice-api-tp26160563p26160563.html >> Sent from the cxf-user mailing list archive at Nabble.com. >> > > > -- View this message in context: http://old.nabble.com/Return-an-Image-from-a-REST-webservice-api-tp26160563p26199183.html Sent from the cxf-user mailing list archive at Nabble.com.
