I’m trying to return an image in a JAX-RS web service. I was able to get this successfully working by returning FileInputStream but I’d prefer to avoid creating a File for each request.
I am using Apache CXF and Jackson (all the other resource methods produce application/json).
Code looks like this:
@GET
@Produces("image/png")
public Response getQrCode(@QueryParam("qrtext") String qrtext) {
ByteArrayOutputStream out = QRCode.from(qrtext).to(ImageType.PNG).stream();
return Response.ok(out).build();
}
Unfortunately, this produces the dreaded:
org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor:376 – No message
body writer has been found for response class ByteArrayOutputStream.
Here’s a link to a similar post but it doesn’t mention the “No message body writer” issue I’m running into.
I’d appreciate any ideas of how to deal with this issue. Thanks!
Just use
StreamingOutputwrapper. For some reason it is unknown, but it is GREAT for providing, well, streaming output. 🙂