Подтвердить что ты не робот

Java background/daemon/сервис передовой платформы

Я ищу лучший способ заставить мою программу java для рабочего стола работать в фоновом режиме ( daemon/service?) на большинстве платформ (Windows, Mac OS, Linux [Ubuntu в частности]).

"Лучшим способом" я надеюсь найти способ, который будет:

  • требуется минимальное количество кода, специфичного для платформы.
  • не требует, чтобы пользователь делал что-либо, чего не мог/не сделал бы обычный пользователь компьютера.
  • не будет ресурсом.

Я понимаю, что мои требования могут быть нереалистичными, но я надеюсь, что для такого типа ситуации существует какая-то "лучшая практика".

Как продвигаться вперед?

4b9b3361

Ответ 1

Вы можете использовать классы SystemTray и установить приложение как любое другое в платформу по умолчанию.

Для окон это может быть запланированная задача, запускаемая при запуске. Для Linux и OSX я не знаю (помимо того, что crontab, как-то слишком технический), но я уверен, что у них обоих есть способ сделать то же самое легко.

К сожалению (на сегодняшний день) Apple не закончила порт 1.6.

Это не настоящий демон, а приложение вроде Google Desktop.

Я слышал, что Quartz - хороший вариант. Но я никогда не использовал его.

Ответ 2

Вы можете запустить приложение Java в качестве службы (Windows) или демона (Linux) с помощью кода демонов Apache Commons.

Структура

Демон состоит из 2 частей. Один написан на C, который делает интерфейс к операционной системе, а другой в Java, который предоставляет API Daemon.

Платформы

Поддерживаются как платформы Win32, так и UNIX. Для платформ Win32 используйте прокрутку. Для UNIX-подобных платформ используйте jsvc.

Код Java

Вам нужно написать класс (MyClass), который реализует следующие методы:

* void load(String[] arguments): Here open the configuration files, create the trace file, create the ServerSockets, the Threads
* void start(): Start the Thread, accept incoming connections
* void stop(): Inform the Thread to live the run(), close the ServerSockets
* void destroy(): Destroy any object created in init()

Ответ 3

Вы можете превратить любую программу Java в службу/демон с помощью Java Wrapper. Он используется несколькими проектами OSS и поставляется в составе диспетчера хранилищ Nexus Maven, чтобы он мог быть установлен как служба из коробки. Чтобы использовать его, вам, автору, просто нужно создать файл конфигурации, а затем запустить простой командный файл для создания службы в Windows или скопировать init script на правильный уровень выполнения на Linux.

Ответ 4

Если вам не нужно бесплатное решение, вы можете использовать Advanced Installer (www.advancedinstaller.com), он может сделать win-сервис, а также установщик MacOS из вашего JAR и т.д.

Ответ 5

Отметьте JDIC, ​​ проект компонентов Java Desktop Integration Components. Он поддерживает интеграцию с настольными системами, например, системный лоток (или эквивалент) с кросс-платформенным API.

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

Ответ 6

Проект Apache Directory Daemon выглядит как лучший кросс-платформенный способ сделать это (с оболочками Java для JSVC под POSIX и прокруткой под окнами).

Ответ 7

Люди иногда испытывают трудности с поиском prunsrv.exe и/или prunmgr.exe(компонентов прокрутки), его недостаточно хорошо документированы на сайте apache, как правило, они могут быть найдены в архивах (примечание: они говорят, что procrun - tomcat5. EXE)

для окон вы можете найти его здесь: http://archive.apache.org/dist/commons/daemon/binaries/windows/commons-daemon-1.0.7-bin-windows.zip (содержит как 32, так и 64-разрядные версии)

вам не нужно внедрять интерфейс daemon или загружать его вообще, prunsrv можно использовать для превращения любого приложения в службу Windows

просмотреть этот архив для других платформ