Use a normal servlet.
@WebServlet("/image")
public class ImageServlet extends HttpServlet {
@EJB
private ImageService service;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Image image = service.find(request.getParameter("id"));
response.setContentType(image.getContentType());
response.setContentLength(image.getContent().length);
response.setHeader("Content-Disposition", "inline;filename=\"" + URLEncoder.encode(image.getFilename(), "UTF-8") + "\"");
response.getOutputStream().write(image.getContent());
}
}
body {
background-image:url("#{request.contextPath}/image?id=#{bean.imageId}");
}