Usando PrintWriter y OutputStream

Estoy creando un proyecto con puntales y tengo un problema al usar Jasper IReports. Quiero exportar algo de información a un archivo pdf y continúo obteniendo la excepción java.lang.IllegalState: getOutputStream () ya ha sido llamada ... Excepción debido a la apertura de ServletOutputStream en mi código cuando la página ya abre un PrintWriter.

El código está en el modelo (por lo que no está en el jsp, está en un archivo java), como sigue:

    public void handle(HttpServletResponse res, Connection connection, String path)throws Exception{
    ServletOutputStream out = null;
    try {

        JasperDesign jasperDesign = JRXmlLoader.load(path);
        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
        byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, null, connection);
        res.setContentType("application/pdf");
        res.setContentLength(bytes.length);
        out = res.getOutputStream();
        out.write(bytes, 0, bytes.length);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        out.flush();
        out.close();
    }

He comprobado la conexión, la ruta y el HttpServletResponse y todos están funcionando bien.

Soy muy novato con Jasper Reports, así como con las cosas de codificación en PDF para que pueda, correctamente, suponer que tengo una idea mínima de lo que estoy haciendo aquí y que, obviamente, mi código está copiado / pegado desde algún lugar a través de la red .

He intentado usar PrintWriter en lugar de OutputStream, transformar bytes en una cadena y usar el método PrintWriter.append (String) (todo lo que no es String es CharSequence), pero no extrae los datos en el PDF.

También he intentado obtener PrintWriter, cerrarlo para abrir OutputStream (no funcionó) o limpiarlo (ninguno).

Cualquier ayuda con una solución para usar cualquiera que pueda mostrar los datos en un pdf sería excelente. ¡Muchas gracias!

Respuestas a la pregunta(4)

Su respuesta a la pregunta