Newsgroup: it.comp.java
Titolo: Singleton e Servlet Container

Mi pare di  ricordare di qualche problema ad usare  i singleton in una
applicazione web...
Ricordo male ?
-- 
 /\           ___
/___/\_|_|\_|__|___Gian Uberto Lauri_____
  //--\| | \|  |   Integralista GNUslamico
\/                 e coltivatore diretto di Software

 Ricordo male ?
Concorrenza, nient'altro.

> Ricordo male ?
e> Concorrenza, nient'altro.
O.K., niente che non si possa gestire. Bene.


 Ricordo male ?
Il singleton potrebbe non essere tale a causa di diversi class-loaders, 
se ben mi ricordo :)
Inolte mi domando come verrebbe gestito in un'ambiente distribuito ...

 Inolte mi domando come verrebbe gestito in un'ambiente distribuito ...
Non so dirti su due piedi se ci sono accorgimenti particolari (sarebbe
da approfondire) ma il singleton è usato in diverse implementazioni.
Mi viene in mente l'ApplicationContext di Spring e l'Application di
JSF.

 Inolte mi domando come verrebbe gestito in un'ambiente distribuito ...
Dipende soprattutto, credo, da che compiti svolge la classe Singleton.
Scorpio. 

 Dipende soprattutto, credo, da che compiti svolge la classe Singleton.
beh comunque avresti un singleton per ciascuna VM


Infatti.
Per questo motivo e' quasi vietato o almeno sconsigliato usare i singleton
in JEE se sono write .
Eventualmente bisogna fare molta attenzione e spesso conviene usare altri
tipi di cache.
I singleton readonly invece, molto frequenti per farsi cache di dati, oppure
per mantenere delle configurazioni, possono essere usati tranquillamente
Ciao Nicola
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 in JEE se sono write .
Beh, a me viene in mente un esempio, in cui una classe singleton (valido non 
in cluster) potrebbe essere utile: realizzare un lock applicativo su oggetti 
. Un unica classe singleton, con metodi sinchronized, consente o nega 
l'accesso ad un determinato oggetto (dal quale deve essere possibile 
risalire ad una chiave) ai vari client. Altrimenti, come potrebbe essere 
impedito l'accesso concorrente allo stesso oggetto in ambito J2EE ?
Scorpio.


 stesso oggetto in ambito J2EE ?
per le config o operazione readonly che male c'è a usare un singleton anche 
se l'ambiente è distribuito ?
per l'accesso concorrente se è su ambiente distribuito le cose che consoco 
sono file di lock su file system shared oppure lock su database...
qualcuno conosce sistemi migliori ?

 qualcuno conosce sistemi migliori ?
Io ho usato il context dell'application server tramite jndi come 
"database" unico. E' possibile creare dei lock che funzionano benissimo 
con applicazioni distribuite.
-- 
SoulSpirit

 ha scritto nel messaggio 
news:eq2u1r$b9k$1...@newsreader.mailgate.org...

Personalmente, no. Ma in ambiente cluster non puoi avere un singleton unico, 
semmai n singleton, uno per ciascun nodo, perchè ogni nodo ha un suo 
classloader. In una appserver singolo, non ci sono problemi perchè puoi fare 
istanziare il singleton dal classloader di più alto livello, quindi il 
singleton può mantenere correttamente in una hashmap interna i lock 
applicativi... devi sincronizzare i metodi in fase di write, ma IMHO il 
rallentamento dovuto a sinchronized è inferiore ad eseguire query su 
database.
Scorpio.

Ciao a tutti...
Ho avuto un problema simile, ma la cosa peggiore era come 
far sapere agli altri nodi che il sigleton dovrebbe 
essere ri-sincronizzato.
Mi spiego meglio,  ho un singleton che fa il cache di una tabella 
(poco dinamica). Se da un'altro nodo si modifica la tabella, 
come fa il singleton del nodo precedente a capire di dover
risincronizzare
 i dati?
Io ho risolto facendo una servlet di risincronizzazione chiamata 
dal nodo che modifica la tabella... funziona ma non credo sia il modo
 migliore... ho sentito che parlavate di pattern migliori per cache-are,
potete dirmi quali sono .
Ciao
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG