Este codigo ejecuta un reporte en jasper y genera un pdf, el mismo lo estoy ejecutando desde la capa controller. Desde aqui debes llamar tu archivo jasper, el cual ya compilado se encarga de trabajar con el jrxml. Recuerda el envio de parametros de tenerlos y del resultset.
JasperPrint jasperPrint;
byte[] output;
String rutaJasper = getServletContext().getRealPath("/reporte/xxxx.jasper");
String rutaReporte = getServletContext().getRealPath(request.getServletPath()); //getServletPath();
Connection conn = null;
CallableStatement stm = null;
ResultSet rs = null;
try {
conn = ConexBd.getConnection();
String query = "{ call ? := SACC.pkg_xxx.xxx()}"; o tambien puede ser
un select esto es jdbc
stm = conn.prepareCall(query);
stm.registerOutParameter(1, OracleTypes.CURSOR);
Map<String, Serializable> map = new HashMap<String, Serializable>();
map.put("PATH_IMG", getServletContext().getRealPath("images/logo.gif"));
stm.execute();
rs = (ResultSet) stm.getObject(1);
response.setContentType("application/pdf");
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(rutaJasper);
jasperPrint = JasperFillManager.fillReport(jasperReport, map, new JRResultSetDataSource(rs));
output = JasperExportManager.exportReportToPdf(jasperPrint); // generacion del PDF en memoria
JasperExportManager.exportReportToPdfFile(jasperPrint, rutaReporte); // generacion del PDF en la ruta especificada
response.setContentLength(output.length);
ServletOutputStream outputStream;
outputStream = response.getOutputStream();
outputStream.write(output);
outputStream.close();