Ho un file JAR eseguibile. È possibile creare un servizio Windows di quel JAR? In realtà, voglio solo eseguirlo all'avvio, ma non voglio mettere quel file JAR nella mia cartella di avvio, né nel registro.Come creare il servizio Windows da jar java?
risposta
Questo articolo dovrebbe dirti tutto ciò che è necessario sapere: "Running Java Applications as a Windows Service"; si parla con "Java Service Wrapper" (c'è un'edizione comunità chiamata YAJSW)
http://yajsw.sourceforge.net/ – Ben
Per questo utilizziamo il Tanuki Service Wrapper. È molto configurabile.
il sito non funziona! X ( –
Tanuki cambiato la licenza di JSW qualche tempo fa, se ero per iniziare un progetto, vorrei utilizzare Ancora un altro Java Servizio Wrapper, http://yajsw.sourceforge.net/ che è più o meno un'implementazione open source che imita JWS, quindi si basa su di essa e la migliora ulteriormente.
EDIT: Utilizzo YAJSW da diversi anni su diversi platorm (Windows, diversi linux ...) ed è fantastico, lo sviluppo è in corso.
Ho sperimentato con Apache Commons Daemon. Supporta windows (Procrun) e unix (Jsvc). Advanced Installer ha un Java Service tutorial con un progetto di esempio da scaricare. Se si ottiene javaservice.jar in esecuzione come servizio Windows, è possibile testarlo utilizzando "telnet 4444". Ho usato il loro esempio perché il mio obiettivo era quello di far funzionare un servizio java windows, non di scrivere java.
Per un servizio Windows [WinRun4j] (http://winrun4j.sourceforge.net/) è anche un buon candidato e può raddoppiare come Java Launcher o Service Wrapper – mcdon
Con procrun è necessario copiare prunsrv alla directory dell'applicazione (download), e creare un install.bat come questo:
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%
ho la presunzione di
- run questo dalla stessa directory dove jar e prunsrv.exe sono
- il barattolo ha il suo MANIFEST.MF funzionante
- e si hanno ganci di arresto registrati in JVM (per esempio con context.registerShutdownHook() in primavera) ...
- non utilizzando percorsi relativi per file esterni al jar (ad esempio log4j deve essere utilizzato con log4j.appender.X.File = $ {app.home}/logs /my.log o qualcosa di simile)
Controllare la procrun manual e this tutorial per ulteriori informazioni.
c'è qualche esempio che puoi condividere? –
sì: guarda quello sopra :-) di cos'altro hai bisogno? – BTakacs
Grazie a BTakacs, ho già controllato il tuo tutorial e ha funzionato bene. Ma sfortunatamente questo non risolveva ciò che volevo fare .. Sto cercando di ottenerlo ora da C#. –
La soluzione più semplice che ho trovato per questo finora è l'utilizzo Non-Sucking Service Manager
sarebbe
nssm install <servicename> "C:\Program Files\Java\jre7\java.exe" "-jar <path-to-jar-file>"
Ho fatto lo stesso e l'ho installato con successo ma non appena lo eseguo, si dice 'stato imprevisto SERVICE-PAUSED in risposta al controllo START' – aneela
@kopernik, Stessa cosa sta succedendo anche a me..anche aiuto, per favore .. – Shakthi
Questo stesso problema come hai menzionato. Qualche idea su cosa sia sbagliato? –
Usa nssm.exe ma ricordatevi di impostare l'AppDirectory o eventuali librerie o le risorse necessarie non saranno accessibili . Di default nssm imposta la directory di lavoro corrente su quella dell'applicazione, java.exe, non sul jar. Quindi, fare questo per creare uno script batch:
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>"
Questo dovrebbe risolvere il servizio in pausa problema.
Questo va bene ... Dovresti aggiungerlo come commento alla risposta di kopernik. –
Impostazione di AppDirectory dopo la creazione del servizio non riuscita nel mio caso. Ma puoi lanciare un gui con 'nssm install
- 1. Come creare un JAR da .java
- 2. avvia il servizio Windows da java
- 3. Come si esegue un file java .jar come servizio Windows su Windows Server 2008?
- 4. Programma Java come servizio Windows
- 5. Come creare un servizio Windows con parametri?
- 6. Come creare un file jar da scala
- 7. Come creare il servizio di Windows in C/C++?
- 8. (JAVA) Utilizzare il prompt dei comandi per creare il file .jar da più file .class
- 9. Creare file jar da linea di comando
- 10. codice Java per creare un file JAR
- 11. Come creare un client Java per il servizio Web?
- 12. Quartz.Net Scheduler da eseguire come servizio Windows
- 13. Come usare Java ServiveLocator con One-Jar
- 14. Servizio Windows da eseguire costantemente
- 15. Come chiamare un servizio Windows da asp.net
- 16. Creare un servizio Windows in vb6
- 17. Come ottenere il nome del servizio Windows da app.config
- 18. Come creare manualmente un servizio Apache di Windows
- 19. Come creare un file Jar in Netbeans
- 20. Come creare un servizio Windows per Mac OS X?
- 21. Come posso creare jar in linux?
- 22. Come creare un jar eseguibile usando maven?
- 23. Servizio WCF come servizio Windows guai (Windows 7)
- 24. Esegui file .jar da un programma Java
- 25. install redis come servizio windows
- 26. Impossibile avviare il servizio Windows
- 27. Come creare un'interfaccia web per un servizio Windows in .Net?
- 28. Accesso a jar Java da Delphi
- 29. come creare un file jar da Android studio
- 30. Servizio WCF vs servizio Windows
Non presente anche nel registro?Allora perché lo vorresti come servizio? –
@ o.k.w è giusto se si sta creando il servizio di Windows, creerà la voce nel registro. –
Penso che questo utente intendesse "esegui come servizio, non dalle chiavi del registro di avvio come non servizio" –