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);