Utilizzo di JavaService per aggiungere il servizio di Windows


Ho creato un'applicazione Java (esegue un ciclo infinito) (con molti file di classe Java) che utilizza anche log4j.jar e `snmp4j.jar? . Per eseguire l'applicazione, ho bisogno di fornire alcuni argomenti di input come segue:

C:\APP>java myApp.class arg1 arg2 arg3 arg4 arg5 arg6

Dove myApp.class contiene il gestore principale.

Questa applicazione funziona bene sotto l'esecuzione della riga di comando. Tuttavia, voglio creare un servizio Windows per questa applicazione in modo che venga eseguito ogni volta che viene avviato il PC. Inoltre, se il servizio è inattivo per qualsiasi cosa motivo, verrà riavviato sotto lo strumento Servizi di Windows.

Ho provato a usare JavaService per il mio scopo, eseguendo il seguente comando:

C:\APP>JavaService.exe -install MyService "C:\java\jdk1.6.0.29\jre\bin\server\jvm.dll" -start myApp.class -params arg1 arg2 arg3 arg4 arg5 arg6
The MyService automatic service was successfully installed

Posso vedere il mio MyService apparso in Strumenti di amministrazione- > Servizi

Tuttavia, quando ho fatto un inizio di MyService, è iniziato e poi si è fermato : (

Service dialog:
The MyService on Local Computer started and then stopped. Some services stop automatically if they have no work to do, for example, the Performance Logs and Alerts service.

Qualcuno sa perché?

Author: tanlccc, 2012-02-03

2 answers

Forse è necessario specificare il classpath?

Lo fai con un'impostazione come questa:

-Djava.class.path={JDK_HOME}\lib\tools.jar;<your jar 1>;<your jar 2>

Ad esempio, usiamo uno script per installare JBoss, simile a quello discusso / mostrato qui: https://community.jboss.org/wiki/JavaService

HTH

 1
Author: davidfrancis, 2012-02-03 10:16:43

Innanzitutto, se si utilizza JVM a 64 bit, è necessario utilizzare JavaService a 64 bit. Altrimenti si otterrà il seguente errore nei registri eventi di Windows:

La funzione LoadLibrary non è riuscita per il seguente motivo: LoadLibrary non è un'applicazione Win32 valida.

In secondo luogo, utilizzare i parametri -out e -err di JavaService per registrare stdout e stderr dal codice java.

 0
Author: Dzwiedziu-nkg, 2016-08-31 22:08:46