Newsgroup: it.comp.java
Titolo: Application Server per fare girare programmi demoni

Per un progetto ho creato un programma che si puo' definire un "demone", 
nell'accezione UNIX del termine.
Il programma parte, da delle cose, scarica dei file, fa dei conti, 
aspetta un po' e scarica altri file. Insomma non è un programma interattivo.
In piu' il programma fornisce un'interfaccia RMI attraverso il quale è 
possibile interrogarlo, e controllarlo, gli si puo' chiedere cosa ha 
scaricato, quando e gli si puo' dire di aggiungere qualcos'altro alla 
lista.
Non essendo espertissimo e non avendo trovato una soluzione migliore ho 
deciso di sviluppare questo programma come applicazione stand-alone.
In pratica lo avvio con
	nohup java -jar programma.jar &
Questo approccio è un po' scomodo per due motivi:
  - il deploy devo farlo a mano, devo copiarmi il file .jar e le sue 
dipendenze in una directory, mi piacerebbe fare il deploy direttamente 
dal mio IDE
  - avrei preferito che il datasource del database fosse iniettato 
dall'application server, in questo modo non dovevo tenere la 
configurazione dentro il .jar (posto scomodo per cambiarla durante il 
deploy).
Come potevo fare meglio?
-- 
Andrea Francia
http://www.andreafrancia.it/

 Come potevo fare meglio?
Prima di chiederti "come", dovresti chiederti "se" potevi fare di meglio. 
Java non è nato per scrivere servizi di sistema operativo, e J2EE offre un 
supporto abbastanza limitato alle operazioni di tipo schedulato o 
ripetitivo. La tua strada mi sembra corretta, poi dipende dalla frequenza 
dalla quale il tuo programma fa quel che deve fare.
Se l'azione è schedulabile a frequenza fissa, o a intervalli regolari, io 
ricorrerei ad occhi chiusi a cron o ad atd.
Schedulo il mio programma in base alle mie esigenze e gli passo i parametri 
(quelli si, secondo me, vanno comunque messi in un file esterno (xml o 
.props o quel che vuoi) ) contenuti in un file di configurazione; l'output 
lo scrivo sul file sistem, nel formato che voglio. Poi, gestirei sia il file 
di configurazione sia l'eventuale output via web, con una servlet java o 
quel che vuoi: se ti va, sotto linux puoi metterti a *giocare* con i moduli 
(scritti in perl) per webmin.
Poi questi sono i miei due centesimi: avrò scritto sì e no un cinque 
"pseudo-daemons" usando questa tecnica (senza controllo via webmin, però, 
puro vim :-)  ) e mi sono sempre trovato bene, ma di sicuro non sono un 
espertone visti i numeri in gioco.
Ciao,
    Scorpio.


 
http://www.andreafrancia.it/
Ciao Nicola
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Come potevo fare meglio?
premetto che il primo problema proprio non ho capito dove sta, il 
secondo lo capisco poco. se ti serve un connection pool ci sono comunque 
delle implementazioni (commons dbcp), se è per portar fuori una 
configurazione non serve certo un application server (mai provato 
spring, vero?).
detto questo, non ho capito nemmeno la domanda :P potevi fare di meglio? 
boh, hai fatto delle scelte che avranno le loro ragioni e le tue 
confutazioni mi sembrano un tantino forzate. un application server fa un 
lavoro completamente diverso da quello che hai descritto, magari il tuo 
servizio ci sta bene come mbean e questo lo puoi dire solo tu che 
conosci la logica, ma come minimo andrebbe reimplementato daccapo.
-- 
++ Fino all'anno scorso avevo un solo difetto. Ero presuntuoso.
http://unopuntozero.wordpress.com/
http://www.flickr.com/photos/marko_po/

 lista.
Potevi inserirlo dentro un EAR (se l'application server supporta EJB 
conteiner es. Jboss) o in un war (se application server supporta solo 
webapplication come Tomcat).
0) Lo distribuivi con un WAR o un EAR
1) Facevi il deploy istallando da consolle l'applicazione.
2) Tramite una classe listner lo avviavi e stoppavi tramite la console del 
server.
3) gli facevi tutte le "inezioni" che volevi tramite una configurazione JNDI 
(sempre da consolle)
4) lo dotavi di comode interfacce EJB o Webservice (per il mondo non JAVA) 
per il controllo
5) Potevi utilizzare Quartz come scheduler.
6) L'applicazione sarebbe clusterizzabbile
7) Lo dotavi di interfaccia di controllo web
8) Aggiungevi un manager SNMP per renderlo gestibile da Tivoli, Opve view e 
roba simile
9) Interfaccia per fare il caffè
10)Interfaccia per il sesso virtuale..
11)....
da 0 a 3 puoi farlo comodamente con minime modifiche da codice già scritto.
ciao!

 roba simile
Questa cosa cos'e'? Che parole chiave devo cercare per saperne di piu'?
-- 
Andrea Francia
http://andreafrancia.blogspot.com/2008/07/colinux-linux-dentro-windows.html

 Questa cosa cos'e'? Che parole chiave devo cercare per saperne di piu'?
"snmp monitoring"


> Questa cosa cos'e'? Che parole chiave devo cercare per saperne di piu'?
Protocollo utilizzato nelle telecomunicazioni. I router costosi in genere lo 
implementano.

 lo implementano.
Piů precisamente, in generale č un protocollo di controllo di dispositivi 
collegati in rete. Ci sono anche stampanti, dispositivi per il raid etc che 
lo implementano. Utile, ma: ne vale la pena nel contesto che ha specificato 
Andrea?
Scorpio. 


Non capisco cosa c'entra con Java. L'agent snmp si installa facilmente 
in qualsiasi sistema operativo. Mi sa che non ho capito cosa intendeva 
"il mio nome č legione". Intendevi reimplementare snmp in Java? Boh?



Intendevo che per controllare l'applicazione potevi implementare un "agent" 
SNMP come si chiama in gergo ci sono le librerie per farlo...
Ciao. 

 SNMP come si chiama in gergo ci sono le librerie per farlo...
Non sapevo che SNMP si usasse anche per queste cose.
In effetti per come č fatto potrebbe essere usato per controllare alcuni 
aspetti di un'applicazione.
Ma č una cosa che si usa fare?
Cioé, magari nelle grandi aziende, si configurano OpenView o Tivoli in 
modo che monitorino anche le applicazioni oltre che ai dispositivi in rete?
Ci sono dei MIB (si chiamano cosě?) definiti apposta per il monitoring 
delle applicazioni?


 delle applicazioni?
Se sono ben organizzati e l'applicazione č critica.. ci sono diversi 
software che lo fanno