Präsentationsquelle herunterladen

Werbung
Voyager
Eigenschaften/Vorzüge
• Universalität:
– ROI-Modelle: CORBA, RMI, DCOM
– verschiedene Namens-, Verzeichnisdienste
• Nachrichtentypen:
synchron, oneway, future
• Einfachheit:
– vollautomatische Erzeugung von Stubs etc.
– keine (wenig) Anpassung der Objekte nötig
– problemlose Fernerzeugung, Migration
Voyager-Laufzeitumgebung
• Integration verschiedener JVMs zu einem
Voyager-System durch aktive Laufzeitsysteme
– in Java für Clienten (keine eingehenden Nachrichten):
Voyager.startup()
– in Java für Server (lauscht am Port):
Voyager.startup(int port)
– auf der Kommandozeile
> voyager portnummer
• Adressierung von Laufzeitumgebungen mit URL
“//host:port“
Entfernte Objekte
• Aufruf auf entf.Objekte nur über Schnittstellen
• Repräsentation entf. Objekte durch Proxies
• Argumentübergabe bei entf. Methodenaufrufe
– als Referenz, wenn Parameter die Schnittstelle
com.objectspace.voyager.IRemote erfüllt
– sonst als Kopie (mittels Serialisierung)
• Bei Fehlern/Exceptions
– und deklarierter java.rmi.RemoteException wird
die Voyager-Exception als RMI-Exception signalisiert,
– sonst als (nicht deklarationspflichtige)
com.objectspace.voyager.RuntimeRemoteException
Entfernte Erzeugung+Namensdienst
• Objekte können entfernt erzeugt werden:
– in einer Laufzeitumgebung auf hai unter Port 8000
IServer serv =(IServer)Factory.create(“vs.Server“,“//hai:8000“)
– mit Parameter für den Konstruktor
Object[] args={“plot“,new Integer(2)}
serv = Factory.create(“vs.Server“,args, “//hai:8000“)
• Namensdienst funktioniert analog zu RMI
– Namespace.bind(String name, Object obj)
– Namespace.lookup(String name)
Hard working server...
Schnittstelle:
public interface IServer
{ void doSomeService(); }
Implementierung:
public class Server
implements IServer
{
public void doSomeService()
{ System.out.println("Working hard..");}
}
Konfiguration/Applikation
import com.objectspace.voyager.*;
public class App
{
static public void main(String args[])
{ Voyager.startup();
// generate and configure Server
IServer server = (IServer)
Factory.create("Server","//z1:8001");
// use service
server.doSomeService();
}
}
Starten
Starten der Laufzeitumgebung auf Rechner z1
z1> voyager 8001
voyager orb 3.1.1, copyright objectspace
1997-1999
Starten der Applikation auf beliebigem Rechner
mumu> java App
Ausgabe auf z1:
Working hard..
Herunterladen