Depois que fecho o relatório gerado com o ireport minha aplicação é fechada![RESOLVIDO]

4 respostas
carolino

E ai galera!
Meu problema é o seguinte… to rodando o jboss e dentro de uma tela tenho um botão imprimir que
manda imprimir um relatório… ele imprimi o relatório normal… só que o problema é que quando fecho o relatório
ele também encessa minha minha aplicação fechando o servidor e encerrando a conexão com o banco…
Eu queria que depois que eu fechasse o relatório o servidor continuasse no ar e minha aplicação não fosse fechada
Segue abaixo o código de geração do meu relatório…

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;

public class RelatorioVendedor {
	private static final String url = "jdbc:oracle:thin:@localhost:1521:XE";
	private static final String driver = "oracle.jdbc.driver.OracleDriver";
	private static final String login = "*****";
	private static final String pwd = "*****";

	@SuppressWarnings( { "deprecation", "unchecked" })
	public void gerar(String layout) throws ClassNotFoundException,
			SQLException, JRException {
		JasperDesign desenho = JRXmlLoader.load(layout);

		JasperReport relatorio = JasperCompileManager.compileReport(desenho);

		Class.forName(driver);
		Connection conn = DriverManager.getConnection(url, login, pwd);
		Statement stm = conn.createStatement();
		String query = "select * from parceironegocios where discriminator='V'";
		ResultSet rs = stm.executeQuery(query);
		JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

		
		Map parametros = new HashMap();
		parametros.put("", jrRS);
		JasperPrint impressao = JasperFillManager.fillReport(relatorio,
				parametros, jrRS); // fillReport(relatorio,
		// parametros, jrRS);
		
		JasperViewer view = new JasperViewer(impressao);
		view.show();
	}

Alguem poderia me ajudar?

4 Respostas

fabricioempresa

tentar dar o comando:

nomedoIreport.dispose();

higornucci
tenta usar assim
JasperPrint jp = JasperFillManager.fillReport(arquivo, parameterMap, conn);

            JasperViewer.viewReport(jp, false);
carolino

Exatamente higornucci

Oque faltava era o argumento false em:

JasperViewer view = new JasperViewer(impressao,false);

e minha aplicação não foi mais fechada… problema resolvido!
Obrigado pessoal

R

oi ai esta meu codigo

import java.io.*;           
            import java.util.HashMap;    
            import java.util.ArrayList;      
            import java.util.List;      
            import java.util.Map;      
            //import javax.swing.JOptionPane;     
          
          
                         
          public class Dados{               
                       
                  
              //"args" é um array de String onde cada elemento é um argumento passado pela linha de comando momento na "inicialização" da execução.    
              public static void main(String[] args){               
                      
                      
                 Map<Integer, List<String>> mapLines= new HashMap<Integer, List<String>>();         
               try {               
                 //leitura do ficheiro, prepara-o para ser aberto    
                 BufferedReader in = new BufferedReader(new FileReader("conteudo.txt"));               
                 String str;           
                 int i = 0;           
                 //vai percorrer todo o ficheiro    
                 while((str = in.readLine()) != null)               
                 {                     
                     if(str.startsWith("#"))    
                     {                     
                         str= "";                     
                     }                     
                     else{     //esta a dividir a frase em varias strings imprimindo o seu resultado    
                          List<String> values = new ArrayList<String>();         
                              String words[] = str.split(";");             
                              for(String word : words) {             
                                  values.add(word);     
                                  System.out.println(word);    
                              }         
                              mapLines.put(i, values);         
                              i++;         
                     }       
               }// fim do while                               
                 in.close();               
             }  catch (IOException e){               
                 // possiveis erros são tratatos aqui     
                 //JOptionPane.showMessageDialog(null, this.word, "NÂO FOI POSSÍVEL ABRIR O SEU FICHEIRO", JOptionPane.ERROR_MESSAGE);      
                 System.out.println("ERRO-->NÃO FOI ENCONTRADO O SEU FICHEIRO DE DESTINO,TENTE DE NOVO");            
             }          
             // Apresenta o contéudo do Map         
             Map<Integer, List<String>> m = new HashMap<Integer, List<String>>();         
             for(Integer key : m.keySet()) {         
                 for(String word : m.get(key)) {         
                     System.out.println(word);         
                 }         
             }                  
             }     
              public static void main2(String[] args){               
                      
                      
                  Map<Integer, List<String>> mapLines= new HashMap<Integer, List<String>>();         
               try {               
                            
                 BufferedReader in2 = new BufferedReader(new FileReader("conteudo2.txt"));               
                 String str;           
                 int i = 0;           
                 while((str = in2.readLine()) != null)               
                 {                     
                     if(str.startsWith("#"))                     
                     {                     
                         str= "";                     
                     }                     
                     else{     //esta a dividir a frase em varias strings    
                              List<String> values = new ArrayList<String>();         
                              String words[] = str.split(" ");             
                              for(String word : words) {             
                                  values.add(word);    
                                  System.out.println(word);    
                              }         
                              mapLines.put(i, values);         
                              i++;         
                     }       
               }// fim do while                               
                 in2.close();               
             }  catch (IOException e){               
                 // possiveis erros são tratatos aqui      
                 System.out.println("ERRO-->NÃO FOI ENCONTRADO O SEU FICHEIRO DE DESTINO,TENTE DE NOVO");    
             }          
             // Apresenta o contéudo do Map         
             Map<Integer, List<String>> m = new HashMap<Integer, List<String>>();         
             for(Integer key : m.keySet()) {         
                 for(String word : m.get(key)) {         
                     System.out.println(word);         
                 
                  }       
          
              }    
          }    
      }

e tenho por exemplo este ficheiro

961234567 253883377 24:05:2011 10:30:10 068 16 13    
       963456789 253883355 28:05:2011 12:15:17 088 12 09    
       963456789 253883377 29:05:2011 17:00:00 120 14 11    
       969876666 253883377 30:05:2011 10:05:34 070 11 09    
       961234567 253883377 31:05:2011 22:30:05 066 14 11    
       961234567 253883377 02:06:2011 14:19:41 076 15 13    
       963456789 253883377 05:06:2011 11:33:34 085 07 06

e queria que fosse pedido ao utilizador que dados e que ele quer imprimir. por exemplo...pedirmos para imprimir todos os dados com o numero 961234567

abraços

Criado 6 de abril de 2010
Ultima resposta 27 de jun. de 2011
Respostas 4
Participantes 4