Tenho uma tela que cuida do cadastro de docente, após a inserção das informações o usuário clica no botão “Salvar”. No código do actionPerformed do botão “Salvar” é onde passo os dados para a classe de docente e em uma outra classe, que é a que conecta o JAVA com o PostgreSQL, eu pego os dados da classe docente e passo pro banco, na primeira execução as coisas rodam de boa, mas a partir da segunda vez aparece um erro que diz “This connection has been closed.” a conexão foi fechada, ainda não entendo muito bem sobre fechar e abrir a conexão aí não tô sabendo identificar o erro.
Uso o eclipse e o postgres. Segue o código que o eclipse acusou de erro.
Código do botão Salvar:
btnSalvar.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent arg0) {
				
		docente.setNome(tfNome.getText());
		docente.setPseudo(tfPseudo.getText());
		docente.setCelular(tfCelular.getText());
		docente.setEmail(tfEmail.getText());
				
		if(rdbtn20h.isSelected()) {
			docente.setRegime("20h");
		}else if(rdbtn40h.isSelected()) {
			docente.setRegime("40h");
		}else if(rdbtn40hDE.isSelected()) {
			docente.setRegime("40hDE");
		}
				
				
		String selecao = (String) (cbCoordenadoria.getSelectedItem());
				
		ResultSet rs1 = inserir.executarBusca("select CoordCod from coordenadoria where CoordSigla = '"+selecao+"';");//Retorna o codigo da coordenadooria
				
				
		try {
					
			while(rs1.next()) {
				docente.setCoordenadoria(rs1.getInt("CoordCod"));//Passa o codigo da coordenadoria para classe Docente
			}
					
			if(rdbtnDisponivel.isSelected()) {
				docente.setStatus("Disponível");
			}else if(rdbtnIndisponivel.isSelected()) {
				docente.setStatus("Indisponível");
			}else if(rdbtnSemidisponivel.isSelected()) {
				docente.setStatus("SemiDisponível");
				if((String)(cbCargo.getSelectedItem())=="Coordenador(a)") {
							
					String selecao1 = (String) (cbCoordenadoria.getSelectedItem());
							
					ResultSet res4 = inserir.executarBusca("select CoordCod from coordenadoria where CoordSigla = '"+selecao1+"'");
							
					while(res4.next()) {
						docente.setCoordenadoria(res4.getInt("CoordCod"));
					}
							
							
					String selecao2 = (String) (cbCoordenador.getSelectedItem());
							
					ResultSet res2 = inserir.executarBusca("select CoordCod from coordenadoria where CoordSigla = '"+selecao2+"'");
					ResultSet res3 = inserir.executarBusca("select DocCod from docente where DocNome = '"+tfNome.getText()+"'");
							
					while(res2.next()){
						coord.setCoordCod(res2.getInt("CoordCod"));
					}
							
					while(res3.next()){
						docente.setDocCod(res3.getInt("DocCod"));
					}
							
					inserir.coordenadorUpdate(docente,coord);//Faz o Update na tabela de coordenadoria, passando o código de docente.
					cbCoordenador.removeItem(selecao2);//Remove do comboBox a coordenadoria que teve seu coordenador cadastrado.
			
				}	
			}
					
			inserir.inserir(docente);
					
			} catch (Exception e) {
				e.printStackTrace();
			}
			JOptionPane.showMessageDialog(null, "Cadastro realizado com sucesso.");
				
		}
	});
Código do inserir.executarBusca(sql);
public ResultSet executarBusca(String sql){
	try {
		PreparedStatement stm = con.prepareStatement(sql);
		ResultSet rs = stm.executeQuery();
			
		return rs;
	} catch (Exception e) {
		e.printStackTrace();
		return null;
	}
}
Código do inserir.inserir(docente);
public void inserir(CLASSDocente docente) {
		
	try {
			
			
		String sql = "insert into docente (DocCod,DocNome,DocPseudo,DocRegime,DocEmail,DocCelular,DocStatus,CoordCod,DocCargo)\r\n" + 
					 "values (default,?,?,?,?,?,?,?,?);";
			
		PreparedStatement stm = con.prepareStatement(sql);
			
		stm.setString(1, docente.getNome());
		stm.setString(2, docente.getPseudo());
		stm.setString(3, docente.getRegime());
		stm.setString(4, docente.getEmail());
		stm.setString(5, docente.getCelular());
		stm.setString(6, docente.getStatus());
		stm.setInt(7, docente.getCoordenadoria());
		stm.setString(8, docente.getCargo());
			
		stm.executeUpdate();
		stm.close();
		con.close();
			
	} catch (Exception e) {
		e.printStackTrace();
	}
}