Newsgroup: it.comp.java
Titolo: EJB e OpenLDAP

Ciao, ho a disposizione un database LDAP e su lato server tecnologia
J2EE. Devo cercare di stabilire un canale SSL per accedere ad LDAP ma
deve essere stabilito una sola volta per tutti i client. Con i Bean
sembra non essere possibile implementarla perchè a ciascun client
viene generata un'istanza diversa del bean che non è quella che ha
stabilito il canale SSL col server LDAP. Ho guardato la possibilità di
utilizzare un connection pooling ma non sembra essere applicabile con
JNDI-LDAP. Qualche idea? Soluzione?
Grazie Ciao.

 Soluzione?
Beh se ho capito bene ti serve controllare che la connessione ldap sia 
effettuata una sola volta.
Bene hai a disposizione il pattern singleton che adempie a questo scopo.
es.
public class LDAPConnectorManager{
    private static LDAPConnectorManager instance;
    .
    .
    .
    protected LDAPConnectorManager(){
        .
        .
        .
    }
    public static LDAPConnectorManager getInstance(){
	 if(instance == null){
            instance = new LDAPConnectorManager();
        }
        return instance;
    }
    .
    .
    .
}
Facile capire che dalla classe esterna invochi 
LDAPConnectorManager.getInstance();
Spero di essere stato di aiuto.
G.M.

 Bene hai a disposizione il pattern singleton che adempie a questo scopo.
Sono d'accordo, aggiungo solamente di prestare attenzione alla 
sincronizzazione essendo (se non ho capito male) un ambiente server j2ee 
quindi probabilmente multithread.

 Giovanni Martone wrote:


Grazie mille per la risposta! Cerco però di spiegarmi meglio con un
disegno. Un esempio di soluzione trovato da me era:
client1------->ClientSessionBean--------------->\                SSL
 
LdapSessionBean--------->Ldap
amministratore----->AmministratoreSessionBean-->/
 
L'amministratore tramite il client ottiene l'istanza
dell'oggettoAmministratoreSessionBean il quale a sua volta ottiene un
istanza locale di LdapSessionBean. Attraverso il metodo di LdapSessionBean
instaura la connessione con il server LDAP abilitando il canale SSL. Il
problema è che essendo SessionBean appena l'amministratore chiude il
client AmministratoreSessionBean viene rimosso e lo stesso per
LdapSessionBean, di conseguenza il client quando ottiene un'istanza
LdapSessionBean non sarà la stessa dell'amministratore con la connessione
SSL col server LDAP.
Forse la soluzione potrebbe essere quella di utilizzare un entity bean per
LdapSessionBean dato che è un session bean? Cosa ne pensate, è corretto
usare un entity bean in questo caso, essendo indipendente dal client che
lo istanzia?
Ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 quindi probabilmente multithread.
Si ovviamente bisogna tener conto della sincronizzazione. :-)
G.M.

 lo istanzia?
Se usi un SessionBean il comportamento del SessionBean (proprio perchè è 
Session) è corretto.
Ma la  domanda sorge spontanea. Perchè usare gli EJB?
Puoi usare i EJB se sei in un ambiente distribuito ma cmq penso che il 
singleton sia una soluzione ottimale,
in quanto risparmi sulle righe di codice e soprattutto non hai i problemi 
che ti trovi quando deploy gli EJB.
Ma queste rimangono mie considerazioni. :-)
Saluti,
G.M.
-- 
Creato con M2, il rivoluzionario client e-mail di Opera: 
http://www.opera.com/m2/

 G.M.
Uso gli EJB perchè altrimenti dovrei gestire concorrenza, transazioni etc...cosa
che invece viene gestita dal J2EE server. Cmq grazie per la risposta!
Ciao Luca.
Inviato da 
www.mynewsgate.net