RMI - Remote Method Invocation
|
|
- Kajetan Scholz
- vor 8 Jahren
- Abrufe
Transkript
1 RMI - Remote Method Invocation JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz
2 RMI Motivation Grundarchitektur Implementierung von Remote-Objekten Parameterübergabe Callbacks Distributed Garbage Collection Verteilung und Nachladen von Code Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 2
3 Motivation Methodenaufruf bei einer VM Objekte innerhalb einer JVM Methodenaufruf über VM Grenzen hinweg Objekte sind auf mehreren JVMs (Rechnern) verteilt Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 3
4 Probleme bei Remote-Objekten Objektreferenzen: Was ist eine Remote-Referenz? Wie finde ich ein Objekt? Wie spreche ich Objekte an? Methodenaufruf: Wie wird die Sprungadresse für die Methode ermittelt? Parameterübergabe und Rückgabewerte: Wie werden Parameterwerte und Rückgabewerte verschickt? Objekterzeugung: Wie kann der Client ein Remote-Objekt erzeugen? Garbage Collection: Wann kann ein Objekt am Server frei gegeben werden? Laden der Klassen: Von wo wird die Klasse für ein vom Client benötigtes Objekt geladen? Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 4
5 RMI Motivation Grundarchitektur Implementierung von Remote-Objekten Parameterübergabe Callbacks Distributed Garbage Collection Verteilung und Nachladen von Code Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 5
6 Proxy-Pattern request() Client Interface: definiert eine allgemeine Schnittstelle, die Client sieht und Server implementieren muss Implementierung für den Server hat Interface entsprechend zu implementieren Proxy für den Client wird vom Client angesprochen implementiert die Schnittstelle, d.h. stellt sich dar wie ein wirkliches Objekt delegiert alle Requests an die wirkliche Objektimplementierung Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 6
7 Proxy-Pattern bei Remote-Objekten Proxy Stub stellt das Proxy-Objekt auf der Seite des Client dar Proxy leitet die Anforderungen über die VM-Grenzen an Server weiter Skeleton empfängt die Requests und baut eigentlichen Request an den Server auf Server bedient den Request Ergebnis wird an Skeleton zurückgegeben Ergebnis wird über Netzwerk an Stub weitergeleitet Stub gibt das Ergebnis an Client zurück Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 7
8 Kommunikationsarchitektur Client und Server Stubs und Skeletons Remote Reference Layer Netzwerkverbindung Netzwerkverbindung zwischen JVMs immer über Network Layer des Host OS JVM JVM JVM JVM Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 8
9 Kommunikationsarchitektur: Aufgaben der Schichten Client und Server sind die eigentlichen Anwendungsobjekte kommunizieren über virtuelle Kommunikation Stubs und Skeletons Stub (Achtung: ab Java 1.5 nicht mehr nötig; mittels Dynamic-Proxies gelöst) ist das Proxy-Objekt auf der Client-Seite und stellt sich wie Server-Objekt dar leitet Requests des Client an die unteren RMI-Services weiter Skeleton (Achtung: ab Java 1.2 nicht mehr nötig!!!) empfängt die Requests von unteren RMI-Services und setzt diese für Requests an Server-Objekt um Remote Reference Layer verwaltet die Remote-Referenzen (Klasse RemoteRef) der Server-Objekte RemoteRef bietet Methode invoke für Methodenaufrufe abzusetzen (wird von Stubs verwendet) dient zur Registrierung von Remote-Objekts Netzwerkverbindung eigentliche Netzwerkverbindung über TCP/IP stream-basierte Verbindung standardmäßig auf Port 1099 Kommunikationsprotokoll oberhalb TCP/IP (nicht standardisiert) Java Remote Method Protocol (JRMP) IIOP und weitere Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 9
10 Objektregistrierung und Objektsuche RMI ermöglicht Registrierung von Remote-Objekten durch Server mit einer RMI-URL Aufsuchen von Remote-Objekten durch Client Dazu dienen RMI-Registrierungsprogramm rmiregistry RMI-Service Klassen Naming, Registry, LocateRegistry Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 10
11 Objektregistrierung und Objektsuche: Vorgehen LocateRegistry: Zugriff auf Registry Service Registry: bind oder rebind ein Server-Objekt registriert. Es muss dabei ein eindeutiger Name für das Server-Objekt vergeben werden. try { Bank bank = new BankImpl(); Registry reg = LocateRegistry.createRegistry(1099); reg.bind("bank", bank);... default port 1099; andere möglich Das Server-Objekt wird dabei unter der RMI-URL mit eingetragen. rmi://<hostcomputer>:1099/bank Damit hat ein Client eine eindeutige URL, um auf ein Server-Objekt zuzugreifen; // Client try { Registry reg = LocateRegistry.getRegistry("<Hostcomputer>", 1099); Bank bank = (Bank) reg.lookup("bank"); Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 11
12 RMI Motivation Grundarchitektur Implementierung von Remote-Objekten Parameterübergabe Callbacks Distributed Garbage Collection Verteilung und Nachladen von Code Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 13
13 Realisierung eines Remote-Objekts Interfaces und Klassen Interface Spezifikation für Remote-Objekt muss java.rmi.remote erweitern definiert die sichtbaren Methoden des Remote-Objekts jede Methode muss eine RemoteException werfen Server-Objekt muss Interface implementieren muss an das RMI System exportiert werden Stub-Objekt (kann ab Java 1.5 durch Dynamic- Proxy ersetzt werden) wird mit rmic erzeugt implementiert Interface Skeleton-Objekt (nur bei Java 1.1 verwendet) wird mit rmic erzeugt erweitert Basisklasse java.rmi.server.skeleton ab Java 1.5 auch mittels Dynamic-Proxy Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 14
14 Beispiel Bank-Server Im folgenden Beispiel wird anhand eines einfachen Bank-Servers die Realisierung eines Client-Server-Programms veranschaulicht Folgende Schritte sind dabei durchzuführen: Erstellen Starten Definition eines Interfaces für das Remote-Objekt Implementierung des Interfaces für den Server Generierung von Stub- und Skeleton-Klassen mit rmic (ab 1.5 nicht mehr nötig) Implementierung des Server-Programms, welches das Server-Objekt anlegt und beim RMI registriert Realisierung eines Client-Programms, welches auf das Server-Objekt zugreift und dieses verwendet Starten des rmiregistry (ab 1.5 nicht mehr nötig) Starten des Server-Programms Starten des Client-Programms Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 15
15 Beispiel Bank-Server: Interface Bank Interface Bank definiert Methoden für Zugriffe auf Konten package bank.common; import java.rmi.remote; import java.rmi.remoteexception; public interface Bank extends Remote { public static final int PORT = 1099; public long getbalance(int account) throws RemoteException; RemoteExceptions für alle Remote-Methods notwendig! public void deposit(int account, long amount) throws RemoteException; public void transfer(int from, int to, long amount) throws RemoteException; Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 16
16 Beispiel Bank-Server: BankImpl Klasse BankImpl stellt eine entsprechende Implementierung von Bank bereit package bank.server; import java.rmi.remoteexception; import java.rmi.server.unicastremoteobject; import bank.common.bank; Constructor mit RemoteException! public class BankImpl extends UnicastRemoteObject implements Bank { private long[] accounts = new long[100]; protected BankImpl() throws RemoteException { super(); public synchronized long getbalance(int account) throws RemoteException { return accounts[account]; public synchronized void deposit(int account, long amount) throws RemoteException { accounts[account] += amount; public synchronized void transfer(int from, int to, long amount) throws RemoteException { accounts[from] -= amount; accounts[to] += amount; Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 17
17 Beispiel Bank-Server: Stub und Skeleton Stub- und Skeleton-Klassen müssen nicht geschrieben werden Sie können durch das Programm rmic automatisch generiert werden rmic wird mit Server- Implementierungsklasse aufgerufen Microsoft Windows XP rmic <options> <class names> where <options> includes: -keep Do not delete intermediate generated source files -g Generate debugging info -depend Recompile out-of-date files recursively -nowarn Generate no warnings -verbose Output messages about what the compiler is doing -classpath <path> Specify where to find input source and class files -d <directory> Specify where to place generated class files -J<runtime flag> Pass argument to the java interpreter -v1.1 Create stubs/skeletons for JDK 1.1 stub protocol version -vcompat (default) Create stubs/skeletons compatible with both JDK 1.1 and Java 2 stub protocol versions -v1.2 Create stubs for Java 2 stub protocol version only > rmic keep BankImpl public final class BankImpl_Stub extends java.rmi.server.remotestub implements Bank, java.rmi.remote {... public final class BankImpl_Skel implements java.rmi.server.skeleton {... Achtung: kann ab Java 1.5 gänzlich entfallen! Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 18
18 Beispiel Bank-Server: Server-Programm Server-Programm hat folgende Aufgaben: erzeugen des Server-Objekts exportieren des Server-Objekts an das RMI Registrieren des Server-Objekts unter einem RMI-URL mit Registry package bank.server; import java.rmi.registry.locateregistry; import java.rmi.registry.registry; import bank.common.bank; public class BankServer { public BankServer() { try { Bank bank = new BankImpl(); Registry reg = LocateRegistry.createRegistry(Bank.PORT); reg.bind("bank", bank); catch (Exception e) { System.out.println("Trouble: " + e); public static void main(string args[]) { new BankServer(); Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 19
19 Beispiel Bank-Server: Client-Programm Client-Programm wird: sich über den Registry mit dem URL das Remote-Objekt holen das Remote-Objekt verwenden (dabei direkt den Stub aufrufen) eine Reihe von Exceptions abfangen package bank.client; import java.rmi.*; import bank.common.bank; public class BankClient { Name des Servers, z.b. "localhost" public static void main(string[] args) { try { Registry reg = LocateRegistry.getRegistry( Server Adr ", Bank.PORT); Bank bank = (Bank) reg.lookup("bank"); bank.deposit(1, 10000); bank.deposit(2, 20000); bank.transfer(1, 2, 3000); System.out.println(bank.getBalance(1)); System.out.println(bank.getBalance(2)); catch (Exception re) { Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 20
20 Exportieren von Server-Objekten Server-Objekte müssen bei ihrer Erzeugung an das RMI exportiert (bekannt gemacht) werden Dies kann auf zwei Arten passieren Ableiten von Klasse UnicastRemoteObject (wie im letzten Beispiel) mit static-methode exportobject von Klasse UnicastRemoteObject static RemoteStub exportobject(remote obj) throws RemoteException static Remote exportobject(remote obj, int port) throws RemoteException Port 0 bedeutet, dass Port vom System gewählt wird. public class BankImpl implements Bank {... public class BankServer { public BankServer() { try { Bank bank = new BankImpl(); Registry reg = LocateRegistry.createRegistry(PORT); RemoteStub bstub = UnicastRemoteObject.export(bank); reg.bind("bank", bstub); catch (Exception e) { System.out.println("Trouble: " + e);... Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 21
21 rmiregistry und Naming (alte Version) Starten des RMIRegistry-Programms Server: import java.rmi.registry.locateregistry; import java.rmi.registry.registry; public class BankServer { public BankServer() { try { Bank bank = new BankImpl(); Naming.rebind("rmi://localhost:1099/ Bank", bank);... Client: Microsoft Windows XP > rmiregistry public class BankClient { public static void main(string[] args) { try { Bank bank = (Bank) Naming.lookup( "rmi://localhost:1099/"bank");... Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 22
22 RMI Exkurs: Dynamic Proxy Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 24
23 Exkurs: Dynamic Proxy package java.lang.reflect dynamisch erzeugter Proxy implementiert Liste von Interfaces wird durch statischer Methode Proxy.newProxyInstance erzeugt public class Proxy { public static Object newproxyinstance(classloader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentException; Implementierte Interfaces InvocationHandler Anwendung: Foo f = (Foo)Proxy.newProxyInstance(null, new Class[] {Foo.class, handler); Erzeugtes Proxy-Objekt implementiert Interfaces, ruft aber InvocationHandler auf public interface InvocationHandler { Object invoke(object proxy, Method method, Object[] args) throws Throwable InvocationHandler soll Indirektion realisieren Reflection API Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 25
24 Beispiel Dynamic Proxy: TraceHandler (1/2) TraceHandler realisiert InvocationHandler zuerst Trace-Ausgabe dann Aufruf der eigentlichen Methode class TraceHandler implements InvocationHandler { private Object target; private PrintStream tracelog; public TraceHandler(Object target, PrintStream tracelog) { this.target = target; this.tracelog = tracelog; public Object invoke(object proxy, Method m, Object[] args) throws Throwable { tracelog.print(target + "." + m.getname() + "("); if (args!= null) { for (int i = 0; i < args.length; i++) { tracelog.print(args[i]); if (i < args.length 1) tracelog.print(", "); tracelog.println(")"); return m.invoke(target, args); Ausgabe der Traceinfo Aufruf der eigentlichen Methode Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 26
25 Beispiel Dynamic Proxy: TraceHandler (2/2) Test mit Proxy für Integer-Werte mit Trace der compareto-methode des Comparable-Interfaces public class ProxyTest { public static void main(string[] args) { Object[] elements = new Object[1000]; // fill elements with proxies for the integers for (int i = 0; i < elements.length; i++) { Integer value = i + 1; Class[] interfaces = value.getclass().getinterfaces(); InvocationHandler handler = new TraceHandler(value, System.out); Object proxy = Proxy.newProxyInstance(null, interfaces, handler); elements[i] = proxy; Integer key = 547; // search for the key int result = Arrays.binarySearch(elements, key); // print match if found if (result >= 0) System.out.println(elements[result]); { Comparable.class 500.compareTo(547) 750.compareTo(547) 625.compareTo(547) 562.compareTo(547) 531.compareTo(547) 546.compareTo(547) 554.compareTo(547) 550.compareTo(547) 548.compareTo(547) 547.compareTo(547) Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 27
26 RMI Motivation Grundarchitektur Implementierung von Remote-Objekten Parameterübergabe Callbacks Distributed Garbage Collection Verteilung und Nachladen von Code Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 28
27 Parameterübergabe und Rückgabewerte Bei RMI sind folgende Arten der Parameterübergabe und Rückgabewerte zu unterscheiden: Basisdatentypen (int, double, boolean, etc.) Werte werden über das Netzwerk übertragen Serialisierbare Objekte (implementieren Interface Serializable) Objekte werden serialisiert über das Netzwerk übertragen und auf der anderen Seite eine Kopie aufgebaut Remote-Objekte (implementieren Interface Remote) Es wird auf der empfangenden Seite ein Stub für das Objekt aufgebaut alle anderen (nicht serialisierbar, nicht Remote) diese können nicht als Parameter übergeben werden Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 29
28 Basisdatentypen Auf Senderseite werden Werte gemarshaled und über das Netzwerk gesendet Auf der Empfängerseite werden die Werte wieder entpackt und an Client geliefert client server_stub server_skeleton server getvalue() getvalue() JVM 1 JVM 2 Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 30
29 Serialisierbare Objekte Inhalt des Objekts wird über den Java-Serialisierungsmechanismus serialisiert und über das Netzwerk übertragen auf der Empfängerseite wird ein neues Objekt mit gleichem Inhalt aufgebaut Problem, wenn Klasse des serialisierten Objekts auf Empfängerseite nicht bekannt ist! siehe Nachladen von Code client server_stub server_skeleton server getlist() getlist() ArrayList (id = 37) ArrayList (id = 14) ArrrayList <1, 2, 3, > JVM 1 JVM 2 Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 31
30 Remote-Objekte Es wird kein Wert übergeben sondern über das RMI-System wird eine Remote-Referenz auf das Server- Objekt übermittelt auf der Clientseite wird dafür ein Stub erzeugt und eine Referenz auf den Stub dem Empfänger übergeben client server_stub server_skeleton server getremotemember() getremotemember() create() remote_stub remote_stub remote remote Remote-Reference to remote JVM 1 JVM 2 Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 32
31 Beispiel: Car und CarStore Remote-Interfaces Car und CarStore public interface Car extends Remote { public int getnr() throws RemoteException; public interface CarStore extends Remote { public Car getcar(int nr) throws RemoteException; public void returncar(car car) throws RemoteException; Implementierungen CarImpl und CarStoreImpl public class CarImpl extends UnicastRemoteObject implements Car { private final int nr; protected CarImpl(int nr) throws RemoteException { this.nr = nr; public int getnr() throws RemoteException { return nr; public class CarStoreImpl extends UnicastRemoteObject implements CarStore { private final Car[] cars; public CarStoreImpl() throws RemoteException {... public synchronized Car getcar(int nr) throws RemoteException { return cars[nr]; public synchronized void returncar(car car) throws RemoteException {... Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 33
32 Beispiel: Car und CarStore CarStoreServer Applikation public class CarStoreServer { private static CarStore store; public static void main(string[] args) throws Exception { store = new CarStoreImpl(); store.cars[0] = new CarImpl(0); store.cars[1] = new CarImpl(1); store.cars[2] = new CarImpl(2); Registry reg = LocateRegistry.createRegistry(Registry.REGISTRY_PORT); reg.bind("carstore", store); CarStoreClient public class CarStoreClient { public static void main(string[] args) { try { Registry reg = LocateRegistry.getRegistry(Registry.REGISTRY_PORT); CarStore cs = (CarStore) reg.lookup("carstore"); Car c1a = cs.getcar(1);... Remote-Objekt catch (Exception e) {... Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 34
33 == und equals bei Remote-Referenzen (1/2) == bei Remote-Referenzen bei jedem Remote-Zugriff werden neue Stub-Objekte angelegt Objekte sind nicht == public class CarStoreClient { public static void main(string[] args) { try {... Car c1a = cs.getcar(1); Car c1b = cs.getcar(1); false!!! equals if (c1a == c1b)... Stub implementiert equals entsprechend Objekte sind equals, wenn selbes Server-Objekt public class CarStoreClient { public static void main(string[] args) { try {... Car c1a = cs.getcar(1); Car c1b = cs.getcar(1); true!!! if (c1a.equals(c1b))... Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 35
34 == und equals bei Remote-Referenzen (2/2) Car implementiert equals public class CarImpl extends UnicastRemoteObject implements Car {... public synchronized boolean equals(object obj) { if (obj instanceof CarImpl) { return nr == ((CarImpl) obj).nr; return false; Server CarStore erzeugt immer neue CarImpl-Objekte public class CarStoreImpl extends UnicastRemoteObject implements CarStore{... public synchronized Car getcar(int nr) throws RemoteException { return new CarImpl(nr); Diese Objekte werden am Client nicht als equals erkannt public class Client { neue Car-Objekt mit new erzeugt public static void main(string[] args) throws RemoteException { Registry reg = LocateRegistry.getRegistry(2222); CarStore cs = (CarStore) reg.lookup("carstore"); Car c1a = cs.getcar(1); Car c1b = cs.getcar(1); if (c1a.equals(c1b)) false!!! Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 36
35 Remote-Referenz als Parameter Remote-Referenz als Parameter von Remote-Methode Client ruft Remote-Methode mit Remote-Referenz auf am Server wird ein Stub für das Remote-Stub am Client erzeugt Verbindung zum ursprünglichen Remote-Objekt am Server nicht vorhanden!! Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 37
36 Beispiel: Car und CarStore Client ruft returncar mit Remote-Referenz auf public class Client { public static void main(string[] args) throws RemoteException { Registry reg = LocateRegistry.getRegistry(2222); CarStore cs = (CarStore) reg.lookup("carstore"); Car c1a = cs.getcar(1); cs.returncar(c1a); Remote-Stub!! Am Server wird Stub aufgebaut public class CarStoreImpl extends UnicastRemoteObject implements CarStore { public synchronized Car getcar(int nr) throws RemoteException { return cars[nr]; public v synchronized oid returncar(car car) throws RemoteException { if (car.equals(cars[car.getnr()]))... Keine Remote-Stubs als Parameter übergeben! Besser mit IDs, etc. arbeiten! false!! Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 38
37 Erweitertes Beispiel BankManager BankManager ist ein Remote-Objekt, das Zugriff auf Kunden (Customer) und Konten (Accounts) bietet Sowohl Account als auch Customer sind Remote-Objekte BankManager bietet den Einstiegspunkte und wird als einziges Objekt registiert Vom BankManager holt sich das Client-Programm die weiteren Remote- Objekte Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 39
38 Beispiel BankManager: Remote Interfaces public interface Account extends Remote { public int getid() throws RemoteException; public BankManager getbankmanager() throws RemoteException; public Customer getcustomer() throws RemoteException; public long getbalance() throws RemoteException; public long withdraw(long amount) throws RemoteException; public void deposit(long diff) throws RemoteException; public interface Customer extends Remote { public BankManager getbankmanager() throws RemoteException; public String getname() throws RemoteException; public Account[] getaccounts() throws RemoteException; public interface BankManager extends Remote { public Customer getcustomer(string name) throws RemoteException; public Customer createcustomer(string name) throws RemoteException; public Account getaccount(int accountnumber) throws RemoteException; public Account createaccount(customer customer) throws RemoteException; public void transfer(int from, int to, long amount) throws RemoteException; Remote-Objekte Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 40
39 Beispiel BankManager: BankManagerImpl BankManager verwaltet Mengen von Kunden und Konten BankManager erlaubt Zugriff auf Konto und Kunde public class BankManagerImpl extends UnicastRemoteObject implements BankManager { private static int id = 0; private final Map<Integer, Account> accounts; private final Map<String, CustomerImpl> customers; public BankManagerImpl() throws RemoteException { accounts = new HashMap<Integer, Account>(); customers = new HashMap<String, public synchronized Customer getcustomer(string name) throws RemoteException { return public synchronized Customer createcustomer(string name) throws RemoteException { CustomerImpl c = new CustomerImpl(name, this); customers.put(name, c); return customers.get(name);... Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 41
40 Beispiel BankManager: BankManagerImpl BankManager verwaltet Mengen von Kunden und Konten BankManager erlaubt Zugriff auf Konto und public synchronized Account getaccount(int id) throws RemoteException { return public synchronized Account createaccount(customer c) throws RemoteException { id++; CustomerImpl customer = customers.get(c.getname()); Account a = new AccountImpl(id, this, customer); accounts.put(id, a); customer.accounts.add(a); return public synchronized void transfer(int from, int to, long amount) throws RemoteException { Account afrom = getaccount(from); Account ato = getaccount(to); afrom.withdraw(amount); ato.deposit(amount); Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 42
41 Beispiel BankManager: CustomerImpl public class CustomerImpl extends UnicastRemoteObject implements Customer { private final String name; private final BankManager bank; final List<Account> accounts; protected CustomerImpl(String name, BankManager bank) throws RemoteException { super(); this.name = name; this.bank = bank; this.accounts = new public BankManager getbankmanager() throws RemoteException { return public String getname() throws RemoteException { return public synchronized Account[] getaccounts() throws RemoteException { return accounts.toarray(new Account[0]); Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 43
42 Beispiel BankManager: AccountImpl public class AccountImpl extends UnicastRemoteObject implements Account { private final int id; private final BankManager bank; private final Customer customer; private long balance; public AccountImpl(int id, BankManager bank, Customer customer) throws RemoteException { super(); this.id = id; this.bank = bank; this.customer = customer; balance = 0L; listeners = new public int getid() throws RemoteException { return public synchronized BankManager getbankmanager() throws RemoteException { return public synchronized Customer getcustomer() throws RemoteException { return customer;... Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 44
43 Beispiel BankManager: public synchronized long getbalance() throws RemoteException { return public synchronized long withdraw(long diff) throws RemoteException { synchronized (this) { balance = balance - diff; fireaccountchangedevent(); return public synchronized void deposit(long diff) throws RemoteException { synchronized (this) { balance = balance + diff; fireaccountchangedevent(); Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 45
44 Beispiel BankManager: Server-Programm Server-Programm legt BankManager an und registriert diesen als einziges Objekt public class BankServer { private static BankManager bank; private static void start() throws Exception { bank = new BankManagerImpl(); Registry reg = LocateRegistry.createRegistry(Registry.REGISTRY_PORT); reg.bind("bank", bank); System.out.println("Server started on port " + Registry.REGISTRY_PORT); public static void main(string[] args) throws Exception { start(); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); do { System.out.println("Press x for exit."); while (!"x".equals(in.readline())); System.exit(0); Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 46
45 Beipiel BankManager: Client-Programm Client-Programm holt sich BankManager greift damit auf Account-Objekte und Customer-Objekte zu public class BankClient { static final String serverip = "localhost"; static final int serverport = Registry.REGISTRY_PORT; static private BankManager bank; public static void main(string[] args) { try { Registry reg = LocateRegistry.getRegistry(serverIP, serverport); bank = (BankManager)reg.lookup("Bank"); Customer c1 = bank.createcustomer("hans"); Customer c2 = bank.createcustomer("franz"); Account a1 = bank.createaccount(c1); Account a2 = bank.createaccount(c2); Account a1 = c1.getaccounts()[0]; Account a2 = c2.getaccounts()[0]; a1.deposit(1000); a2.deposit(2000); bank.transfer(a1.getid(), a2.getid(), 100); catch (Exception exc) { exc.printstacktrace(); Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 47
46 RMI Motivation Grundarchitektur Implementierung von Remote-Objekten Parameterübergabe Callbacks Distributed Garbage Collection Verteilung und Nachladen von Code Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 48
47 Callbacks In machen Fällen ist es notwendig, dass der Server dem Client eine Meldung schickt. z.b. Benachrichtung über Änderungen In diesem Fall sind die Rolle von Client und Server zu vertauschen am Client muss ein Remote-Objekt existieren eine Remote-Referenz wird dem Server übergeben am Server wird ein Stub für das Remote-Client-Objekt angelegt Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 49
48 Beispiel BankManager: Remote Change Notification Remote-Listener-Interface für Client public interface RemoteAccountListener extends Remote { public void accountchanged(remoteaccountevent e) throws RemoteException; Account wird um Remote-Methode addaccountlistener erweitert public interface Account extends Remote { public void addremoteaccountlistener(remoteaccountlistener l) throws RemoteException; public void removeremoteaccountlistener(remoteaccountlistener l) throws RemoteException; public class AccountImpl extends UnicastRemoteObject implements Account public void addaccountlistener(accountlistener l) throws RemoteException { synchronized (listeners) { public void removeaccountlistener(accountlistener l) throws RemoteException Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 50
49 Beispiel BankManager: Remote Change Notification Der Client muss RemoteAccountListener implementieren und anmelden public class BankClient extends UnicastRemoteObject { public BankClient(BankManager bm) throws RemoteException { super(); this.bm = bm; // add client as account listener at the bank manager Account a = bm.getaccount(1); a.addremoteaccountlistener(accountwatcher); a.removeremoteaccountlistener(accoutwatcher); private AccountWatcher accountwatcher = new AccountWatcher(); private static class AccountWatcher extends UnicastRemoteObject implements AccountListener { public AccountWatcher() throws RemoteException { super(); public void accountchanged(accountchangedevent evt) throws RemoteException { ; Nicht vergessen: Abmelden am Ende! (siehe Distributed Garbage Collection) Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz 51
Remote-Objekte. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1
Remote-Objekte Motivation Architektur Client und Server-Implementierung Parameterübergabe Distributed Garbage Collection Verteilung und Nachladen von Code Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H.
MehrRemote Method Invocation
Remote Method Invocation Aufruf von Methoden über die Grenzen der VM hinweg. Javaprozesse der rufenden und gerufenen Methode können auf verschiedenen Hosts laufen. Eine RMI-Applikation besteht aus dem
MehrJava RMI Remote Method Invocation
Java RMI Remote Method Invocation Ziel: Aufruf von Instanzmethoden entfernter Objekte basierend auf Java. Paket: java.rmi und Unterpakete Topologie: RMI Registry RMI Server RMI Client Der Server registriert
MehrPraktikum aus Softwareentwicklung 2, Stunde 8
Praktikum aus Softwareentwicklung 2, Stunde 8 Lehrziele/Inhalt 1. Remoting Remoting Über Remoting können Objekte über JavaVMs hinweg miteinander kommunizieren. Das ist auch mit Socket-Programmierung möglich.
MehrMobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste
MehrAnleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)
Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite
MehrJava-Programmierung. Remote Method Invocation - RMI
Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig
MehrRemote-Objekte. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network
Remote-Objekte Motivation Architektur Client und Server-Implementierung Parameterübergabe Distributed Garbage Collection Verteilung und Nachladen von Code Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H.
MehrRemote-Objekte. Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1. JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network
Remote-Objekte Motivation Architektur Client und Server-Implementierung Parameterübergabe Distributed Garbage Collection Verteilung und Nachladen von Code Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H.
MehrRMI - Remote Method Invocation
RMI - Remote Method Invocation JOHANNES KEPLER UNIVERSITY LINZ Research and teaching network Pratikum SWE 2 Institut für Systemsoftware, Johannes Kepler Universität Linz RMI Motivation Grundarchitektur
MehrThemen. Web Service - Clients. Kommunikation zw. Web Services
Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur
MehrMobile und Verteilte Datenbanken
Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2010/2011 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Java Remote Method Invocation (RMI) Realisierung
MehrJava Remote Method Invocation (RMI)
Java Remote Method Invocation (RMI) Alexander Petry 13. Mai 2003 engl.: Entfernter Methodenaufruf 1 Übersicht 1. Einleitung 2. RMI Interfaces und Klassen 3. Parameterübergabe 4. Dynamisches Nachladen von
MehrVS Praktikum 03 Konzept
Darstellung der Architektur: Manager VS Praktikum 03 Konzept Account 3 3 7 6 NameServiceServer 4 5 2 1 2 1 Geldautomat Filiale Messagearten: Für jede unterschiedliche Message gibt es eine eigene Klasse:
Mehr9. Remote Method Invocation Grundlagen der Programmierung II (Java)
9. Remote Method Invocation Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006 Übersicht Grundlagen der Programmierung
MehrMotivation Architektur Client und Server-Implementierung Parameterübergabe Distributed Garbage Collection Verteilung und Nachladen von Code
Remote-Objekte Motivation Architektur Client und Server-Implementierung Parameterübergabe Distributed Garbage Collection Verteilung und Nachladen von Code Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H.
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrKonzepte von Betriebssystem-Komponenten Middleware RMI
Konzepte von Betriebssystem-Komponenten Middleware RMI Mario Kiefer 21. Januar 2005 1 Einführung RMI (Remote Method Invocation) ermöglicht es mit relativ einfachen Mitteln verteilte Anwendungen zu erstellen.
MehrMusterlösung Übungsblatt 2 Netzprogrammierung WS 05/06
Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Aufgabe 1 Bitte schreiben Sie ein RMI Objekt, das eine Person repräsentiert. Es soll die folgende Schnittstelle implementieren: public interface Person
MehrEinführung: Verteilte Systeme - Remote Method Invocation -
Einführung: Verteilte Systeme - - Prof. Dr. Michael Cebulla 11. Dezember 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 43 M. Cebulla Verteilte Systeme Gliederung 1 2 Architektur RMI Kommunikation
MehrRemote Method Invocation
Remote Method Invocation spezielle Technik aus dem Java-Umfeld Ausführung der Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VM s Aufruf
MehrClient/Server-Programmierung
Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 15. Oktober 2015 Betriebssysteme / verteilte
MehrClient/Server-Programmierung
Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 15. Oktober 2015 Betriebssysteme / verteilte
MehrSystemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007
Systemprogrammierung Projekt: Java RMI Wintersemester 2006 / 2007 Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 2 1. Einleitung
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrProgrammieren II. Remote Method Invocation (RMI) Heusch -- Ratz. Institut für Angewandte Informatik
Programmieren II Remote Method Invocation (RMI) Heusch -- Ratz KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Remote Method
MehrB Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion
1 Java 1.1 e B Java RMI orientierte Sprache e beschrieben in Klassendefinitionen und andere Datentypen: int, float, boolean, etc. referenzen Verweise auf e keine Zeiger, Adressen o.ä. B.1 B.2 1.1 e (2)
MehrDer lokale und verteilte Fall
Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf
Mehr8.1.5 Java RMI Remote Method Invocation
8.1.5 Java RMI Remote Method Invocation (http://java.sun.com/products/jdk/rmi ) (http://java.sun.com/j2se/1.5/docs/guide/rmi ) (http://java.sun.com/docs/books/tutorial/rmi ) (http://java.sun.com/developer/onlinetraining/rmi/rmi.html
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrKurzanleitung RMI-Beispiel: gettime Seite 1 / 7. RMI Projekt gettime 1
Kurzanleitung RMI-Beispiel: gettime Seite 1 / 7 Inhaltsverzeichnis RMI Projekt gettime 1 Schritt 1: Interface Klasse definieren 1 Schritt 2: Implementation Class definieren 2 Schritt 3: RMI Compiler erstellen
Mehr7 Remote Method Invocation (RMI)
7 Remote Method Invocation (RMI) Verteilte Java Anwendungen; Client/Server Architektur Vorläufige Version 188 c 2005 Peter Thiemann Server: Aufgaben erstellt remote objects Objekte, deren Methoden von
Mehr7.1.5 Java RMI Remote Method Invocation (http://java.sun.com/products/jdk/rmi) (http://java.sun.com/j2se/1.3/docs/guide/rmi/spec/rmitoc.
7.1.5 Java RMI Remote Method Invocation (http://java.sun.com/products/jdk/rmi) (http://java.sun.com/j2se/1.3/docs/guide/rmi/spec/rmitoc.html) bietet leider nur begrenzte Verteilungsabstraktion Unterstützung
MehrApplet Firewall und Freigabe der Objekte
Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable
MehrC Java RMI C.2 C.4. 1 Java. 1 Java (2) 1 Java (3) Objektorientierte Sprache. Objektorientierte Sprache (fortges.) Objektorientierte Sprache (fortges.
1 Java C Java RMI orientierte Sprache e und andere Datentypen: int, float, boolean, etc. referenzen Verweise auf e keine Zeiger, Adressen o.ä. Methodenaufruf bei vorhandener referenz Übergabe von Parametern
MehrÜbungen zu Softwaretechnik
Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 11 Dr. H. Ehler, S. Wagner 23. Januar 2004 Übungen zu Softwaretechnik Aufgabe 16 Qualitätseigenschaften Broker-Pattern Beurteilen Sie das in Aufgabe 15 benutzte
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
MehrB Java RMI B.1 B.2. 1 Java. 1.1 Objekte. Objektorientierte Sprache
B Java RMI B.1 1 Java 1.1 Objekte Objektorientierte Sprache Objekte beschrieben in Klassendefinitionen und andere Datentypen: int, float, boolean, etc. Objektreferenzen Verweise auf Objekte keine Zeiger,
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
MehrJava Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff
Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.
MehrHandbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen
Handbuch timecard Connector 1.0.0 Version: 1.0.0 REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Furtwangen, den 18.11.2011 Inhaltsverzeichnis Seite 1 Einführung... 3 2 Systemvoraussetzungen...
Mehr4D Server v12 64-bit Version BETA VERSION
4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und
MehrStep by Step Webserver unter Windows Server 2003. von Christian Bartl
Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrProblemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.
Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden
MehrWebService in Java SE und EE
Schlüsselworte Java, JAX-WS, JAX-RS, JAXB, XML. Einleitung WebService in Java SE und EE Wolfgang Nast MT AG Ratingen Es werden die Mölichkeiten von WebServices in Java SE und EE, mit SOAP und REST gezeigt.
MehrErstellen eines Office-COM-Add-In mit Visual Basic 2005 Express Edition
Erstellen eines Office-COM-Add-In mit Visual Basic 2005 Express Edition Neues Projekt (Klassenbibliothek) erzeugen Als Projektbezeichnung wählte ich BeispielComAddIn. Add-In-Starter-Klasse erstellen Die
MehrAssoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
MehrComtarsia SignOn Familie
Comtarsia SignOn Familie Handbuch zur RSA Verschlüsselung September 2005 Comtarsia SignOn Agent for Linux 2003 Seite 1/10 Inhaltsverzeichnis 1. RSA Verschlüsselung... 3 1.1 Einführung... 3 1.2 RSA in Verbindung
MehrSoftware Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015
Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
MehrObjectBridge Java Edition
ObjectBridge Java Edition Als Bestandteil von SCORE Integration Suite stellt ObjectBridge Java Edition eine Verbindung von einem objektorientierten Java-Client zu einer fast beliebigen Server-Komponente
MehrTesten mit JUnit. Motivation
Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen
MehrAnleitung zur Webservice Entwicklung unter Eclipse
Entwicklungsumgebung installieren Sofern Sie nicht an einem Praktikumsrechner arbeiten, müssen Sie ihre Eclipse-Umgebung Webservice-fähig machen. Dazu benötigen Sie die Entwicklungsumgebung Eclipse for
MehrSichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben
Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den
MehrDelegatesund Ereignisse
Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses
MehrRemote Method Invocation
Remote Method Invocation Spezielle Technik aus dem Java-Umfeld Ausführung von Methoden auf einem entfernten Rechner Analogon zum RPC (Remote Procedure Call) Zweck: Objekte in verschiedenen Java-VMs Aufruf
MehrFactory Method (Virtual Constructor)
Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte
MehrHow-to: Webserver NAT. Securepoint Security System Version 2007nx
Securepoint Security System Inhaltsverzeichnis Webserver NAT... 3 1 Konfiguration einer Webserver NAT... 4 1.1 Einrichten von Netzwerkobjekten... 4 1.2 Erstellen von Firewall-Regeln... 6 Seite 2 Webserver
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
MehrWebsites mit Dreamweaver MX und SSH ins Internet bringen
Websites mit Dreamweaver MX und SSH ins Internet bringen 1. Vorüberlegungen Dreamweaver stellt Funktionen bereit, um Websites im Internet zu veröffentlichen. Um diese Funktionen auf Servern des Rechenzentrums
MehrRemote Method Invocation (RMI)
Remote Method Invocation (RMI) Hier soll ein Überblick 1 über die RMI-Technologie der Java 2 Plattform gegeben werden. Inhaltsverzeichnis 1.Überblick...3 2.RMI Architektur...6 2.1.Überblick...6 2.2.RMI
MehrRemote- und Server-Programmierung. Dr. Wolfgang Süß Thorsten Schlachter
Remote- und Server-Programmierung Dr. Wolfgang Süß Thorsten Schlachter Remote Method Invocation (RMI) Servlets WebServices 2 Remote Method Invocation (RMI) Das Remote Method Invocation (RMI)-Framework
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrFolgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version 7.4.4. - Optional einen DHCP Server.
1. Dynamic Host Configuration Protocol 1.1 Einleitung Im Folgenden wird die Konfiguration von DHCP beschrieben. Sie setzen den Bintec Router entweder als DHCP Server, DHCP Client oder als DHCP Relay Agent
MehrE.1 Object Request Brokers
E Überblick über die 4. Übung E Überblick über die 4. Übung 1 Komponenten eines ORBs Lösungsskizze Aufgabe 2 RPC und ORB Aufrufsemantiken Hinweise Aufgabe 3 Kommunikationsschicht: tauscht Daten zwischen
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
MehrProgrammiermethodik. Übung 13
Programmiermethodik Übung 13 Sommersemester 2010 Fachgebiet Software Engineering andreas.scharf@cs.uni-kassel.de Agenda Vorstellung Musterlösung HA9 Mancala Showroom Client/Server Kommunikation in Java
MehrLokale Installation von DotNetNuke 4 ohne IIS
Lokale Installation von DotNetNuke 4 ohne IIS ITM GmbH Wankelstr. 14 70563 Stuttgart http://www.itm-consulting.de Benjamin Hermann hermann@itm-consulting.de 12.12.2006 Agenda Benötigte Komponenten Installation
MehrVerteilte Systeme. Verteilte Objektorientierte Systeme I. Prof. Dr. Oliver Haase
Verteilte Systeme Verteilte Objektorientierte Systeme I Prof. Dr. Oliver Haase 1 Überblick Verteilte Objektorientierte Systeme 1 RPC verteilte objektorientierte Architekturen Java RMI Verteilte Objektorientierte
MehrEinführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrEJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de
EJB Beispiel JEE Vorlesung 10 Ralf Gitzel ralf_gitzel@hotmail.de 1 Stundenkonzept Gemeinsame Übung Stoff der letzten Stunde wird gemeinsam in einem Beispiel umgesetzt Details werden nochmals erklärt bzw.
MehrSystem-Update Addendum
System-Update Addendum System-Update ist ein Druckserverdienst, der die Systemsoftware auf dem Druckserver mit den neuesten Sicherheitsupdates von Microsoft aktuell hält. Er wird auf dem Druckserver im
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrJavakurs 2013 Objektorientierung
Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
MehrSzenario 3: Service mit erweiterter Schnittstelle
2. Hintergrundverarbeitung in Android: Services und Notifications Szenarien für lokale Services Szenario 3: Service mit erweiterter Schnittstelle Ein Service bietet zusätzliche Methoden an, über die sich
MehrC Java RMI. 1 Java. Objektorientierte Sprache
Java RMI 1 1 Java Objektorientierte Sprache Objekte und andere Datentypen: int, float, boolean, etc. Objektreferenzen Verweise auf Objekte keine Zeiger, Adressen o.ä. Methodenaufruf bei vorhandener Objektreferenz
MehrJ Fernmethodenaufrufe Remote Method Invocation (RMI)
J Fernmethodenaufrufe Remote Method Invocation (RMI) ermöglicht Abstraktion in einem verteilten System Socket-Kommunikation Fernaufrufe (RPC) J Fernmethodenaufrufe Remote Method Invocation (RMI) keine
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrISi. ISi Technologie GmbH. MET -Schnittstelle zu Davis WeatherLink Version 5.7
ISi ISi Technologie GmbH MET -Schnittstelle zu Davis WeatherLink Version 5.7 Einleitung Die MET -Schnittstelle zur Davis -WeatherLink Software Version 5.7 oder höher erlaubt die Online-Uebernahme der Wetterdaten
MehrAutoresponder Unlimited 2.0
Anleitung zur Installation und Anwendung Autoresponder Unlimited 2.0 Anleitung zur Installation und Anwendung Wie Ihr Autoresponder Unlimited 2.0 funktioniert Den Autoresponder Unlimited 2.0 installieren
MehrInstallation OMNIKEY 3121 USB
Installation OMNIKEY 3121 USB Vorbereitungen Installation PC/SC Treiber CT-API Treiber Einstellungen in Starke Praxis Testen des Kartenlesegeräts Vorbereitungen Bevor Sie Änderungen am System vornehmen,
Mehr2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:
2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Configuring Terminal Services o Configure Windows Server 2008 Terminal Services RemoteApp (TS RemoteApp) o Configure Terminal Services Gateway
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrEr musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt
Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen
MehrKomponententechnologien Winter 2016/17. Komponenten. 2. Die Anfänge. Peter Sturm, Universität Trier 1
Komponenten 1 2. Die Anfänge 3 Peter Sturm, Universität Trier 1 Selbstzufrieden Anwendung Hardware 4 Oh? Da gibt es noch jemanden? Anwendung Anwendung TCP/IP Hardware Hardware 5 Peter Sturm, Universität
MehrFolgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:
Firewall für Lexware professional konfigurieren Inhaltsverzeichnis: 1. Allgemein... 1 2. Einstellungen... 1 3. Windows XP SP2 und Windows 2003 Server SP1 Firewall...1 4. Bitdefender 9... 5 5. Norton Personal
MehrAnleitung Captain Logfex 2013
Anleitung Captain Logfex 2013 Inhalt: 1. Installationshinweise 2. Erste Schritte 3. Client-Installation 4. Arbeiten mit Logfex 5. Gruppenrichtlinien-Einstellungen für die Windows-Firewall 1. Installationshinweis:
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
MehrRemote Methode Invocation (RMI) ETIS SS05
Remote Methode Invocation (RMI) ETIS SS05 Motivation Ablauf der Kommunikation Erstellung Remote-Service Zusammenfassung Gliederung 2 Motivation I RMI: Remote Method Invokation Möglichkeit verteilte Java-Anwendungen
MehrHBF IT-Systeme. BBU-BSK Übung 2 Stand: 24.08.2010
BBU-BSK Übung 2 Stand: 24.08.2010 Zeit Laborübung 45 min Erstellung von virtuellen Maschinen mit VMWare Player Eine neue virtuelle Maschine erstellen: Ab dem VMWare Player 3 kann man nicht nur virtuelle
MehrSS 2010. Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof.
SS 2010 Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1 Übungsblatt 1 Übung - Probeklausur SS 2010 Typ Prof.Humm Aufgabe : Bank-Verwaltungs-System In dieser Klausur werden
MehrKURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE
KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung...Seite 03 2. Zugriff auf Cloud Object Storage mit Cyberduck...Seite 04 3. Neuen Container
Mehr