Problemas en descargar un archivo desde servidor web

Hola, tengo el siguiente codigo. No puedo descargar un archivo desde mi servidor web, si alguien me da una mano utiliso jsf y primefaces, no me arroja ningun error pero tampoco se abre el recuadro de descarga

Este es mi codigo

package com.paco.beans;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

@ManagedBean
@SessionScoped
public class DownloadBean implements Serializable {

    private static final long serialVersionUID = 1L;

    public void cbDescargar() throws IOException {

        FacesContext ctx;
        ServletContext request;
        File archCSV;
        FileInputStream fisArch;
        byte[] bytes;
        int leer = 0;
        String nombreArchivo;

        ctx = FacesContext.getCurrentInstance();
        request = (ServletContext) ctx.getExternalContext().getContext();
        archCSV = new File(request.getRealPath("/reports/reporte.pdf"));
        fisArch = new FileInputStream(archCSV);
        bytes = new byte[1000];

        if (!ctx.getResponseComplete()) {

            nombreArchivo = archCSV.getName();
            String contentType = "application/pdf";
            HttpServletResponse response = (HttpServletResponse) ctx.getExternalContext().getResponse();

            response.setContentType(contentType);
            response.setHeader("Content-Disposition","attachment;filename=\"" + nombreArchivo + "\"");
            ServletOutputStream out = response.getOutputStream();

            System.out.println("leer " + leer);
            while ((leer = fisArch.read(bytes)) != -1) {
                out.write(bytes, 0, leer);
            }

            out.flush();
            out.close();
            System.out.println("\nDescargado...\n");
            ctx.responseComplete();
        }
    }

}

el archivo que estoy descargando es un pdf

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Puede ser que

Puede ser que ctx.getResponseComplete() esté devolviendo true y no entra al cuerpo del if.

Intenta:

1) Ver si el método se está ejecutando en primer lugar?
2) Ver que esté entrando al if?
3) Ver que puedas escribir algo? cualquier cosa ( en vez de leer directamente el archivo escribe un "hola" al outputstream ) como en:

out.write( "Hola mundo".getBytes("UTF-8"),  0 , 10 );

4) Ver que el archivo que quieres enviar exista?

System.out.printf(" archCSV.exists()? = %s", archCSV.exists() );