ePrometeusCorsoJavaJava
testi articoli
Testi Articoli  Download
Home | Eshop | Java | Tools | Web | 
CorsoJava è ora Video! Free for all!
Clicca Qui!

RMI IN PRATICA
RMI in pratica
RMI e i browser
L’intefaccia remota
Serializzazione dei parametri
L’implementazione
Importare l’oggetto
Compilazione e avvio
Conclusioni
L'Autore

<<< Importare l’oggetto >>>

Esaminiamo adesso il codice dell’applet che utilizza l’oggetto remoto:

package reverse;

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.rmi.*;

public class ReverseClient
	extends Applet
	implements TextListener
{
	Label text = new Label("");
	TextField input = new TextField();
	Reverse reverse = null;

	public void init()
	{
		try {
		reverse =
		(Reverse)Naming
		  .lookup("//"+getDocumentBase()
		  .getHost()+"/reverse");
		} catch(Exception e) {
			e.printStackTrace();
			add(new Label(e.getMessage()));
			return;
		}
		setLayout(new BorderLayout());
		add("North", text);
		add("South", input);
		input.addTextListener(this);
	}

	public void textValueChanged(TextEvent te)
	{
		try {
			text.setText(reverse
			  .reverse(input.getText()));
		} catch(Exception e) {
		  e.printStackTrace(); }
	}
}

Trascurando i dettagli del funzionamento dell’applet, che non sono pertinenti agli scopi dell’articolo (e poiché usano il nuovo modello ad eventi sono utilizzabili solo in un browser completamente conforme al JDK 1.1), il punto significativo è solo

Reverse reverse =
 (Reverse)Naming
  .lookup("//"+getDocumentBase()
  .getHost()+"/reverse");

Ricordiamo che le applet possono aprire connessioni di rete soltanto all’host da cui sono state scaricate, e questo spiega il getDocumentBase().getHost(), che si aspetta di trovare il registry degli di oggetti remoti sullo stesso host del Web Server. Dopodichè, utilizzando Naming.lookup(&ltrmi-url>) viene localizzato l’oggetto remoto, il quale deve risiedere anche esso (per i soliti limiti delle connessioni TCP) sulla stessa macchina del server. Infine l’oggetto ritornato viene convertito nell’interfaccia che consente di usarlo. Il resto è un semplice uso dell’oggetto, come se fosse un oggetto locale. Non dobbiamo però dimenticare le implicazioni di efficienza legate alla copia degli oggetti via serializzazione quando avviene l’invocazione.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com