Pessoal, boa tarde !!
gostaria de postar um problema que estou passando para saber se alguém já passou por algo parecido…
Meu Ambiente:
Eclipse Indigo (3.7) + JSF 2.0 + JPA 2.0 + Primefaces + Spring-Security 3.1 + Maven 2.2.1
Estou com problemas para gerar meu relatório usando o IReport 4.3.1:
estou recebendo o seguinte erro: javax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen space
Não pode ser o tamanho do meu relatório estar estrapolando a memória porque só tenho 2 campos…
Minha chamada para o relatório é a seguinte:
try {
List<UsuarioBean> listaUsuario = new ArrayList<UsuarioBean>();
UsuarioBean usuario = new UsuarioBean();
usuario.setEmail("teste@gmail.com");
usuario.setLogin("login teste");
listaUsuario.add(usuario);
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("email", "Email");
parametros.put("nome", "Nome");
parametros.put("permissao", "Permissao");
JRDataSource jrds = new JRBeanCollectionDataSource(listaUsuario);
String arquivoPDF = "Teste" + ".pdf";
FacesContext facesContext = FacesContext.getCurrentInstance();
ServletContext servletContext = (ServletContext) facesContext.getExternalContext().getContext();
String arquivoJasper = "report2.jasper";
// recupera path completo da aplicacao
String pathRel = servletContext.getRealPath(arquivoJasper);
System.out.println(pathRel);
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
ServletOutputStream servletOutputStream = response.getOutputStream();
byte[] bytes = JasperRunManager.runReportToPdf(pathRel, parametros,jrds);
if (bytes != null && bytes.length > 0) {
// Abre no leitor pdf padrão da maquina cliente
response.setHeader("Content-Disposition","attachment; filename=" + arquivoPDF);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
servletOutputStream.write(bytes, 0, bytes.length);
servletOutputStream.flush();
servletOutputStream.close();
}
facesContext.renderResponse();
facesContext.responseComplete();
} catch (Exception e) {
e.printStackTrace();
}
Eu acredito que o código e o arquivo .jrxml estão corretos, porque eu consegui abrir o mesmíssimo relatório com o IReport 3.7, mas eu gostaria de usar a versão 4.3.1…
Talvez seja algum jar que esteja faltando … eu estou usando estes:
commons-beanutil-1.8.2.jar
commons-digester-1.7.0.jar
iText-2.1.7.jar
jasperreports-4.1.3.jar
Por favor, alguém tem alguma idéia do que possa ser ???