Вызов консольных скриптов из java

Приветствую!

Интересует true-way вызова консольных скриптов из Java.

Допустим, есть скриптик, который надо часто дергать. Скажем раз в минуту помноженное на количество клиентов, берущихся из базы, с последующей обработкой не очень больших ответов, получаемых с задержкой.

Метод Runtime.exec() будет на каждый вызов создавать системный процесс, что мне кажется несколько устрашающим, если клиентов будет около 1000.

Как по-грамотнее это организовать?
  • Вопрос задан
  • 4175 просмотров
Пригласить эксперта
Ответы на вопрос 3
javax
@javax
Software Architect, Java Developer since 1996
А как Вы собираетесь запускать shell скрипт не запуская новый процесс?

Можно написай скрипты на груви, тогда сможете их запускать не создавая нового процесса
Ответ написан
@egorinsk
В unix запуск нового шелл-скрипта (если это шелл скрипт) занимает долю секунды (подробнее скаже команда time), что сравнимо мало в сравнении с частотой запуска. Ничего страшного в создании нового процесса нет.

А вот если это java-программа, то ее время инициаизации может быть значительным. Такие программы лучше не перезапускать часто.

Но если вы хотите дотронуться до основ джедайского искусства: сделайте демон, который будет запускаться, делать долю работы и засыпать на минуту, а ваш Java-код будет раз в минуту его пинать сообщением в сокет, а также оживлять и перезапускать при зависании/аварийном завершении.
Ответ написан
barker
@barker
В дополнение к вышесказанному. Т.е. всё верно, запустить скрипт без запуска шелла, очевидно, невозможно)
Хм, так поднимите один процесс и дёргайте его всё время, давая ему скрипт. Либо вынесите запуск скрипта наружу в нативную среду каким-либо образом (демоном, как выше сказали, или шедулером или как-то так).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы