AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

2 quesiti..

 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian)
View previous topic :: View next topic  
Author Message
Montag
Guest





PostPosted: Wed Feb 25, 2004 10:32 am    Post subject: 2 quesiti.. Reply with quote



1. Sto creando un'applicazione in JSP con Tomcat 4, e devo buttare da
qualche parte lo username e la password di un DB (ovviamente un posto
sicuro), che vengono poi utilizzati ad ogni richiesta di connessione. Avevo
pensato di settarle come delle costanti in un Bean, ma ho idea che qualcuno
mi sa consigliare un metodo più pulito Wink (un file XML? quale? e con quale
sintassi?)

2. vorrei implementare il Pattern "Singleton" per una classe "Connessione",
in modo da essere sicuro che venga istanziata una sola volta. Qualcuno di
voi ha già implementato qualcosa del genere?

grazie

--
Giovanni


Back to top
fiveMilesOut
Guest





PostPosted: Wed Feb 25, 2004 10:49 am    Post subject: Re: 2 quesiti.. Reply with quote



Montag ha scritto:

Quote:
2. vorrei implementare il Pattern "Singleton" per una classe "Connessione",
in modo da essere sicuro che venga istanziata una sola volta. Qualcuno di
voi ha già implementato qualcosa del genere?

Io faccio così:

public class Connessione {

private static Connessione CURRENT = null;

public static Connessione getSharedInstance() {
if (CURRENT == null)
CURRENT = new Connessione();
return CURRENT;
}

private Connessione() {
...
}
}

Nel codice:

Connessione c = Connessione.getSharedInstance();


Quote:
grazie

prego!

Ciao

--

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad [email]abuse (AT) newsland (DOT) it[/email]



Back to top
Lucio Benfante
Guest





PostPosted: Wed Feb 25, 2004 11:05 am    Post subject: Re: 2 quesiti.. Reply with quote



On Wed, 25 Feb 2004 11:49:02 +0100, fiveMilesOut wrote:

Quote:
Montag ha scritto:

2. vorrei implementare il Pattern "Singleton" per una classe "Connessione",
in modo da essere sicuro che venga istanziata una sola volta. Qualcuno di
voi ha già implementato qualcosa del genere?

Io faccio così:

public class Connessione {

private static Connessione CURRENT = null;

public static Connessione getSharedInstance() {
if (CURRENT == null)
CURRENT = new Connessione();
return CURRENT;
}

private Connessione() {
...
}
}

Nel codice:

Connessione c = Connessione.getSharedInstance();


Purtroppo la tua implementazione non e' thread-safe, in un'applicazione
Web rischi grosso. Meglio utilizzare un blocco statico per creare
l'istanza del singleton e rendere synchronized il metodo di recupero.

Inoltre per un'applicazione Web un singleton non e' la scelta opportuna,
dato che una singola connessione non sara' probabilmente sufficiente.
Meglio usare un pool di connessioni.

--
Lucio Benfante
Java User Group Padova: http://www.jugpadova.it
Brainbench MVP for Java 1: http://www.brainbench.com
MyTranscript: http://www.brainbench.com/transcript.jsp?pid=167064


Back to top
Dario
Guest





PostPosted: Wed Feb 25, 2004 11:05 am    Post subject: Re: 2 quesiti.. Reply with quote

Quote:
2. vorrei implementare il Pattern "Singleton" per una classe "Connessione",
in modo da essere sicuro che venga istanziata una sola volta. Qualcuno di
voi ha già implementato qualcosa del genere?

Io faccio così:

public class Connessione {
private static Connessione CURRENT = null;
public static Connessione getSharedInstance() {
if (CURRENT == null)
CURRENT = new Connessione();
return CURRENT;
}
private Connessione() {
...
}
}

Piu' semplice e':

public class Connessione {
public static Connessione CURRENT = new Connessione();
private Connessione() {
...
}
}

Back to top
Montag
Guest





PostPosted: Wed Feb 25, 2004 11:43 am    Post subject: Re: 2 quesiti.. Reply with quote

grazie a tutti per i consigli, molto utili Smile
e riguardo al primo quesito?


"Montag" <inventato (AT) nonesiste (DOT) it> ha scritto nel messaggio
news:UQ__b.26493$IT2.861100 (AT) news4 (DOT) tin.it...
Quote:
1. Sto creando un'applicazione in JSP con Tomcat 4, e devo buttare da
qualche parte lo username e la password di un DB (ovviamente un posto
sicuro), che vengono poi utilizzati ad ogni richiesta di connessione.
Avevo
pensato di settarle come delle costanti in un Bean, ma ho idea che
qualcuno
mi sa consigliare un metodo più pulito Wink (un file XML? quale? e con
quale
sintassi?)

2. vorrei implementare il Pattern "Singleton" per una classe
"Connessione",
in modo da essere sicuro che venga istanziata una sola volta. Qualcuno di
voi ha già implementato qualcosa del genere?

grazie

--
Giovanni





Back to top
matish
Guest





PostPosted: Wed Feb 25, 2004 11:59 am    Post subject: Re: 2 quesiti.. Reply with quote

Lucio Benfante wrote:


Quote:
Purtroppo la tua implementazione non e' thread-safe, in un'applicazione
Web rischi grosso. Meglio utilizzare un blocco statico per creare
l'istanza del singleton e rendere synchronized il metodo di recupero.

Non basta rendere synchronized getSharedInstance() ?

--
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it

un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it

Back to top
matish
Guest





PostPosted: Wed Feb 25, 2004 12:00 pm    Post subject: Re: 2 quesiti.. Reply with quote

Dario wrote:


Quote:
Piu' semplice e':

