Ich habe eine ausführbare JAR-Datei. Ist es möglich, einen Windows-Dienst dieser JAR zu erstellen? Eigentlich möchte ich das nur beim Start ausführen, aber ich möchte diese JAR-Datei weder in meinem Startordner noch in der Registrierung speichern.Wie Windows-Dienst von Java-Jar zu erstellen?
Antwort
Dieser Artikel sollte Ihnen alles erzählen, was Sie wissen müssen: "Running Java Applications as a Windows Service"; es erwähnt „Java Service Wrapper“ (es gibt eine Community Edition genannt YAJSW)
http://yajsw.sourceforge.net/ – Ben
Wir verwenden die Tanuki Service Wrapper dafür. Es ist sehr konfigurierbar.
Website ist down !! X ( –
Tanuki geändert Lizenz von jsw vor einiger Zeit mit, wenn ich ein Projekt beginnen, würde ich andere Java Service Wrapper, http://yajsw.sourceforge.net/, die mehr verwenden Dennoch ist oder weniger eine Open-Source-Implementierung, die JWS nachahmt, dann darauf aufbaut und sie noch weiter verbessert.
EDIT: Ich habe YAJSW seit mehreren Jahren auf mehreren Plattformen (Windows, mehrere Linux ...) und es ist großartig, die Entwicklung läuft.
Ich habe mit Apache Commons Daemon experimentiert. Es unterstützt Windows (Procrun) und Unix (Jsvc). Advanced Installer hat eine Java Service tutorial mit einem Beispielprojekt zum Download. Wenn Sie ihr javaservice.jar als Windows-Dienst ausführen, können Sie es mit "telnet 4444" testen. Ich habe ihr Beispiel verwendet, weil mein Fokus darauf war, einen Java-Windows-Dienst zum Laufen zu bringen, nicht Java zu schreiben.
Für einen Windows-Dienst [WinRun4j] (http://winrun4j.sourceforge.net/) ist auch ein guter Kandidat. Es kann als Java Launcher oder Service Wrapper verdoppeln – mcdon
Mit procrun Sie müssen prunsrv auf das Anwendungsverzeichnis (download) kopieren und eine install.bat wie folgt erstellen:
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%
ich
- laufen diese aus dem gleichen Verzeichnis vermuten wo das Glas und prunsrv.exe ist
- das Glas hat seine Arbeit MANIFEST.MF
- und Sie haben Shutdown-Hooks in JVM registriert (für Beispiel mit context.registerShutdownHook() im Frühling) ...
- keine relativen Pfade für Dateien außerhalb des Jars verwenden (zum Beispiel log4j sollte mit log4j.appender.X.File = $ {app.home}/logs verwendet werden /my.log oder etwas ähnlich)
überprüfen Sie die procrun manual und this tutorial für weitere Informationen.
Gibt es ein Beispiel, das du teilen kannst? –
ja: siehe oben :-) was brauchst du noch? – BTakacs
Dank BTakacs, habe ich bereits Ihr Tutorial überprüft und es hat gut funktioniert. Aber leider hat das nicht gelöst was ich machen wollte. Ich versuche das jetzt von C# zu erreichen. –
Die einfachste Lösung, die ich ist die Non-Sucking Service Manager
Nutzungs
nssm install <servicename> "C:\Program Files\Java\jre7\java.exe" "-jar <path-to-jar-file>"
Ich habe das gleiche und es erfolgreich installiert, aber sobald ich es ausführen, heißt es 'unerwarteten Status SERVICE-PAUSED in Antwort auf START-Kontrolle " – aneela
@kopernik, gleiche Sache passiert auch für mich .. viele Hilfe bitte .. – Shakthi
Das gleiche Problem wie Sie erwähnt. Irgendeine Idee was falsch ist? –
Verwendung nssm.exe wäre aber nicht vergessen, die AppDirectory oder alle erforderlichen Bibliotheken oder Ressourcen festlegen nicht zugänglich sein, so weit zu dieser . Standardmäßig setzt nssm das aktuelle Arbeitsverzeichnis auf das der Anwendung, java.exe, nicht auf das jar. So tun dies eine Batch-Skript zu erstellen:
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>"
Dies sollte der Dienst angehalten Problem beheben.
Das ist gut ... Sie sollten es als Kommentar zu Koperniks Antwort hinzufügen. –
Das Einrichten des AppDirectory nach der Erstellung des Dienstes ist in meinem Fall fehlgeschlagen. Aber Sie können eine GUI mit 'nssm install
- 1. Wie binäre von iphone-Anwendung zu erstellen
- 2. Wie periodische Aufgabe zu erstellen
- 3. Wie zu erstellen .jar Bibliothek
- 4. Wie sqlalchemy zu json erstellen
- 5. wie binäre XML zu erstellen
- 6. wie glatte Bildanimation zu erstellen
- 7. Wie scrollbar zu erstellen JTable
- 8. Erstellen von PDFs in einer kommerziellen Anwendung, wie zu lizenzieren?
- 9. Android Studio: wie Hotkey zum Löschen von Logcat zu erstellen?
- 10. Wie erstellen Sie ein Segment von View Controller zu sich
- 11. Wie Repeater-Feld in Redux Framework von WordPress zu erstellen?
- 12. Wie Endpunkt zu bestimmen und Anforderung von WSDL erstellen - C#
- 13. Wie ein Objekt mit einer Funktion von Zeichenfolge zu erstellen:
- 14. Wie Array von Größe größer als Integer max zu erstellen
- 15. wie Hotkey zum Anzeigen von Fenstern zu erstellen?
- 16. Array von Zeigern zu Dateien erstellen
- 17. Wie NSMutableDictionary in Swift 2.0 zu erstellen
- 18. wie rss reader mit PHP zu erstellen?
- 19. Wie Tapisserie Tab-Komponente zu erstellen?
- 20. Wie MouseOver-Ereignis in MVVM zu erstellen?
- 21. Pandoc: Erstellen von Tabellen, Markdown zu PDF
- 22. Versuch, einen Vektor von Objekten zu erstellen
- 23. wie url in django zu erstellen
- 24. Erstellen von Dateien, rekursiv Erstellen von Verzeichnissen
- 25. Wie erzwinge ich MSBuild zu reinigen oder neu zu erstellen?
- 26. Wie Duplizierungscode in Android zu minimieren, ohne Objekte zu erstellen
- 27. Wie QTcore4.dll ohne Abhängigkeit zu MSVCx80.dll zu erstellen?
- 28. wie proportionale Bildhöhe/-breite zu erstellen
- 29. Wie ein UIPrintPaper erstellen UIPrintInteractionControllerDelegate zu testen
- 30. Arquillian + Shrinkwrap + Naht: wie zu erstellen Bereitstellungspaket
Nicht in der Registrierung auch?Warum sollten Sie es als Service wünschen? –
@ o.k.w ist richtig, wenn Sie Windows-Dienst erstellen, wird es Eintrag in der Registrierung erstellen. –
Ich denke, dieser Benutzer bedeutete "als Dienst, nicht von den Start-Registry-Schlüssel als non-Service ausgeführt" –