Pessoal, já pesquisei por dias e dias, ja implementei todas as soluções possíveis e mesmo assim sem sucesso.
Gostaria de fazer o backup do banco de dados fazendo a chamada so pg_dump via código java.
List<String> comandos = new ArrayList<String>();
comandos.add("pg_dump.exe");
comandos.add("-i");
comandos.add("-h");
comandos.add(MEU_HOST);
comandos.add("-p");
comandos.add(5432);
comandos.add("-U");
comandos.add(MEU_USUÁRIO);
comandos.add("-F");
comandos.add("c");
comandos.add("-b");
comandos.add("-v");
comandos.add("-f");
comandos.add("\\Temp\\DB_.Backup");
comandos.add("banco_teste");
ProcessBuilder pb = new ProcessBuilder(comandos);
pb.environment().put("PGPASSWORD", MINHA_SENHA);
try {
final Process process = pb.start();
final BufferedReader r = new BufferedReader(
new InputStreamReader(process.getErrorStream()));
String line = r.readLine();
while (line != null) {
System.err.println(line);
line = r.readLine();
}
r.close();
final int dcertExitCode = process.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException ie) {
ie.printStackTrace();
}
O erro retornado:
pg_dump: [archiver (db)] connection to database "banco_teste" failed: FATAL: password authentication failed for user MEU_USUARIO
FATAL: password authentication failed for user MEU_USUARIO
pg_dump: *** aborted because of error
Eu acho que o código java não está setando a Variável PGPASSWORD, e assim não concuindo o processo. Gostaria de ma solução que não envolvesse criar um arquivo BAT, pois gostaria de manter em sigilo os dados do banco para o cliente.
Muito obrigado amigos e desde ja agradeço.