Newsgroup: it.comp.java
Titolo: J2EE e threads

Salve a tutti,
sto cercando, non senza difficoltà, di realizzare un'applicazione basata su
J2EE.
Ho definito alcuni Entity Bean che svolgono controlli su server; tali
controlli dovrebbero essere effettuati ad intervalli regolari per cui ho
pensato di utilizzare la classe java.util.Timer.
Il problema nasce dal fatto che, se non ho capito male, le specifiche J2EE
vietano la creazione di threads  ed infatti se lo istanzio l'application
server lancia un'eccezione di sicurezza.
Avete idea di come temporizzare l'esecuzione di un metodo?
Grazie
Francesco

pensato di utilizzare la classe java.util.Timer.
Francesco,
Perche java.util.Timer? "polling" e caro.
Maybe a "message driven bean" would be better. What exactly is your
use-case?
Gino

 use-case?
L'EJB mantiene una lista di server su cui effettuare il controllo e, ogni
tot minuti, contatta ciascun server e verifica, ad esempio, lo spazio libero
nella directory /tmp.
A mio modestissimo parere non è un Message Driven Bean in quanto non deve
processare messaggi asincroni ma semplicemente eseguire un proprio metodo ad
intervalli regolari.
Sono aperto comunque a soluzioni alternative.
Francesco

l'application server lancia un'eccezione di sicurezza.
Gli EJB forniscono servizi, e sono tendenzialmente oggetti
passivi, non attivi - ricevono eventi e richieste (sotto forma
di invocazione di metodi o messaggi da una coda) ma non sono 
pensati per essere "agenti". 
Nel tuo caso, costruisci un EJB-client esterno che usa timer e 
invoca i servizi degli EJB. Oppure, un programma senza timer
che usa i servizi di s/o per la temporizzazione ("at" esiste
sia in NT/2000 che dialetti unix).
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

 ha scritto nel messaggio
news:9lvu5c$16v97$1...@news02.it.net...


 ha scritto nel messaggio
news:9lvu5c$16v97$1...@news02.it.net...


 enterprise beans..
Se ho capito bene prospetti una soluzione simile a quella di Cristiano
Sadun,
con un client esterno (java nel mio caso, non una servlet) che temporizzi
l'esecuzione del controllo.
Grazie
Francesco


Bella domanda ! In realtà sono agli esordi e quindi sto facendo le prove con
J2EE SDK. Quasi certamente l'application server utilizzato in produzione
sarà JBoss.
Cercherò di capire se fornisce i servizi a cui fai riferimento.
Grazie
Francesco

 sia in NT/2000 che dialetti unix).
Ciao,
ti ringrazio per il consiglio. In effetti mi sembra una soluzione valida
definire 1 solo client che svolga funzioni di temporizzazione e più client
(java o web based) per il controllo dei risultati. Le informazioni di
temporizzazione potrebbero essere memorizzate dal EJB (e sul DB) che poi le
passa al client di temporizzazione / avvio.
Detto ciò, mi sembra strano che non sia possibile realizzare una sorta di
Message Driven Bean basati però su scadenze temporali.
A presto (credo che mi farò vivo di frequente) e grazie.
Francesco
PS: Giusto per prova, ho modificato il file di policy del server J2EE
autorizzando i thread e tutto sembra funzionare !!!

 sarà JBoss.
Corredato da che servlet engine???
tomcat o cosa??
se è tomcat penso non ci sia niente da fare per quanto riguarda il timer....
allora puoi fare come già detto una classe a parte che richiama gli EJB...
se utilizzi però un servlet container che ha un timer ti consiglio di
utilizzare quello,
normalmente occupa meno risorse perchè gira assieme all server....
ciao marco


 produzione sarà JBoss.
Con jboss puoi integrarti degli mlet che lanciano thread ed attivano i 
bean. Inoltre puoi fare anche degli mlet timer.
Vedi doco su 
www.jboss.org

1) no thread negli ejb ... non e' che non si puo' mettere ma bisogna cercare
di evitarlo ... insomma e' una "porcata"
2) l'idea dell'mdb non e' male ma un client va sempre fatto, il problema
degli mdb e' che sono nello standard 2.0 degli ejb.... capisci?
3) Sconsiglio i timer come avete detto perche' fate una applicazione non
j2ee standard
4) se avevi Bea weblogic ... potevi per esempio usare una startup class
5) mdb e' buono ... soprattutto se di mezzo ci sono transazioni ......
--
Fabrizio Marini
Company Partner
K-Tech S.r.l.
Via Tibullo, 13
00193 - Rome (RM) - Italy
http://www.k-tech.it
Phone: +39 (0) 6 68301467
E-mail: 
f.ma...@k-tech.it
 / 
fabry....@mclink.it

 j2ee standard
Ciao,
Voglio rispondere dato che sono stato io a dare l' idea dei timer....
ok non saranno j2ee standard ma tanto anche se usi gli standard se porti
un applicazione da una parte all' altra non và mai niente....
scrivo questo perchè sto portando un app da bea weblogic a JBoss+Jetty
ma ci sono molti problemini....
1) bea e jboss gestiscono il binding dei nomi dei pool di connessioni
diversamente...
2) gestione dei file .tld (taglibrary descriptor per intenderci) diversa
(dovrebbe essere standar)
3) su JBoss/Jetty un ResultSet.TYPE_SCROLL_INSENSITIVE o SENSITIVE con gli
stessi driver JDBC non và...
insomma perfortuna ci dovrebbe essere portabilità....
tra le altre cose lo stesso capita anche utilizzando
il nuovo IBM WebSphere (problemi diversi ma sempre problemi!!!)
questo un pò mi sconforta...
ciao marco

 diversamente...
C'e' sempre jndi dietro ed e' standard ... la factory al massimo e' diversa
.... ma quella e' una stringa un parametro di configurazione che puoi
mettere dove ti pare ...
Se ci sono molti problemi e' appunto perche'nessuno segue le linee guida
della sun tanto ben scritte nel blueprints ....Leggetele e mettetele in
pratica sin dall'inizio e le vostre applicazioni saranno portabili su
qualsiasi appservere cetificato j2ee ... altrimenti che li certificano a
fare?


 fare?
Il mio più che altro era uno sfogo...
perchè ho dovuto mettere le mani su 3 app server... prima che il cliente si
decidesse...
certo che le certificazioni sono valide... ma JBoss non è certificato (anche
se và molto bene) ; )
ciao, marco
