Каков лучший способ выполнять batch с java? [закрывшая]

Привет, что такой хотел узнать, который является лучшим способом выполнять файлы batch с java, формы, о которых я думаю, что возможно делать, это делая все с java а именно например я должен выполнять некие команды путь ssh думаю, что я мог бы присоединяться с java и выполнять команды используя объекты, которые позволяют мне делать это... другую форму, думаю, что состоит в том, чтобы выполнять с java чистый файл batch, что содержал связь ssh и команды..., и другая форма, которую я услышал, - используя framework, как spring, но правда я это не использовал...: Вы, кто рекомендуют меня? привет

1
задан 08.04.2016, 19:26
3 ответа

я хотел бы узнать, который является лучшим способом выполнять файлы batch с java

У тебя есть два способа это делать. Одна используя Runtime:

Runtime.getRuntime().exec("comando", new String[]{ "argumento" });

Другая используя ProcessBuilder:

Process p = new ProcessBuilder("comando", "argumento").start();

"comando" это имя твоего файла (.bat, .sh), который ты будешь выполнять.

Различие состоит в том, что первая - метод wrapper, чтобы создавать инстанцию ProcessBuilder и выполнять процесс. Если ты хочешь добавить конфигурацию, как в какой папке находится процесс, который нужно выполнять, посылать вывод процесса в файл log или в консоль, между другими, использовать вторую форму. Если ты не нуждаешься в том, чтобы не манипулировать ничем из этого, используй первую.

другая форма я думаю, что состоит в том, чтобы выполнять с java чистый файл batch, что содержал связь ssh и команды

Это зависит действительно от команды больше, чем Java в себе. Если твоя конфигурация связи ssh может меняться много, тогда, может быть, годитесь поддерживать вышеупомянутую конфигурацию в твоем файле процесса (.bat, .sh). Иначе, если эта конфигурация статическая и не может / должна быть измененной с tant возможность, тогда, может быть, захоти "защищать это" в коде Java. Нет конкретного ответа для этого.

другая форма, которую я услышал, - используя framework, как spring, но правда я это не использовал

Спринг Бэч реализует работу обработки данных из-за частей. Например, у тебя есть таблица с тысячей реестров, тебе нужно, чтобы каждый реестр был обработан в batch, чтобы производить некую информацию, что выполнение было в параллели, в том, чтобы добавить терпимость к неудачам, и т.д., тогда для этой сцены, ты используешь Спринг Бэч. Если ты хочешь выполнить файл .bat или .sh, Спринг Бэч не вероятно то, что ты ищешь.

5
ответ дан 24.11.2019, 14:37
  • 1
    Спасибо Luiggi я тебе благодарен за это много. Привет. – Erikzon Zarco 08.04.2016, 21:30

Ты можешь реализовывать это используя класс Runtime и посредством mГ©todo exec () :

Runtime.getRuntime().exec("cmd /c start C:\\path\\miarchivo.bat");
1
ответ дан 24.11.2019, 14:37
  • 1
    Если он хорошо, но tambi и # 233; n я увидел, что я могу делать связь ssh с java ( programacion.net/articulo/conectar_via_ssh_con_java_1163 ) или с файла .bat и выполнять это как ты говоришь и #191; Какова лучшая форма? – Erikzon Zarco 08.04.2016, 20:55
  • 2
    хороший это уже не принадлежит вопросу " и #191; Каков лучший способ выполнять batch с java? " ты хочешь добавить другой вопрос определяя то, что ты комментируешь, или я отвечаю тебе aqu и # 237;? – Jorgesys♦ 08.04.2016, 20:58
  • 3
    Хороший, если ты можешь отвечать здесь ты это мне быть благодарным и # 237; в... – Erikzon Zarco 08.04.2016, 21:29

Не, если он подал это тебе. Я поднимаю java.jar с shell: archivo.sh

#!/usr/local/bin/bash
logeo=/ruta/del/log/nombre_archivo_`date +%Y%m%d_%H%M`.log
jar=/ruta/del/jar/Archivo.jar
/opt/java1.5/bin/java -classpath $jar com.paquete.EjecutaClaseConMain > $logeo
gzip $logeo
mv  $logeo.gz /ruta/del/log/comprimido

Это это подняло с crontab регистрируя полный маршрут в archivo.sh , и когда crontab он поднимает sh, работает jar. У jar есть while, который способствует тому, чтобы он не умер до некоего часа ночи. Когда crontab поднимает sh, также производит log и пишет в с system.out.println пока jar был жив. Этот log могут наблюдать с tail-f archivo.sh . В конце дня, когда jar умирает ввиду часа, log сжимается и хранится в папке. В следующий день crontab вновь делает тот же цикл.

Я Думаю, что это противоположность, во что ты хочешь сделать, но чувствую, что он может подавать тебя.

0
ответ дан 24.11.2019, 14:37