пример — Как создать службу Windows из приложения java
windows run java jar as service (13)
Я просто унаследовал приложение Java, которое должно быть установлено как служба на XP и Vista. Прошло около 8 лет с тех пор, как я использовал окна в любой форме, и мне никогда не приходилось создавать службу, не говоря уже о чем-то вроде java-приложения (у меня есть банка для приложения и один баннер зависимости — log4j ). Какая магия необходима для того, чтобы этот запуск выполнялся как служба? У меня есть источник, поэтому возможны модификации кода, хотя их желательно избегать.
Exe4j — очень хороший вариант, хотя он не является бесплатным. Проверьте это на Exe4j В мастере создания файла .exe вы предоставляете возможность создания службы.
В настоящее время я требую, чтобы это запускало приложение на основе Eclipse, но мне нужно сначала установить некоторые переменные, которые являются локальными для этого приложения. sc.exe разрешает только исполняемые файлы, но не скрипты, поэтому я обратился к autoexnt.exe, который является частью набора ресурсов Windows 2003 . Он ограничивает службу одним пакетным файлом, но мне нужен только один пакетный скрипт для преобразования в службу.
Другим хорошим вариантом является FireDaemon . Он используется некоторыми крупными магазинами, такими как NASA, IBM и т. Д .; см. их веб-сайт для полного списка.
Если вы используете Gradle Build Tool, вы можете попробовать мой windows-service-plugin , который облегчает использование Apache Commons Daemon Procrun .
Чтобы создать приложение-приложение для Java-приложений с помощью плагина, вам нужно пройти несколько простых шагов.
Создайте основной класс службы с помощью соответствующего метода.
Включите плагин в файл build.gradle .
Этот же фрагмент скрипта для нового, инкубационного, плагинового механизма, представленного в Gradle 2.1:
Запустите задачу createwindowsService для создания дистрибутива Windows.
Это все, что вам нужно сделать, чтобы создать простую службу Windows. Плагин автоматически загрузит двоичные файлы Apache Commons Daemon Procrun, извлечет эти двоичные файлы в каталог распространения службы и создаст пакетные файлы для установки / удаления службы.
В каталоге $
Обратите внимание, что запуск сервиса обработки метода должен создавать и запускать отдельный поток для выполнения обработки, а затем возвращаться. Основной метод вызывается из разных потоков при запуске и остановке службы.
Для получения дополнительной информации, пожалуйста, прочитайте о плагине и Apache Commons Daemon Procrun.
Еще один ответ — еще один Java Wrapper , это похоже на хорошую альтернативу Java Service Wrapper, так как имеет лучшее лицензирование. Он также предназначен для легкого перехода от JSW к YAJSW. Конечно, для меня, совершенно новый для серверов Windows и попытка получить приложение Java, работающее как сервис, было очень легко использовать.
Некоторые другие я нашел, но не закончил использовать:
- Java Service Launcher Я не использовал это, потому что было более сложно работать, чем YAJSW. Я не думаю, что это обертка.
- JSmooth Создание окна услуг не является его основной целью, но может быть сделано . Я не использовал это, потому что с 2007 года не было никакой активности.
Используйте « winsw », который был написан для Glassfish v3, но хорошо работает с программами Java в целом.
Как создать службу windows из приложения java
Я только что унаследовал приложение java, которое необходимо установить в качестве службы на XP и vista. Прошло около 8 лет с тех пор, как я использовал windows в любой форме, и мне никогда не приходилось создавать службу, не говоря уже о чем — то вроде java-приложения (у меня есть jar для приложения и одна зависимость jar-log4j). Какая магия необходима, чтобы сделать этот запуск услугой? У меня есть источник, поэтому модификации кода, хотя и желательно избегать, возможны.
19 ответов
Демон Apache Commons — это хорошая альтернатива. Он имеет Procrun для служб windows и Jsvc для демонов unix. Он использует менее ограничительную лицензию Apache, и Apache Tomcat использует ее как часть себя для работы в Windows и Linux! Получить его работу немного сложно, но есть исчерпывающей статьи С рабочим примером.
кроме того, вы можете посмотреть на bin\service.летучая мышь в Apache Tomcat получить идея, как настроить службу. В Tomcat они переименовывают двоичные файлы Procrun (prunsrv.exe — > tomcat6.exe, prunmgr.exe — > tomcat6w.exe).
Что-то я боролся с использованием Procrun, ваши методы start и stop должны принимать параметры (String[] argv). Например,» start(String[] argv) «и» stop(String[] argv) «будут работать, но» start () «и» stop () » вызовут ошибки. Если вы не можете изменить эти вызовы, подумайте о создании класса bootstrapper, который может массировать эти вызовы в соответствии с вашими по необходимости.
С Демон Apache Commons теперь у вас может быть пользовательское исполняемое имя и значок! вы также можете получить пользовательский монитор Windows tray с вашим собственным именем и значком!
теперь у меня есть мой сервис, работающий с моим собственным именем и значком (prunsrv.exe) и монитор системного трея (prunmgr.exe) также имеет свое собственное имя и значок!
- скачать двоичные файлы демона Apache Commons (вам понадобится prunsrv.exe и prunmgr.исполняемый.)
- переименуйте их в MyServiceName.exe и MyServiceNamew.exe соответственно.
скачать WinRun4J и с помощью RCEDIT.exe программа, которая поставляется с ним, чтобы изменить исполняемый файл Apache, чтобы встроить свой собственный значок, как это:
теперь установите службу Windows следующим образом (см. документация для более подробной информации и вариантов):
теперь у вас есть Windows обслуживание вашей банки, которая будет работать с вашим собственным значком и именем! Вы также можете запустить монитор файл и он будет работать в системном трее свой значок и имя.
еще один вариант WinRun4J. Это настраиваемый Java launcher, который удваивается как хост службы windows (как 32, так и 64-разрядные версии). Он является открытым исходным кодом и нет ограничений на его использование.
(полное раскрытие: я работаю над этим проектом).
еще один ответ Еще Одна Оболочка Службы Java, это кажется хорошей альтернативой Java Service Wrapper, поскольку имеет лучшее лицензирование. Он также предназначен для легкого перехода от JSW к YAJSW. Конечно, для меня, совершенно нового для серверов windows и пытающегося получить Java-приложение, работающее как Служба, он был очень прост в использовании.
некоторые другие, которые я нашел, но не использовал:
- Java Service Launcher Я не использовал это потому что это выглядело более сложным, чтобы работать, чем YAJSW. Не думаю, что это обертка.
- JSmooth создание сервисов окна не является его основной целью, но можно сделать. Я не использовал это, потому что с 2007 года не было никакой активности.
Я думаю Java Service Wrapper работает хорошо. Обратите внимание, что есть тремя способами интеграции приложений. Похоже, Вариант 1 будет работать лучше для вас, потому что вы не хотите менять код. Файл конфигурации может немного сойти с ума, но просто помните, что (для варианта 1) программа, которую вы запускаете и для которой вы будете указывать аргументы, является их вспомогательной программой, которая затем запустит вашу программу. У них есть пример файл конфигурации для этого.
JavaService является LGPL. Это очень легко и стабильно. Настоятельно рекомендуемый.
использовать «winsw», который был написан для Glassfish v3, но хорошо работает с Java-программами в целом.
требуется установленная среда выполнения .NET.
Я использовал JavaService раньше с хорошим успехом. Он не обновлялся пару лет, но был довольно твердым, когда я его использовал.
Мне не понравилось лицензирование для Java Service Wrapper. Я пошел с ActiveState Perl, чтобы написать службу, которая выполняет работы.
Я думал о написании службы на C#, но мои временные ограничения были слишком жесткими.
Я всегда просто использую sc.exe (см. http://support.microsoft.com/kb/251192). Он должен быть установлен на XP из SP1, и если он не в вашем вкусе Vista, вы можете загрузить его с помощью набора ресурсов Vista.
Я не сделал ничего слишком сложного с Java, но используя либо полный аргумент командной строки (x:\java — . исполняемый. ) или создание скрипта с АНТ включить depencies и набор параметров отлично работает для меня.
очень хорошее сравнение различных решений, предлагаемых в : http://yajsw.sourceforge.net/#mozTocId284533
лично нравится launch4j
С Java 8, мы можем обрабатывать этот сценарий без каких-либо внешних инструментов. javapackager инструмент, поставляемый с java 8, предоставляет возможность создавать автономные пакеты приложений:
-родной тип Создание автономных пакетов приложений (если это возможно). Используйте параметр-B для предоставления аргументов используемым комплектам. Если указан тип, то создается только пакет этого типа. Если тип не указан, используется all.
следующие значения: действительно для типа:
в случае windows обратитесь к следующему doc мы можем создать MSI или exe по мере необходимости.
еще один хороший вариант-это FireDaemon. Он используется некоторыми крупными магазинами, такими как NASA, IBM и т. д.; см. Их веб-сайт для полного списка.
в настоящее время я требую этого для запуска приложения на основе Eclipse, но мне нужно сначала установить некоторые переменные, которые являются локальными для этого приложения. Южная Каролина.exe разрешит только исполняемые файлы, но не Скрипты, поэтому я обратился к autoexnt.exe, который является частью набор ресурсов Windows 2003. Он ограничивает службу одним пакетным файлом, но мне нужен только один пакетный скрипт для преобразования в службу.
это просто, как вы должны поставить ярлык в
Windows 7 C:\users\All Users\Start Menu\Programs\Startup (Admin) или User home directory(%userProfile%)
Windows 10: В Беге shell:startup
в его свойстве — > ярлык — > цель -> java.exe -jar D:\..\runJar.jar
Примечание: это будет работать только после входа
С Правом Администратора
sc create serviceName binpath= «java.exe -jar D:\..\runJar.jar» создаст службу windows
если вы получаете автоотключение использовать cmd /c D:\JAVA7
1\jdk1.7.0_51\bin\java.exe -jar d:\jenkins\jenkins.war но даже с этим вы получите тайм-аут, но в фоновом режиме java.exe будет запущен. Проверьте в диспетчере задач
Примечание: это будет работать при запуске входа в систему windows(перед входом в систему, на основе службы’ Startup Type ‘)
если вы используете Gradle Build Tool, вы можете попробовать мой windows-service-плагин, что облегчает использование Apache Commons Демон Procrun.
чтобы создать приложение-службу java windows с плагином, вам нужно пройти несколько простых шагов.
создайте основной класс обслуживания с помощью соответствующего метода.
включите плагин в свой build.gradle файл.
тот же фрагмент скрипта для нового, инкубационного, плагинного механизма, представленного в Gradle 2.1:
Run createWindowsService задача gradle для создания дистрибутива службы windows.
это все, что вам нужно сделать, чтобы создать простую службу Windows. Плагин автоматически загрузит Демон Apache Commons Двоичные файлы Procrun, извлеките эти двоичные файлы в каталог распространения службы и создайте пакетные файлы для установки/удаления службы.
на $
обратите внимание, что метод запуск службы обработки должен создать и запустить отдельный поток для выполнения обработки,а затем вернуться. Основной метод вызывается из разных потоков при запуске и остановке сервиса.
для получения дополнительной информации, пожалуйста, прочитайте о плагине и Apache Commons Daemon Procrun.
Exe4j является очень хорошим вариантом, хотя это не бесплатно. Проверьте это на Exe4j в Мастере для создания .exe-файл, вы даете возможность создать службу.
Как создать службу windows из приложения java
Я только что унаследовал приложение java, которое должно быть установлено в качестве службы на XP и vista. Прошло около 8 лет с тех пор, как я использовал windows в любой форме, и мне никогда не приходилось создавать службу, не говоря уже о чем — то вроде java-приложения (у меня есть jar для приложения и одна зависимость jar-log4j). Какая магия необходима, чтобы сделать этот запуск в качестве службы? У меня есть источник, поэтому модификации кода, хотя и желательно избегать, возможны.
19 ответов:
Apache Commons Daemon является хорошей альтернативой. Он имеет Procrun для служб windows и Jsvc для демонов unix. Он использует менее ограничительную лицензию Apache, и Apache Tomcat использует ее как часть себя для работы на Windows и Linux! Чтобы заставить его работать немного сложно, но есть исчерпывающей статьи С рабочим примером.
кроме того, вы можете посмотреть на bin\service.летучая мышь в Apache Tomcat получить идея, как настроить службу. В Tomcat они переименовывают двоичные файлы Procrun (prunsrv.exe — > tomcat6.exe, prunmgr.exe — > tomcat6w.exe).
Что — то я боролся с использованием Procrun, ваши методы start и stop должны принимать параметры (String[] argv). Например,» start(String[] argv) «и» stop(String[] argv) «будут работать, но» start () «и» stop () » вызовут ошибки. Если вы не можете изменить эти вызовы, подумайте о создании класса bootstrapper, который может массировать эти вызовы в соответствии с вашим по необходимости.
- скачать двоичные файлы демона Apache Commons (вам понадобится prunsrv.exe и prunmgr.исполняемый.)
- переименовать их в MyServiceName.exe и MyServiceNamew.exe соответственно.
-
скачать WinRun4J и с помощью RCEDIT.exe программа, которая поставляется с ним, чтобы изменить исполняемый файл Apache, чтобы встроить свой собственный значок, как это:
-
теперь установите свою службу Windows следующим образом (см. документация для более подробной информации и вариантов):
-
теперь у вас есть Windows сервис вашего кувшина, который будет работать с вашим собственным значком и именем! Вы также можете запустить монитор файл и он будет работать в системном трее свой значок и имя.
еще один вариант WinRun4J. Это настраиваемый Java launcher, который удваивается как хост службы windows (как 32, так и 64-разрядные версии). Он является открытым исходным кодом и нет ограничений на его использование.
(полное раскрытие: я работаю над этим проектом).
Как создать установщик .exe для приложения Java?
У меня есть приложение Java, состоящее из нескольких файлов JAR (основной .JAR plus) и другие файлы, и я хотел бы объединить их в автономный установщик .exe Windows со следующими характеристиками:
- JVM в комплекте (поэтому это не будет зависеть от установки JRE системы)
- Вся структура папок внутри известного местоположения (предпочтительно C:\MyApp или C:\Program Files\MyApp )
- Ссылка Desktop на приложение, чтобы пользователи могли запускать его вручную при необходимости.
- Ссылка должна быть помещена в папку «Автозагрузка» (либо общая папка C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp либо пользовательская папка C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup ), чтобы он мог автоматически запускаться при входе пользователя в систему
- Кроме того, приложение может быть настроено для запуска в качестве службы для того же эффекта.
У меня проблемы с поиском подходящих инструментов для работы и их использованием.
Я установил NetBeans и Inno Script Studio, которые вместе создают установщик .exe со связанным JRE в скрытой папке внутри папки C:\Users\Username\AppData\Local (которую я не вижу по умолчанию, если не отобразить папку в машине пользователя), однако некоторые требования все еще отсутствуют.
Я подозреваю, что встроенный упаковщик NetBeans мог бы сделать эту работу, если файлы Ant были правильно настроены, но я не знаю, какие настройки нужно сделать.
И я боюсь, что Inno Script Studio не будет связывать JRE вместе с JAR-файлами, поэтому, похоже, этого недостаточно.
Я не уверен, является ли вопрос слишком широким, но мне нужно хотя бы какое-то руководство по тому, какой инструмент принять.