запуск / остановка сервера Postgres с использованием java

Я делаю настольное приложение с java и postgres 13 (версия zip) в качестве СУБД. мы хотим, чтобы создание базы данных, запуск / закрытие сервера было прозрачным для пользователя.

использование ProcessBuilder отлично работало с "initdb.exe" для создания кластера, но у нас возникли проблемы с запуском сервера

1- запуск сервера напрямую с помощью ProcessBuilder

                  String path = System.getProperty("user.dir");
            path = path+"\\pgsql\\bin\\pg_ctl.exe";
            String dbPath = System.getProperty("user.dir")+"\\pgsql\\"+dbname;
            String logfile = dbPath+"\\"+dbname+"log.txt"; 
           ProcessBuilder builder = new ProcessBuilder(path, "start","-l", logfile, "-D", dbPath);
            builder.redirectErrorStream(true);
            Process p = builder.start();
            BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line;
            while (true) {
                line = r.readLine();
                if (line == null) {
                    break;
                }
                System.out.println(line);
            }

--- сервер запускается, но блокирует выполнение основной программы.

2- запуск сервера из файла .bat с помощью ProcessBuilder

          ProcessBuilder builder = new ProcessBuilder(System.getProperty("user.dir")+"\\pgsql\\start.bat");

в файле .bat мы перепробовали много опций, таких как "/ b", start "".--- сервер запускается, но отображается окно консоли.

мы пробовали почти все предлагаемые решения по stackoverflow, проблема, похоже, не в «запуске программы с использованием java» или «запуске программы в фоновом режиме», проблема в «запуске сервера postgres из java».

0 ответов

Другие вопросы по тегам