Sto cercando di ottenere un'applicazione Java per l'esecuzione come un servizio Linux che utilizza jsvc. Ho trovato How to convert a java program to daemon with jsvc? che è stato in grado di farmi ottenere la maggior parte del modo, ma sto ancora cercando di capire il percorso di classe.Utilizzo di più jar nel percorso classe jsvc
sto ottenendo i seguenti errori per stderr:
19/04/2013 10:43:18 12233 jsvc.exec error: Cannot find daemon loader org/apache/commons/daemon/support/DaemonLoader
19/04/2013 10:43:18 12231 jsvc.exec error: Service exit with a return value of 1
sembrerebbe che il runtime non è in grado di trovare il commons-daemon.jar.
La mia applicazione è strutturata in modo tale che con l'applicazione stessa in un singolo file jar, con dipendenze, tra cui il demone commons in una directory lib.
- daemon-script.sh
- myapp.jar
- lib/Commons-daemon.jar
- lib/altre-barattoli
Ecco le parti rilevanti della mia daemon- script.sh:
LIB_DIR=$(pwd)/lib/*
CLASS_PATH=$(pwd)/myapp.jar
$EXEC -home $JAVA_EXEC -cp $CLASS_PATH:$LIB_DIR -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID $1 $CLASS
Ho provato numerose varianti: percorso relativo, speci referenzia feticamente lib/commons-daemon.jar, nessun jolly, ecc. Qualcuno ha un'idea su come farlo funzionare correttamente?
Inoltre, myapp.jar è un vaso di auto-eseguibile (per lo più a scopo di test, e sì, ho ancora bisogno per eseguire come un servizio), in modo che il MANIFEST.MF contiene la classe-Path e Base- Attributi di classe C'è un modo per ottenere jsvc per riconoscere il manifest?
Il mio chilometraggio variava usando jsvc 1.0.8 (su Ubuntu). jsvc non rispetterebbe i caratteri jolly o semplicemente specificando lib/dir. Invece, ho dovuto costruire il classpath esplicitamente usando "CLASS_PATH = $ (echo" $ LIB_PATH "/ *. Jar | tr '' ':')". Ho anche avuto un problema cercando di specificare -Dlog4j.configuration. Di solito specifichi solo un percorso assoluto al file delle proprietà, ma per farlo funzionare con jsvc, ho dovuto scriverlo come URL con il prefisso file: ///. Proverò presto anche su RHEL. – ayang