3 - J (suc3)
3 - J (suc3)
3 - J (suc3)
Set of flashcards Details
Flashcards | 26 |
---|---|
Students | 10 |
Language | Deutsch |
Category | Riddles and Jokes |
Level | Primary School |
Created / Updated | 14.01.2014 / 14.01.2020 |
Weblink |
https://card2brain.ch/box/3_j_suc3
|
Embed |
<iframe src="https://card2brain.ch/box/3_j_suc3/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
RMI (abk.)
<RMI>
Remote Methode Invocation
RMI ist
<RMI>
ein Mechanismus in Java, mit welchem entfernte Objekte bzw. deren Angebote genutzt werden können
ein einfaches Framework für die Entwicklung von verteilten Anwendungen in Java
Vorteile
<RMI>
werden Details der Netzwerkkommunikation "ausgeblendet"
wird die Verteilung von Objekten durch einen Namensdienst (RMI-Registry) ermöglicht
wird das dynamische Laden vom Code ermöglicht$
Entfernte Objekte (Server) sind "multithreaded"
RMI bietet (von Haus aus) eine synchrone Kommunikation zwischen Client und Server (entferntes Objekt)
Nachteile
<RMI>
RMI basiert ausschliesslich auf OO-Konzepten der Sprache Java
die Integration mit anderen Verteilungstechniken, insbesondere mit anderen Programmiersprachen, sehr schwierig und an sich nur über IIOP möglich
RMI verwendet den Namensdienst
Die Synchronisation bei konkurrierenden Zugriffen wird nicht von RMI realisiert
Kommunikation
<RMI>
Client:
nimmt Dienste von entferntem Objekten in Anspruch
fragt dazu beim Namensdienst nach, ob ein passendes Objekt für den gewünschten Dienst registriert wurde
ruft Methoden des Entfernten Objekts auf
Server:
erzeugt das entfernte Objekt und meldet es beim Namensdienst an (Registrierung)
meldet das entfernte Objekt beim Namensdienst ab, wenn es nicht mehr benötigt wird (De- Registrierung)
Stub und Skeleton
<RMI>
werden durch rmic aus der Klasse erzeugt, welche das entfernte Objekt implementiert
kümmern sich um die Übertragung von Daten über das Netzwerk
Das Ver- und Entpacken von Nachrichten (Marshalling und Unmarshalling) wird automatisch von Stub und Skeleton erledigt
Namensdienst, Aufgaben
<RMI>
das Registrieren von EO zu ermöglichen (binding)
das Finden des EO zu ermöglichen (lookup)
Namensdienst wird auf dem Host-System (Server) ausgeführt
Der Server kann das EO bei dem Namensdienst registrieren
Der Client kann beim Namensdienst nachfragen, ob ein passendes EO für den gewünschten Dienst zur Verfügung steht bzw. registriert wurde
Beispiel für eine entfernte Schnittstelle
<RMI>
public interface Adder extends Remote {
int add(int x, int y) throws RemoteException;
}
}
Definition der entfernten Klasse
<RMI>
public class AdderImpl extends UnicastRemoteObject implements Adder {
alle Methoden: throws Remoteexception
=> standardkonstruktor mit RemoteException
client implementierung
<RMI>
den SecurityManger installieren, um sich von "bösartigen" Stubs zu schützen
den Namensdienst mit Hilfe der Klasse java.rmi.Naming finden
beim Namensdienst nachfragen, ob das gewünschte entfernte Objekt vorhanden ist und eine Referenz auf dieses Objekt erhalten (Methode lookup)
den Typ der erhaltenen Referenz auf den Typ der entfernten Schnittstelle casten (Methode lookup liefet java.rmi.Remote-Typ zurück)
Verteilung von Klassen !!!
<RMI>
Nachdem alle Klassen erstellt und kompiliert wurden, müssen diese verteilt werden
Auf der Server-Seite müssen folgende Klassen im CLASSPATH zu finden sein:
entfernte Schnittstelle (Adder.class)
entfernte Klasse (AdderImpl.class)
Server-Klasse (die Methode 'main' enthält)
Auf der Client-Seite müssen folgende Klassen im CLASSPATH zu finden sein:
entfernte Schnittstelle (Adder.class)
die Client-Klasse (die Methode 'main' enthält)
die adder.policy im ROOT-Verzeichnis
Übertragung von Objekten
<RMI>
Primitive Datentypen (int, long, …) werden by value übertragen
Lokale Objekte
werden by value übertragen (echte Kopien)
Müssen serialisiert (Stub), übertragen und deserialisiert (Skeleton) werden
Entfernte Objekte werden by reference übertragen.
Das bedeutet, dass nur der Stub des entfernten Objekts übertragen wird und nicht die echte Kopie des entfernten Objekts.
Die Stub-Klasse wird vom RMI-Namensdienst dem RMI-Client nach seiner Anfrage zugestellt
Konsequenz:
Falls gewöhnliche Objekte als Parameter zu entfernten Methoden oder Rückgabewerte von entfernten Methoden übertragen werden müssen, müssen sie vom Typ java.io.Serializable sein. => extends UnicastRemoteObject
Web Services sind
<Webservices>
im Internet verfügbare Dienste, die von Clients über URLs angesprochen werden können
Komponenten, die bestimmte Funktionalitäten über wohldefinierte Schnittstellen zur Verfügung stellen
Web Services dienen "als Unterstützung zur Zusammenarbeit zwischen verschiedenen Anwendungsprogrammen, die auf unterschiedlichen Plattformen und/oder Frameworks betrieben werden"
Web Services, Einführung
basieren auf offenen Protokollen
sind "selbstbeschreibend" (WSDL) und
können registriert und gefunden werden (UDDI)
Die Basisplattform für Web Services: XML + HTTP
SOAP
ist ein leichtgewichtiger Kommunikationsprotokoll für den Austauch von Daten in einer dezentralisierten, verteilten Umgebung
basiert auf XML und wurde für die Kommunikation im Internet entwickelt
plattform- und programmierspracheunabhängig
wird in Kombination mit HTTP als Übertragungsprotokoll von Firewalls "durchgelassen"
SOAP Nachricht
definiert die Struktur der zu übertragenden Nachricht (Syntax, Regeln)
ermöglicht die Kommunikation zwischen Anwendungen im Internet, unabhängig von benutzten Plattformen
Envelope (Umschlag) => markiert XML als SOAP, enthält Namensraumangaben
Header (Header-Informationen) => optional, Authentifizierung, Zahlungsdaten...
Body (Anfrage- und Antwort-Informationen) => mandatory, enthält die Nutzdaten
Fault (Informationen zu den Fehlern)
WSDL
ist eine XML-basierte Sprache für die Beschreibung von Web Services
wie der Web Service zu finden ist (URL) und
welche Operationen (Methoden) der Service zur Verfügung stellt
WSDL Elemente
Types: datentypen
Messages: Daten von einzelnen Operationen (Parameter)
Ports: Endpunkte
Bindings: Nachrichtenformat + Protokoll für jeden Port
UDDI
ist ein plattformunabhängiger Verzeichnisdienst, sehr mächtig
UDDI ermöglicht:
das Beschreiben von Web Services
die Registrierung (Anmeldung, Publizierung) von Web Services
die Suche nach Web Services
In der Praxis wird ein UDDI-Dienst eher auf Unternehmensebene betrieben (weniger im Internet)Vorgehensweise
Code First oder WSDL First?
code first
Schritt 1: Interface definieren
Schritt 2: Implementierende Klasse erstellen
Schritt 3: WebService publizieren
Schritt 4: WSDL anzeigen
Schritt 5: Client-Artefakte generieren
Schritt 6: Client implementieren
JAX-WS API
Oneway
WebMethod
WebParam
WebResult
WebService
JAX-WS API
Übertragung von primitiven und komplexen Datentypen (Objekten) möglich
Asynchrone Aufrufe auch möglich (Pooling & Callback)