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 ???