Я только что унаследовал приложение Java, которое необходимо установить как службу в XP и vista. Прошло около 8 лет с тех пор, как я использовал Windows в любой форме, и мне никогда не приходилось создавать службу, не говоря уже о чем-то вроде java-приложения (у меня есть jar для приложения и jar с одной зависимостью - log4j). Какая магия необходима, чтобы это работало как служба? У меня есть исходный код, поэтому возможны модификации кода, которых желательно избегать.
Переведено автоматически
Ответ 1
Демон Apache Commons является хорошей альтернативой. В нем есть Procrun для служб Windows и Jsvc для демонов Unix. Он использует менее ограничительную лицензию Apache, а Apache Tomcat использует ее как часть самого себя для запуска в Windows и Linux! Заставить ее работать немного сложно, но есть исчерпывающая статья с рабочим примером.
Кроме того, вы можете просмотреть файл bin\service.bat в Apache Tomcat, чтобы получить представление о том, как настроить службу. В Tomcat они переименовывают двоичные файлы Procrun (prunsrv.exe -> tomcat6.exe, prunmgr.exe -> tomcat6w.exe).
С чем-то, с чем я боролся при использовании Procrun, ваши методы start и stop должны принимать параметры (String[] argv). Например, "start (строка [] argv)" и "stop (строка [] argv)" будут работать, но "start()" и "stop ()" вызовут ошибки. Если вы не можете изменить эти вызовы, подумайте о создании класса bootstrapper, который может изменять эти вызовы в соответствии с вашими потребностями.
С Apache Commons Daemon теперь у вас может быть собственное имя исполняемого файла и значок! Вы также можете получить пользовательский монитор Windows в трее с вашим собственным именем и значком!
Теперь у меня работает моя служба с моим собственным именем и значком (prunsrv.exe) и монитор системного трея (prunmgr.exe) также имеет мое собственное имя и значок!
Переименуйте их в MyServiceName.exe и MyServiceNamew.exe соответственно.
Загрузите WinRun4J и используйте RCEDIT.exe прилагаемую к нему программу для изменения исполняемого файла Apache, чтобы встроить свой собственный значок, подобный этому:
Теперь у вас есть служба Windows в вашем Jar, которая будет запускаться с вашим собственным значком и именем! Вы также можете запустить файл monitor, и он будет запускаться в системном трее с вашим собственным значком и именем.