A daemon it is a Unix program that executes in the background ready to perform an operation when required.
Typical daemons are print spoolers and e-mail handlers or a scheduler that starts up another process at a designated time.
The term comes from Greek mythology meaning "guardian spirit."
Un demone in java e' un metodo main avente le seguenti caratteristiche:
- prende come UNICO argomento il path del suo file di configurazione. In produzione sara' necessario e sufficiente cambiare il file di configurazione
- istanzia l'oggetto target che ha come unico comportamento l'esecuzione di una procedura one shot, ovvero che si occupa di portare a termine un compito una tantum. Ad esempio un oggetto che una tantum elimina ogni tupla di una tabella di un db.
- scrive nel log che e' partito correttamente
- esegue in un ciclo infinito la procedura dell'oggetto target dormendo, ad ogni iterazione, un periodo di tempo definito nel file di configurazione. Durante ogni iterazione scrive nel log solo i casi di eccezione sollevati dalla procedura.
Puo' avere le seguenti caratteristiche opzionali:
- controlla i parametri con cui viene invocato: se sono insufficienti stampa l'usage.
- stampa un messaggio di errore se non riesce a caricare il file di configurazione, ad esempio perche' indicato erroneamente
- impostare la property di log4j cosi' da permettere la ridirezione del log in un file apposito. Ad esempio: java -Dlog4j.configuration=log4j.properties.daemon etc... ridireziona la configurazione di log4j al file log4j.properties.daemon dove e' customizzata la property: log4j.appender.APPENDER1.file=${user.dir}/logs/DEMONE.log
- impostare il classpath. Ricordarsi che anche il file di property di log4j deve essere incluso nel classpath! Ad esempio:
for i in ./lib/*.jar; do
CLASSPATH="$CLASSPATH":"$i"
done
- L'invocazione sara' simile a: java -Dlog4j.configuration=log4j.properties.daemon -cp ${CLASSPATH} com.myPackage.Daemon ${1}
- Impostare i permessi di esecuzione. Ad esempio con chmod u=x startDaemonScript.sh oppore con ant il task chmod
- Eventualmente encodare da formato dos a formato unix con il comando dos2unix o con il task ant fixcrlf
1 commento:
thanks to all, but i don't want to become rich nor change my work ;-)
Posta un commento