Mam plik wykonywalny JAR. Czy jest możliwe utworzenie usługi Windows tego JAR? Właściwie to po prostu chcę uruchomić to przy starcie, ale nie chcę umieszczać tego pliku JAR w moim folderze startowym, ani w rejestrze.Jak utworzyć usługę Windows z słoika Java?
Odpowiedz
Ten artykuł powinien zawierać wszystkie niezbędne informacje: "Running Java Applications as a Windows Service"; wspomina używając „Java Service Wrapper” (jest wydanie społeczność nazywa YAJSW)
http://yajsw.sourceforge.net/ – Ben
Do tego używamy Tanuki Service Wrapper. Jest bardzo konfigurowalny.
strona jest wyłączona !! X ( –
Tanuki zmienił licencja JSW jakiś czas temu, gdybym miał się rozpocząć projekt, użyłbym Yet Another Java Usługa Wrapper, http://yajsw.sourceforge.net/ że jest bardziej lub mniej implementacji open source, która naśladuje JWS, a następnie buduje na nim i jeszcze bardziej ulepsza.
EDYTOWANIE: Używam YAJSW od kilku lat na kilku platormach (Windows, kilka linuxes ...) i jest świetnie, rozwój jest w toku.
Eksperymentowałem z Apache Commons Daemon. Obsługuje okna (Procrun) i unix (Jsvc). Zaawansowany instalator ma Java Service tutorial z przykładowym projektem do pobrania. Jeśli otrzymasz plik javaservice.jar działający jako usługa systemu Windows, możesz przetestować go za pomocą "telnet 4444". Użyłem ich przykładu, ponieważ skupiłem się na uruchomieniu usługi java Windows, a nie pisaniu java.
Dla usługi Windows [WinRun4j] (http://winrun4j.sourceforge.net/) jest również dobrym kandydatem.Może się podwoić jako Java Launcher lub Service Wrapper – mcdon
Z procrun trzeba skopiować prunsrv do katalogu aplikacji (download) i utworzyć install.bat takiego:
set PR_PATH=%CD%
SET PR_SERVICE_NAME=MyService
SET PR_JAR=MyService.jar
SET START_CLASS=org.my.Main
SET START_METHOD=main
SET STOP_CLASS=java.lang.System
SET STOP_METHOD=exit
rem ; separated values
SET STOP_PARAMS=0
rem ; separated values
SET JVM_OPTIONS=-Dapp.home=%PR_PATH%
prunsrv.exe //IS//%PR_SERVICE_NAME% --Install="%PR_PATH%\prunsrv.exe" --Jvm=auto --Startup=auto --StartMode=jvm --StartClass=%START_CLASS% --StartMethod=%START_METHOD% --StopMode=jvm --StopClass=%STOP_CLASS% --StopMethod=%STOP_METHOD% ++StopParams=%STOP_PARAMS% --Classpath="%PR_PATH%\%PR_JAR%" --DisplayName="%PR_SERVICE_NAME%" ++JvmOptions=%JVM_OPTIONS%
Przypuszczam do
- metę to z tego samego katalogu gdzie słoik i prunsrv.exe jest
- słoik ma działającą MANIFEST.MF
- i masz haki zamknięcia zarejestrowane w JVM (dla przy użyciu context.registerShutdownHook() na wiosnę) ...
- nie używa względnych ścieżek dla plików poza słojem (na przykład log4j powinien być używany z log4j.appender.X.File = $ {app.home}/logs /my.log lub coś podobnie)
Sprawdź procrun manual i this tutorial aby uzyskać więcej informacji.
czy istnieje przykład, który można udostępnić? –
tak: patrz powyższy :-) czego jeszcze potrzebujesz? – BTakacs
Dzięki BTakacs, już sprawdziłem twój tutorial i wszystko działało dobrze. Ale niestety to nie rozwiązało tego, co chciałem zrobić. Próbuję to osiągnąć teraz z C#. –
Najprostszym rozwiązaniem znalazłem za to jakim jest Non-Sucking Service Manager
Wykorzystanie byłoby
nssm install <servicename> "C:\Program Files\Java\jre7\java.exe" "-jar <path-to-jar-file>"
Zrobiłem to samo i zainstalowałem pomyślnie, ale jak tylko uruchomię to, mówi "nieoczekiwany status SERVICE-PAUSED w Odpowiedź na START control' – aneela
@kopernik, To samo dzieje się też dla mnie .. pomóżcie proszę .. – Shakthi
Ten sam problem, o którym wspomniałeś. Masz pojęcie, co jest nie tak? –
Zastosowanie nssm.exe ale należy pamiętać, aby ustawić AppDirectory lub wszelkich wymaganych bibliotek lub zasoby nie będą dostępne . Domyślnie nssm ustawia bieżący katalog roboczy na katalog aplikacji java.exe, a nie na jar. Więc to zrobić, aby utworzyć skrypt wsadowy:
pushd <path-to-jar>
nssm.exe install "<service-name>" "<path-to-java.exe>" "-jar <name-of-jar>"
nssm.exe set "<service-name>" AppDirectory "<path-to-jar>"
To powinno rozwiązać problem usługa wstrzymana.
To dobrze ... Powinieneś dodać to jako komentarz do odpowiedzi kopernika. –
Ustawienie usługi AppDirectory po utworzeniu usługi nie powiodło się w moim przypadku. Ale możesz uruchomić gui z 'nssm install
- 1. Jak stworzyć usługę Windows Seler?
- 2. Jak utworzyć usługę Windows dla Mac OS X?
- 3. Jak utworzyć usługę Windows w języku C/C++?
- 4. Jak programowo zatrzymać usługę Windows
- 5. Jak utworzyć usługę proxy Jabber/XMPP/rejestrowania?
- 6. Zainstaluj program java jako usługę Windows: Alternatywa dla usługi JavaService?
- 7. Jak utworzyć usługę sieciową w IronPython?
- 8. Jak prawidłowo zatrzymać wielowątkową usługę Windows .NET?
- 9. Jak zainstalować plik node.js jako usługę Windows?
- 10. Jak mogę otworzyć porty przez usługę Windows?
- 11. Jak wykonać słoik z wnętrza słoika?
- 12. Jak zainstalować usługę Windows .NET bez InstallUtil.exe vb.net
- 13. Ochrona słoika Javy Pliki do dystrybucji
- 14. Jak zrestartować usługę Windows przy użyciu Task Scheduler
- 15. wykryj główne wnętrze słoika, używając kodu Java.
- 16. Jak uruchomić projekt konsoli ServiceStack jako usługę systemu Windows?
- 17. Wykonywanie innego słoika w programie java
- 18. Uruchomić usługę Windows i uruchomić cmd
- 19. Przekierowanie stdout + stderr na usługę C# Windows
- 20. Jak uruchomić usługę z fragmentów?
- 21. Zainstalować usługę Shield Limited Edition z usługą WIndows
- 22. Jak mogę utworzyć niestandardową usługę czcionek dla języka perskiego?
- 23. Jak skopiować plik wewnątrz słoika na zewnątrz słoika?
- 24. Jak ponownie uruchomić usługę na komputerze zdalnym w systemie Windows?
- 25. Tworzenie zepsutego słoika z dołączonymi plikami zewnętrznymi
- 26. Modyfikowanie pliku wewnątrz słoika
- 27. Jak utworzyć plik scala.collection.immutable.Seq z listy Java w języku Java?
- 28. Jak zainstalować usługę C# Windows bez tworzenia instalatora?
- 29. Jak mogę wyświetlić moją usługę systemu Windows na pasku zadań?
- 30. Jak odinstalować usługę Windows, jeśli pliki już nie istnieją?
Nie jesteś również w rejestrze?Więc dlaczego chcesz to jako usługa? –
@ o.k.w ma rację, jeśli tworzysz usługę Windows, utworzy wpis w rejestrze. –
Myślę, że ten użytkownik oznaczał "działa jako usługa, a nie z kluczy rejestru startowego jako non-service" –