Как преобразовать существующее JAVA-приложение в SYS V сервисов (демон) [дубликат]

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

with del as ( 
 select user_id
        , event_date as date_deleted
 from user_events
 where event_type = 'USER_DELETED'
)
select del.user_id
      , del.date_deleted
      , act.event_date as date_activated
from del
     join user_events act
          on act.user_id = del.user_id
where act.event_type = 'USER_ACTIVATED'
and del.date_deleted < act.event_date
order by del.user_id
/

Как показывают другие ответы, существует много способов написать выше. Другое простое решение - самосоединение:

select del.user_id
      , del.date_deleted
      , act.event_date as date_activated
from user_events del
     join user_events act
          on act.user_id = del.user_id
where del.event_type = 'USER_DELETED'
and act.event_type = 'USER_ACTIVATED'
and del.date_deleted < act.event_date
order by del.user_id
/
8
задан sblundy 2 January 2009 в 15:18
поделиться

2 ответа

Смотрите на Apache Демон палаты общин.

Это имеет 'jsvc' средство запуска, которое поддерживает запуск и остановку основанных на Java демонов (сервисы).

11
ответ дан 5 December 2019 в 08:54
поделиться

Во-первых, сохранение PID на *отклоняет:

$ ./yourprogram &
$ echo $! > /var/run/yourpid

yourpid будет теперь содержать PID yourpgram, и/var/run является надлежащим местом для помещения его.

Вышеупомянутое может быть помещено в Ваш сценарий "запуска". Сценарий "остановки" может посмотреть на yourpid для знания, что уничтожить.

Если Вы хотите быть более изящными и остановить Ваше приложение правильно, можно посмотреть на исходный код для org.apache.catalina.startup Tomcat. Catalina.java о том, как реализовать надлежащие рычаги завершения работы.

Во-вторых, выше "остановки" и "запускаются", сценарии могут затем быть помещены в/etc/init.d/mystopstartscript:

#!/bin/bash
# processname: yourprogram
# pidfile: /var/run/yourpid

case $1 in
start)
        sh /some/where/start.sh
        ;;
stop)  
        sh /some/where/stop.sh
        ;;
restart)
        sh /some/where/stop.sh
        sh /some/where/start.sh
        ;;
esac   
exit 0

Это - довольно решение собственной разработки с идеями, главным образом взятыми от хорошего 'ol Tomcat, но я надеюсь, что он помогает :)

8
ответ дан 5 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: