Breve Presentazione del servizio di naming

Architettura Distribuita
Resolve
Request
Notifica
Skeloton
Java Bean
Stub
Client
Name
Service
Richiesta Remota
(Con serializzazione dei
Parametri)
Remote
Component
EJB
Il Servizio di nomi associa i nomi con gli oggetti:
Il componente remoto pubblica il suo nome sul Name Service
Il client richiede un oggetto per nome al name service
Il name service fornisce l'oggetto richiesto
Java Naming and Directory
Interface
Application
Components
Java Naming and Directory Interface
RMI
RMI
Service
Service
Provider
Provider
CORBA
Service
Provider
Other
Service
Provider
LDAP
Service
Provider
Java Naming and Directory Interface offre un modo di accesso uniforme ai servizi di naming e
di directory con Java. Un applicazione Java usa JNDI per localizzare oggetti remoti publicati
nel naming service.
Architettura JNDI
javax.naming è il package contenente le classi delle API
L'ogetto context fornisce i metodi per:
Risolvere i nomi degli oggetti
Collegare e scollegare i nomi agli oggetti
Classi derivate
InitialContext è la radice del sistema di naming, punto di partenza per la risoluzione dei nomi
The Naming Context
// per creare un naming context creiamo le variabili di ambiente per la sua generazione
java.util.Hashtable env = new java.util.Hashtable();
//mettiamo all'interno del nostro ambiente i parametri di configurazione
env.put(“java.naming.factory.initial”, “org.jnp.interfaces.NamingContextFactory”);
env.put(“java.naming.provider.url”,”jnp\://127.0.0.1\:1099/”);
// creiamo l'istanza dello InitialContext
InitialContext ictx=new InitialContext(env);
Ricerca di un servizio con JNDI
Standalone
Java Client
J2EE Runtime
Environment
Web-Tier
EJB-Tier
Object result =
ictx.lookup(“HelloBean”);
J2EE Services
JNDI
Name Service
Object result =
ictx.lookup(“java:comp:HelloBean”);
J2EE Client
Mappatura del tipo, lato client, della home e della remote interface per un EJB:
HelloHome helloHome= (HelloHome) PortableRemoteObject.narrow(result,HelloHome.class);