2009-09-10 9 views
22

Vorrei eseguire un'applicazione Java come servizio. Sfortunatamente, sono limitato dal fatto che non posso usare qualcosa come lo Java Service Wrapper (che sembra essere uno strumento eccellente).Eseguire l'applicazione Java come servizio

Esiste un modo per eseguire un JAR eseguibile, come servizio, senza fare affidamento su applicazioni esterne? Attualmente il servizio è installato, ma non riesce ad avviarsi. Questo è dove mi sto bloccando e non sono stato in grado di trovare nulla su Google oltre alle informazioni sul JSW.

+0

Si riferisce alla http://stackoverflow.com/questions/68113/how-to-create-a-windows-service-from-java-app – skaffman

+0

Perché non puoi usare Java Service Wrapper? – Kevin

+0

@Kevin - Alcuni motivi diversi. Innanzitutto, e soprattutto, la licenza (GPL - Non posso aprire il codice a cui questo viene applicato). – JasCav

risposta

11

C'è un clone LGPL del Java Servizio Wrapper: http://yajsw.sourceforge.net

BTW, IANAL, ma sospetto che le persone JSW stiano diffondendo FUD e che il loro software possa essere utilizzato per abilitare servizi applicazioni commerciali con licenza GPL, proprio come si può gzip un'app commerciale per la ridistribuzione. Potrei sbagliarmi completamente su questo, però :)

+1

In base alla dicitura su wrapper.tanukisoftware.com/doc/english/licenseCommunity.html è molto chiaro che l'edizione Community non può essere utilizzata con un programma non Open Source poiché è sotto GPL. –

+0

GPL non preclude l'utilizzo di programmi non-Open Source "con" programmi GPL (ad esempio, è perfettamente adatto per eseguire applicazioni commerciali su SO Linux). Si preclude solo la creazione di un'opera derivata collegandosi al codice GPL e rilasciandolo con licenza non GPL. In questo caso, non mi è chiaro che si stia creando un lavoro derivato. – ykaganovich

+0

Meh, potresti avere ragione. Distribuiscono le loro cose non sotto licenza GPL, ma con qualche strana licenza che richiede che il software distribuito sia distribuito sotto GPL, indipendentemente dal fatto che si tratti di un prodotto derivato. Mi chiedo se questo è legale ... ma immagino che sia meglio presumere che lo sia. – ykaganovich

2

Non l'ho ancora provato, ma Launch4j sembra che possa soddisfare le vostre esigenze.

+1

Non si registra come servizio, ma è una buona opzione per il confezionamento di programmi utente che non vengono eseguiti come servizio. – djangofan

6

Un programma che deve essere eseguito come servizio Windows deve fornire alcune funzioni che il gestore di servizi Windows utilizza per comunicare con quel servizio.

Fintanto che non esiste JVM che implementa direttamente queste funzioni (e non ne conosco nessuna) è necessario un qualche tipo di wrapper.

Ho usato con successo srvany per un servizio di Windows basato su Java (In pratica permette di eseguire qualsiasi programma come servizio di Windows e funziona bene con Java)

+0

Questa è l'unica risposta che risponde alla domanda; tutti gli altri menzionano ancora un altro strumento esterno che l'OP sta cercando di evitare. Grazie! – mrtumnus

1

un'altra opzione winrun4j. la licenza è CPL di Eclipse.

+0

sì, ma come gli altri wrapper di servizio, richiede l'implementazione dell'interfaccia pubblica per integrare l'app nel gestore di servizi. – djangofan

0

Il modo più semplice che ho trovato era RunAsService.

Un collaboratore ha consigliato uno strumento chiamato SC, ma non l'ho provato.

0

JSmooth può farlo, ed è scrivibile con formica.

+0

Sembra che il wrapper del servizio inizi a rompersi sotto Windows 7 :( –

1

È possibile utilizzare NSSM come questo:

nssm install MyService "%JAVA_HOME%\bin\java.exe" -jar "path\to\the\file.jar" 
Problemi correlati