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

RMI-Schichten

<RMI>

bild

Kommunikation, Alles auf einen Blick

<RMI>

bild

 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

Grundelemente (Plattform)

SOAP (Simple Object Access Protocol) 

UDDI (Universal Description, Discovery und Integration) 

WSDL (Web Service Description Language)

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)