Служба Java в Linux - Как обеспечить постоянную работоспособность.Деймон, Shell скрипт или Wrapper? - PullRequest
1 голос
/ 04 июня 2011

У меня есть рабочий Java, который опрашивает внешнюю систему очередей для заданий через вызовы веб-службы.

Какой самый надежный способ гарантировать, что работник работает в любой момент времени?

Ответы [ 2 ]

1 голос
/ 04 июня 2011

Выполнение JVM не отличается от любой другой программы.Итак, вам нужно собрать сценарий оболочки и поместить его в /etc/init.d и связать его с /etc/rc.d.В версиях RedHat это обеспечит запуск службы с системой.

Wring скрипт может быть сложным, но я бы скопировал один из существующих и изменил его на вызов исполняемого файла Java с правильными параметрами.В этом сценарии вы должны захватить идентификатор процесса Java.Затем вы можете использовать его для мониторинга вашего процесса и при необходимости перезапустить.

0 голосов
/ 04 июня 2011

Пакет java.util.concurrent предлагает простую, прочную основу для такой работы.

Вот простой пример кода, который будет работать:

import java.util.concurrent.*;

public static void main(String[] args)
{
    ScheduledExecutorService service = Executors.newScheduledThreadPool(1);

    // Here's an anonymous class, but your should probably create a class for this
    Runnable poll = new Runnable()
    {
        public void run()
        {
            // put your polling code here
        }
    };

    // Have your code called every 5 seconds like this:
    service.scheduleAtFixedRate(poll, 0, 5, TimeUnit.SECONDS);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...