public class Connessione {
public static Connessione CURRENT = new Connessione();
private Connessione() {
...
}
}

Si ma se creare una connessione fosse costoso (in termini di risorse Smile
sarebbe meglio crearla solo quando effettivamente necessaria.

--
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it

un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it

Back to top
fiveMilesOut
Guest





PostPosted: Wed Feb 25, 2004 1:10 pm    Post subject: Re: 2 quesiti.. Reply with quote

matish ha scritto:

Quote:
Dario wrote:


Quote:
Piu' semplice e':

public class Connessione {
public static Connessione CURRENT = new Connessione();
private Connessione() {
...
}
}

Si ma se creare una connessione fosse costoso (in termini di risorse Smile
sarebbe meglio crearla solo quando effettivamente necessaria.

Non solo: se il costruttore può sollevare Exception, diventa difficile
l'inizializzazione:

public static Connessione CURRENT;

static {
try {
CURRENT = new Connessione();
} catch Exception e {
??? che fare ???
}
}

private Connessione() throws Exception {
...
}

Ciao

--

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad [email]abuse (AT) newsland (DOT) it[/email]



Back to top
Lucio Benfante
Guest





PostPosted: Wed Feb 25, 2004 2:07 pm    Post subject: Re: 2 quesiti.. Reply with quote

On Wed, 25 Feb 2004 12:59:57 +0100, matish wrote:

Quote:
Lucio Benfante wrote:


Purtroppo la tua implementazione non e' thread-safe, in un'applicazione
Web rischi grosso. Meglio utilizzare un blocco statico per creare
l'istanza del singleton e rendere synchronized il metodo di recupero.

Non basta rendere synchronized getSharedInstance() ?

In realta' mi e' rimasta nella tastiera (e nella testa) parte della frase.
Completa potrebbe essere:

....e (se proprio necessario) rendere synchronized...

Il senso e' che in un'applicazione multithreading i metodi sinchronized
sono un collo di bottiglia, quindi si dovrebbe cercare di limitare il piu'
possibile la quantita' di codice synchronized. Utilizzando
un'inizializzatore statico, se il metodo getSharedInstance si limita a
restituire il reference all'istanza gia' creata, non c'e' bisogno che sia
synchronized, migliorando di molto le performance e l'utilizzabilita'
concorrente.

--
Lucio Benfante
Java User Group Padova: http://www.jugpadova.it
Brainbench MVP for Java 1: http://www.brainbench.com
MyTranscript: http://www.brainbench.com/transcript.jsp?pid=167064


Back to top
Lucio Benfante
Guest





PostPosted: Wed Feb 25, 2004 2:14 pm    Post subject: Re: 2 quesiti.. Reply with quote

On Wed, 25 Feb 2004 10:32:20 +0000, Montag wrote:

Quote:
1. Sto creando un'applicazione in JSP con Tomcat 4, e devo buttare da
qualche parte lo username e la password di un DB (ovviamente un posto
sicuro), che vengono poi utilizzati ad ogni richiesta di connessione. Avevo
pensato di settarle come delle costanti in un Bean, ma ho idea che qualcuno
mi sa consigliare un metodo più pulito Wink (un file XML? quale? e con quale
sintassi?)


Il deployment descriptor dell'applicazione (web.xml) potrebbe essere un
buon posto, definendo un context-param. Dai un'occhiata al web.xml
d'esempio di Tomcat:

http://jakarta.apache.org/tomcat/tomcat-4.1-doc/appdev/web.xml.txt

--
Lucio Benfante
Java User Group Padova: http://www.jugpadova.it
Brainbench MVP for Java 1: http://www.brainbench.com
MyTranscript: http://www.brainbench.com/transcript.jsp?pid=167064


Back to top
Lucio Benfante
Guest





PostPosted: Wed Feb 25, 2004 2:22 pm    Post subject: Re: 2 quesiti.. Reply with quote

On Wed, 25 Feb 2004 13:00:54 +0100, matish wrote:

Quote:
Dario wrote:


Piu' semplice e':

public class Connessione {
public static Connessione CURRENT = new Connessione();
private Connessione() {
...
}
}

Si ma se creare una connessione fosse costoso (in termini di risorse Smile
sarebbe meglio crearla solo quando effettivamente necessaria.

Non sono completamente d'accordo: secondo me e' meglio crearla quando da'
meno fastidio. In questo caso (applicazione Web) e' meglio crearla prima,
piuttosto che l'utente debba aspettare quando richiede la pagina.

--
Lucio Benfante
Java User Group Padova: http://www.jugpadova.it
Brainbench MVP for Java 1: http://www.brainbench.com
MyTranscript: http://www.brainbench.com/transcript.jsp?pid=167064


Back to top
Lucio Benfante
Guest





PostPosted: Wed Feb 25, 2004 2:24 pm    Post subject: Re: 2 quesiti.. Reply with quote

On Wed, 25 Feb 2004 14:10:49 +0100, fiveMilesOut wrote:

Quote:

Non solo: se il costruttore può sollevare Exception, diventa difficile
l'inizializzazione:

public static Connessione CURRENT;

static {
try {
CURRENT = new Connessione();
} catch Exception e {
??? che fare ???
}
}

private Connessione() throws Exception {
...
}

Ciao

Infatti sarebbe meglio che l'attributo della classe fosse privato e che
ci sia un metodo pubblico per recuperarlo. In questo modo sarebbe quel
metodo eventualmente a sollevare un'eccezione.

--
Lucio Benfante
Java User Group Padova: http://www.jugpadova.it
Brainbench MVP for Java 1: http://www.brainbench.com
MyTranscript: http://www.brainbench.com/transcript.jsp?pid=167064


Back to top
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.