Ver Mensaje Individual
  #916 (permalink)  
Antiguo 11/09/2007, 13:39
marcko_23
 
Fecha de Ingreso: septiembre-2007
Mensajes: 1
Antigüedad: 16 años, 8 meses
Puntos: 0
java.lang.OutOfMemoryError en formato xls

destruktor
no todo puede ser buenas noticias, al momento de que realizo mi reporte, me marca la siguiente exception java.lang.OutOfMemoryError.
Me imagino que es por el numero de registros que encuentra.
Lo genera bien en pdf , rtf , html y xls
Realiza un reporte en XLS Excel, me lo muestra cuando son menos de 1000 registros, pero cuando son 3000 reg. me marca el error que les comento.
El reporte debe estar en una sola pagina de excel sin realizar paginacion
Mi codigo es



public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
IObjectPersisterService service = (IObjectPersisterService) ServiceLocator.getInstance().getService(IObjectPer sisterService.class);

service.open();
Session session = service.getSession();

if (form != null){
InformeAlumnoForm alForm = (InformeAlumnoForm) form;
UserView uv = (UserView) request.getSession().getAttribute("USUARIO");

String reportType = alForm.getTipo();
String informeAlumno = alForm.getNombre();
String centro = alForm.getCentro();
String curso = alForm.getCurso();
try {
//cargar los parametros para el reporte
HashMap reportParams = new HashMap();
reportParams.put("User", uv.getNombre() + " " + uv.getApellidos());
String criterio = "";
if (centro.equals("")){
centro = "Todos los centros";
}else {//Selecciona un solo centro
criterio = "co.codigo = '" + centro + "' and ";
}

reportParams.put("Centro", centro);
ItemView iv= new ItemView();

String info ="";
String query;
if (informeAlumno.equals("AluCentro")){
iv.setId("AluCentro");
iv.setDescripcion("Alumnos por Centro");
info = "Alumnos por Centro";
query="select co.codigo as codcentro, co.nombre as nombrecentro, co.direccion as direccioncentro, al.dni as dni, aludata.nombre as nombrealu, aludata.apellidos as apellidosalu, aludata.fanacimiento as fnacimientoalu, aludata.domicilio as domicilioalu, aludata.provincia as provinciaalu, aludata.cp as cpalu, aludata.sexo as sexoalu from centroocupacional co, alumno al, datosalumno aludata where " + criterio + " co.codigo = al.codigocentro and al.dni = aludata.dni order by co.codigo, aludata.dni";
}else if (informeAlumno.equals("EdicionCurso")){
iv.setId("EdicionCurso");
iv.setDescripcion("Ediciones de Cursos por Centro");
info = "Ediciones de Cursos por Centro";
query="SELECT cur.codigo AS codcurso, cur.nombre AS nombrecurso, edi.codigo AS codedicion, edi.finicio AS fechainiedi, edi.ffin AS fechafinedi, edi.alumnosi AS aluiniedi, edi.alumnosf AS alufinedi FROM curso cur, edicionescurso edi, centroocupacional co WHERE " + criterio + "cur.codigo = edi.codigocurso AND edi.codigocentro = co.codigo " +
"GROUP BY edi.codigo, cur.codigo, cur.nombre, edi.finicio, edi.ffin, edi.alumnosi, edi.alumnosf ";
} else { //if (informeAlumno.equals("AluEdiciones"))
iv.setId("AluEdiciones");
iv.setDescripcion("Alumnos de Ediciones");
info = "Alumnos de Ediciones";
query="SELECT cur.codigo AS codcurso, cur.nombre AS nombrecurso, edi.codigo AS codedicion, edi.finicio AS fechainiedi, edi.ffin AS fechafinedi, edi.alumnosi AS aluiniedi, edi.alumnosf AS alufinedi, alu.dni AS dni, aludata.nombre AS nombrealu, aludata.apellidos AS apellidosalu, aludata.fanacimiento AS fnacimientoalu, aludata.domicilio AS domicilioalu, aludata.provincia AS provinciaalu FROM curso cur, edicionescurso edi, alumnosporcurso aluxcur, alumno alu, datosalumno aludata, centroocupacional co where " + criterio + "cur.codigo = edi.codigocurso AND alu.dni = aluxcur.codigoalumno AND aluxcur.codigoediciones = edi.codigo AND alu.codigocentro = edi.codigocentro AND alu.dni = aludata.dni AND edi.codigocentro = co.codigo " +
"GROUP BY cur.codigo, cur.nombre, edi.codigo, edi.finicio, edi.ffin, edi.alumnosi, edi.alumnosf, alu.dni, aludata.nombre, aludata.apellidos, aludata.fanacimiento, aludata.domicilio, aludata.provincia ";
}
reportParams.put("Info", info);
reportParams.put("Query", query);


String path = super.getPathReportes();

//Create Datasource

String inputXML = path + informeAlumno + ".xml";
reportParams.put("Path", path);
logger.debug("query"+query);
logger.debug("query"+query);
logger.debug("Type"+reportType);


ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
CreateReport aStreamReport = new CreateReport(inputXML, reportType, byteArrayOutputStream, reportParams, session.connection());


sendData(response,byteArrayOutputStream,"ReporteAl umnos." + reportType.toLowerCase());


} catch (Exception e) {
e.printStackTrace();
}

}
return mapping.findForward("showReport");

}

Última edición por marcko_23; 11/09/2007 a las 14:16 Razón: informacion