Enviar mais de um PDF para o Browser do Cliente [RESOLVIDO]

Olá galera, mais um probleminha, eu tenho uma aplicação em que eu mando documentos pdf de um contrato de matrícula, mas as vezes pode ter mais de um documento, preciso mandar 2 pdf de uma vez pro cliente exemplo: contrato.pdf, aditivoBolsa.pdf. o problema é que quando eu chamo os métodos que gera os pdf ele sempre manda só o primeiro o segundo ele ignora, alguem já passo pelo mesmo problema?, segue meu codigo.

Metodo que gera o contrato em PDF:

   public void gerarContrato(String idContrato) {
		Connection con = null;
	    try {
	    	HashMap<String, Object> mapInterna= new HashMap<String, Object>();
	    	//1. Carregar arquivos.
			String contexto = getContextPath();
	    	//2. Configurar parametros.
		    //3. Gerar relatorio em PDF.
			JasperReport pai = null;
		    pai = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "contrato.jasper");	
		    //JasperReport filho = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "parecerObservacao.jasper");
		    mapInterna.put("Usuario",getUsuario());
			mapInterna.put("Imagem",contexto);
			mapInterna.put("CONTRATO",idContrato);
			con  = PoolConnection.getPollConection(Negocio.JDBC_POOL);			
			byte[] rel = JasperRunManager.runReportToPdf(pai, mapInterna, con);
		    //4. Enviar o PDF para o browser do cliente.
	    	HttpServletResponse response = getResponse();
	        response.setContentType("application/pdf");
	        response.setHeader("Content-Disposition","attachment;filename="+"contrato.pdf");
	        ServletOutputStream out = response.getOutputStream();
	        out.write(rel, 0, rel.length);
	        out.flush();
	        out.close();	        
	        FacesContext.getCurrentInstance().responseComplete();
	   } catch (Exception e) {
	       imprimirErrosPagina(e.getMessage());
	   } finally{
		   if (con!= null) {
			   try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}		    
		   }
	   }
	}

Metodo que gera o Aditivo de Bolsa em PDF

public void gerarAditivoBolsa(String idContrato) {
		Connection con = null;
	    try {
	    	HashMap<String, Object> mapInterna= new HashMap<String, Object>();
	    	//1. Carregar arquivos.
			String contexto = getContextPath();
	    	//2. Configurar parametros.
		    //3. Gerar relatorio em PDF.
			JasperReport pai = null;
		    pai = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "aditivoBolsa.jasper");	
		    //JasperReport filho = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "parecerObservacao.jasper");
		    mapInterna.put("Usuario",getUsuario());
			mapInterna.put("Imagem",contexto);
			mapInterna.put("CONTRATO",idContrato);
			con  = PoolConnection.getPollConection(Negocio.JDBC_POOL);			
			byte[] rel = JasperRunManager.runReportToPdf(pai, mapInterna, con);
		    //4. Enviar o PDF para o browser do cliente.
	    	HttpServletResponse response = getResponse();
	        response.setContentType("application/pdf");
	        response.setHeader("Content-Disposition","attachment;filename="+"aditivoBolsa.pdf");
	        ServletOutputStream out = response.getOutputStream();
	        out.write(rel, 0, rel.length);
	        out.flush();
	        out.close();	        
	        FacesContext.getCurrentInstance().responseComplete();
	   } catch (Exception e) {
	       imprimirErrosPagina(e.getMessage());
	   } finally{
		   if (con!= null) {
			   try {
				con.close();
			   } catch (SQLException e) {
				e.printStackTrace();
			   }		    
		   }
	   }
	}

Chamada pra gerar meus relatórios, só gera o primeiro o segundo ele ignora =/.

RelatorioFrm rel = new RelatorioFrm();
  rel.gerarContrato(contrato.getNumeroContrato());
  rel.gerarAditivoBolsa(contrato.getNumeroContrato());

Ja tentei fazer dentro de um método só mas sem susseso

public void gerarDocumentos(String idContrato) {
		Connection con = null;
	    try {
	    	HashMap<String, Object> mapInterna= new HashMap<String, Object>();
	    	//1. Carregar arquivos.
			String contexto = getContextPath();
	    	//2. Configurar parametros.
		    //3. Gerar relatorio em PDF.
			JasperReport pai1 = null;
			JasperReport pai2 = null;
		    pai1 = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "aditivoParcela.jasper");
		    pai2 = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "contrato.jasper");
		    //JasperReport filho = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "parecerObservacao.jasper");
		    mapInterna.put("Usuario",getUsuario());
			mapInterna.put("Imagem",contexto);
			mapInterna.put("CONTRATO",idContrato);
			con  = PoolConnection.getPollConection(Negocio.JDBC_POOL);			
			byte[] rel1 = JasperRunManager.runReportToPdf(pai1, mapInterna, con);
			byte[] rel2 = JasperRunManager.runReportToPdf(pai2, mapInterna, con);
		    //4. Enviar o PDF para o browser do cliente.
	    	HttpServletResponse response = getResponse();
	        response.setContentType("application/pdf");
	        response.setHeader("Content-Disposition","attachment;filename="+"documentos.pdf");
	        ServletOutputStream out = response.getOutputStream();
	        out.write(rel1, 0, rel1.length);
	        out.write(rel2, 0, rel2.length);
	        out.flush();
	        out.close();	        
	        FacesContext.getCurrentInstance().responseComplete();
	   } catch (Exception e) {
	       imprimirErrosPagina(e.getMessage());
	   } finally{
		   if (con!= null) {
			   try {
				con.close();
			   } catch (SQLException e) {
				e.printStackTrace();
			   }		    
		   }
	   }
	}

Sim…
O Protocolo HTTP somente envia 1 STREAM anexado na resposta. Ou seja, não tem como voltar vários arquivos! Limitações de protocolo HTTP.
Já tive sistemas que eu precisei gerar vários boletos bancários em PDF separados. Para contornar isso eu gerei os arquivos dentro do servidor, e via código eu zipei em 1 arquivo unico. Com isso eu enviava na resposta o arquivo.zip para o usuário final.

Blz, vo da uma procurada ak como zipar, vlw!.

coloca eles em um list, e manda para um cliente um table com os pdfs ai o cliente abre qual ele quer

Seguindo a dica do Fernando, usei o pacote java.util.zip, gravei meus pdfs em uma pasta zipei e mandei pro browser do cliente.

Vlw!

Sinceramente não gostei o cliente tem que salvar e descompactar

Mas o cliente não precisa fazer download, ele pode abrir o .zip no browser mesmo, aparece tudo que tiver dentro, e dai ele vai mandando os pdf pra impressão, mas se ele quiser pode fazer o download tbm e abrir posteriormente.

Vc prefere salvar e dezipar uma 1 vez ou fazer donwload de 10, 20 arquivos diferentes repetitivamente?
Estamos abertos para outra ideias…ikkkkkkk

É na verdade não pensei que eram tantos arquivos, mas mesmo assim eu ainda prefiro fazer um lista ai o cliente vai clicando na lista e salvando um a um.

Eu acho legal se forem poucos…mas se passar de um numero já atrapalha a usabilidade…
Melhor receber um zip e manipular na maquina local…

concordo