Problema com Process no Tomcat

1 resposta
marciosc

olá… estou tendo problema em executar um comando através do Runtime.getRuntime().exec(cmd);
o que realmente acontece é q quando executo o comando diretamente no console, ele funciona…
se exporto as classes num .jar e executo, funciona…
mas se chamo a funçao dentro da minha aplicaçao web q esta rodando no tomcat,
o processo fica parado aguardando a execução…
ja tentei executar dentro de thread, e tambem nao deu certo…
a ultima tentativa foi a seguinte…

public class TesteB
{
    public TesteB()
	{
		  Process p = null;
		  String cmd = "\"C:/Arquivos de programas/PostgreSQL/8.1/bin/pg_dump.exe\" -h localhost -p 5432 -U postgres -F c -b -f C:/BackupBanco.backup MEUBANCO" ;
		  try {
			  System.out.println("executando...");
		      p = Runtime.getRuntime().exec(cmd);
		      p.waitFor();
		  } catch (Exception e) {
		      System.out.println("error executing " + cmd);
		  }
		  System.out.println(cmd + " returned " + p.exitValue());
	}
}

o processo até cria o arquivo de backup, mas nao “escreve” nele… fica parado…
alguem teria alguma explicação ou solução…

Obrigado!

1 Resposta

marciosc

Olá… bom, nao consegui descobrir porque nao estava dando certo…
esse código abaixo resolveu o problema:

String[] cmd = {dump, "-h", "localhost", "-p", "5432", "-U", "postgres", "-F", "c", "-b","-f", "C:/BackupBanco.backup", "MEUBANCO"} ; ProcessBuilder pb = new ProcessBuilder(cmd); pb.redirectErrorStream(true); Map<String, String> env = pb.environment(); env.put("PGPASSWORD", "postgre"); Process p = pb.start(); p.waitFor();

acho q o que resolveu mesmo o problema foram essas duas linhas:

Map<String, String> env = pb.environment(); env.put("PGPASSWORD", "postgre");
mas nao tenho certeza… se derepente alguem tiver alguma explicaçao, posta ai!!
vlw galera!!

Criado 5 de agosto de 2008
Ultima resposta 5 de ago. de 2008
Respostas 1
Participantes 1