Utilizando JasperReports con una ruta relativa

Tengo una aplicación web y el cliente ha solicitado ver algunos informes. El enfoque ha sido utilizar iReport y mostrarles el informe en pantalla.

Ya pregunté algo como esto. Pero hoy he descubierto que las rutas a los archivos de informe (jrxml) son absolutas. Entonces tengo que cambiar el programa para que acepte rutas relativas. He estado tratando de hacer esto, pero parece que ni el jrxml ni los archivos compilados (.jasper) aceptan rutas relativas para ni compilar ni llenar el informe.

Esto es lo que he llegado hasta aquí:

//path is generated as request.getContextPath() + "/jrxmlFiles/"
public void generateReport(HttpServletResponse res, ConexionAdmin con, String path) throws Exception{ 

    ServletOutputStream out = null;
    ByteArrayOutputStream bos    = new ByteArrayOutputStream();

    JasperDesign jasperDesign = JRXmlLoader.load(path);
    JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

  byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, pars, con.initConexion());
        res.setContentType("application/pdf");
  res.setContentLength(bytes.length);
  out = res.getOutputStream();
  out.write(bytes, 0, bytes.length);

  res.setHeader("Cache-Control", "cache");
  res.setHeader("Content-Disposition", "attachment; filename=report.pdf"); 
  res.setHeader("Pragma", "cache");
  res.setContentLength(bos.size());

  out.write(bos.toByteArray());
  out.flush();
  bos.close();
  out.close(); 
  res.flushBuffer();
}

Esto parece funcionar con rutas absolutas, pero me arroja:

Exception Message
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException

cuando se cambió a una ruta relativa. He buscado en la red sin éxito en cómo cambiar mis ajustes.

Tengo el javaDoc para la API jasper, pero prefiero no leerlo si puedo evitarlo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta