Λειτουργία RMI και Ζητήματα Σχεδίασης

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Υλοποίηση Συστήματος Ψηφοφορίας με τη χρήση Java RMI
Advertisements

Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Νήματα στη Java Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Επανάληψη βασικών αρχών του αντικειμενοστρεφούς προγραμματισμού
Ε ΝΤΟΠΙΣΜΟΣ Κ ΙΝΟΥΜΕΝΩΝ Α ΝΤΙΚΕΙΜΕΝΩΝ ΠΑΡΟΥΣΙΑΣΗ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗΣ ΕΡΓΑΣΙΑΣ Βόγκλης Κωνσταντίνος Τσίπουρας Μάρκος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
Java A Crash Course in (Προσέγγιση μέσω UML)
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Ποιότητα Λογισμικού Ενότητα 2: Παραμετρικοί έλεγχοι στο JUnit. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό
ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα.
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΠΟΛΥΜΟΡΦΙΣΜΟΣ. ΑΝΑΚΕΦΑΛΑΙΩΣΗ Θεματολόγιο Κληρονομικότητα Παράδειγμα Κληρονομικότητα – Βελτιωμένο Παράδειγμα Ενθυλάκωση : public – private.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πολυμορφισμός.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 9: Κληρονομικότητα. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Εισαγωγή στη JAVΑ (μέρος Β’) Βασίλης Παπαταξιάρχης Μάθημα: Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα: Ιζαμπώ Καράλη Τμήμα Πληροφορικής.
Εισαγωγή στη Java (Μέρος B’) Για όσους γνωρίζουν C++ Βασίλης Στούμπος
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 6: Πίνακες και Παράμετροι στην main. Διδάσκων: Νικόλαος Θ Λιόλιος,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 8: Κατασκευαστές. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές) Ένα μεγάλο παράδειγμα.
Εισαγωγή στη C# Μαρίνος Θεμιστοκλέους Ανδρούτσου 150 Γραφείο 206 Τηλ Ώρες Γραφείου: Τετάρτη 5-6 μμ.
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Site: ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ.
ΟΣΣ2 - 4 Δεκεμβρίου 2005 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Εισαγωγή στον Προγ/μό Η/Υ
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Κατανεμημένα Συστήματα
Software Engineering for Web Applications
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κλάσεις και αντικείμενα
Wrapper Classes, Abstract Classes and Interfaces
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ (ΕΡΓΑΣΤΗΡΙΟ)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κινητά και Διάχυτα Συστήματα
Εισαγωγή στον Προγ/μό Υπολογιστών
Εισαγωγή στη Java Χαρακτηριστικά της Java Εργαλεία της Java
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
Εισαγωγή στη Java (Μέρος Α’)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Εξαιρέσεις [Exceptions]
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

Λειτουργία RMI και Ζητήματα Σχεδίασης Στούμπος Βασίλης stoumpos@di.uoa.gr Πανεπιστήμιο Αθηνών Τμήμα Πληροφορικής

Περίληψη Crash course σε Java. Παράδειγμα σε RMI. Ζητήματα σχεδίασης (κατανεμημένων) εφαρμογών. RMI. Σχεδιασμός.

Περίληψη - Java Crash course σε Java. Παράδειγμα σε RMI. Κλάσεις και αντικείμενα. Διαφορές με τη C++. Παράδειγμα σε RMI. Ζητήματα σχεδίασης (κατανεμημένων) εφαρμογών. RMI. Σχεδιασμός.

Κλάσεις στην Java Οι κλάσεις (classes) ορίζουν τύπους αντικειμένων. Τα αντικείμενα (objects) είναι στιγμιότυπα (instances) των κλάσεων. Οι κλάσεις ομαδοποιούνται σε μια ιεραρχία πακέτων (packages). package gr.uoa.di.stoumpos; public class Counter { private int value; public Counter(int v) { this.value = v; } public int getValue() { return this.value; public void increment() { this.value++;

Αντικείμενα στην Java Τα αντικείμενα (objects) είναι στιγμιότυπα (instances) των κλάσεων. Πρόσβαση στα αντικείμενα μόνο μέσω αναφορών (references). Πεδία αντικειμένων και πεδία κλάσεων (class/object fields). Garbage collecting. Counter a = new Counter(12); Counter b = new Counter(-12); for (int i=0; i< 10; i++) { a.increment(); } b.increment(); System.out.println( “Counter a value is ” + a.getValue()); “Counter b value is ” + b.getValue());

Πρόγραμμα Java Μία μόνο public κλάση σε κάθε αρχείο. Μεταγλώττιση με javac. Εκτέλεση με java. Υπάρχει main μέθοδος κλάσης. Ιδεατή Μηχανή (VM-Virtual Machine) /* Αρχείο: TestProg.java */ import gr.uoa.di.stoumpos; public class TestProg { public static void main( String[] args) { for(i=0; i<args.length; i++){ System.out.println( “arg[” + i + “]=” + args[i]); }

Εξαιρέσεις (Exceptions) στη Java Η εξαίρεση είναι ένα αντικείμενο μιας κλάσης. Εξαιρέσεις χρησιμοποιούνται σε εξαιρετικές περιπτώσεις. Η δυνατότητα εξαίρεσης (throw exception) δηλώνεται στις μεθόδους. Διαχείριση λαθών με try-catch μπλοκ. Εξαιρέσεις: Runtime Error Άλλες try { FileInputStream stream = new FileInputStream( new File(“foo.dat”)); } catch(FileNotFoundException fnfe) { // ... } catch(SecurityException se) { } catch(IOException ioe) { } catch(Throwable) { throw new MyException(); } finally { }

Αντικειμενοστρεφές Μοντέλο στη Java Κληρονομικότητα (inheritance) Μόνο απλή (όχι multiple inheritance από C++). Χρήση Interface: σαν κλάση χωρίς σώματα μεθόδων Πολυμορφισμός (polymorphism) Όπως στη C++. Strong-typed γλώσσα. Ενθυλάκωση (encapsulation) Τέσσερα επίπεδα περιορισμών (visibility scope): private, protected, public και package.

Περίληψη - RMI Crash course σε Java. Παράδειγμα σε RMI. Απλό παράδειγμα. Εγκατάσταση συστήματος. Ειδικές περιπτώσεις. Ζητήματα σχεδίασης (κατανεμημένων) εφαρμογών. RMI. Σχεδιασμός.

Τοπική και Απομακρυσμένη Κλήση Μεθόδου Που βρίσκεται το αντικείμενο; Πως γίνεται η κλήση; Ποιος αναλαμβάνει τις λεπτομέρειες της κλήσης;

Παράδειγμα RMI Τι θα πει απομακρυσμένη κλήση; Μια μέθοδος, κάποιου αντικειμένου, καλείται από κάποια άλλη. Διαφορετικός χώρος διευθύνσεων. Διαφορετικό μηχάνημα (δίκτυο). Τρόπος κλήσης κοινός με τοπική κλήση. Διαφοροποιούμε: Διεπαφή (interface). Υλοποίηση (implementation). Θα δούμε τον μετρητή σαν παράδειγμα.

Διεπαφή Μετρητή Όλες οι διεπαφές είναι εξειδικεύσεις της java.rmi.Remote διεπαφής. Όλες οι μέθοδοι μπορεί να δώσουν RemoteException. Το ίδιο interface πρέπει να χρησιμοποιεί και ο καλούμενος και ο καλών. import java.rmi.*; public interface Counter extends java.rmi.Remote { public void setValue(int v) throws RemoteException; public int getValue() public void increment() }

Υλοποίηση Μετρητή Η υλοποίηση επεκτείνει το java.rmi.UnicastRemoteObject και υλοποιεί το Counter. Μπορούν να οριστούν πεδία της υλοποίησης. Απαραίτητος default constructor. Οι υλοποιήσεις δεν επηρεάζονται από το είδος κλήσης. import java.rmi.*; public class CounterImpl extends java.rmi.UnicastRemoteObject implements Counter { int value = 0; public Counter() throws RemoteException { super(); } public void setValue(int v) this.value = v; //...

Εξυπηρέτης Μετρητή Απαιτείται να: Ο εξυπηρέτης τρέχει συνέχεια. Κατασκευαστεί το αντικείμενο εξυπηρέτης. Δεσμευθεί ένα «όνομα» για αυτό. Να συνδεθεί (bind) με μια διεύθυνση. Ο εξυπηρέτης τρέχει συνέχεια. Χρειάζεται να τρέχει το rmiregistry. import java.rmi.*; public class CounterServer { public static void main( String[] args) { Counter counter = null; String url = “rmi://localhost” + “:1099/MyNiceCounter”; try { counter = new Counter(); Naming.bind(url, counter); } catch(Exception e) { System.exit(-1); }

Απομακρυσμένη Κλήση Μετρητή Απαιτείται να: Αναγνωρισθεί το «όνομα» του αντικειμένου. Αναφορά στο απομακρυσμένο αντικείμενο. Χρήση της αναφοράς. Πολλοί πελάτες εκτελούνται ταυτόχρονα. Χρειάζεται να τρέχει ο εξυπηρέτης. Counter counter = null; String url = “rmi://localhost” + ":1099/MyNiceCounter”; try { counter = Naming.lookup(url); counter.increment(); System.out.println( “Counter a value is ” + counter.getValue()); } catch(Exception e) { //... }

Επίτευξη Απομακρυσμένης Κλήσης Λεπτομέρειες της κλήσης: Κώδικας που γεννιέται αυτόματα. Stubs και Skeletons. Πέρασμα παραμέτρων και αποτελεσμάτων. Οι διεπαφές έχουν όλη την πληροφορία. Marshalling/Unmarshalling. skeleton stub

Εγκατάσταση Συστήματος Μεταγλωττίζουμε όλες τις κλάσεις. Χρήση javac. Κατασκευάζουμε τον αυτόματο κώδικα. Χρήση rmic. Μοιράζουμε κλάσεις στις τοποθεσίες που θα χρειαστούν jar Εκτελούμε (σε χωριστά shells): rmiregistry java gr.uoa.di. stoumpos.CounterServer Java gr.uoa.di. stoumpos.CounterClient

Περίληψη – Σχεδιασμός (RMI) Crash course σε Java. Παράδειγμα σε RMI. Ζητήματα σχεδίασης (κατανεμημένων) εφαρμογών. RMI. Εξαιρέσεις. Παράμετροι. Σχεδιασμός.

Περίληψη – Σχεδιασμός (RMI) Crash course σε Java. Παράδειγμα σε RMI. Ζητήματα σχεδίασης (κατανεμημένων) εφαρμογών. RMI. Εξαιρέσεις. Παράμετροι. Σχεδιασμός.

Πέρασμα Παραμέτρων στο RMI Πρωτογενείς Τύποι: int, char, double,… Αντιγραφή των τιμών. Αντικείμενα Java. Απομακρυσμένα RMI αντικείμενα.

Πέρασμα Αντικειμένων στο RMI Αντικείμενα Java: Πρέπει να είναι serializable! Υλοποιούν την διεπαφή java.io.Serializable. Μεταφορά στιγμιότυπου σε σειρά από bytes. Όλα τα μέλη ενός «σειριοποιήσιμου» αντικειμένου πρέπει να είναι «σειριοποιήσιμα». Τα πεδία των κλάσεων δεν λαμβάνονται υπόψη στη σειριοποίηση. Αντιγραφή bytes, και αναδόμηση στον προορισμό. Αντιγραφή ολόκληρων αντικειμένων.

Πέρασμα RMI Αντικειμένων στο RMI Στην κατασκευή (constructor) τους τα αντικείμενα αυτά είναι έτοιμα να δεχθούν απομακρυσμένη κλήση. Δεν έχουν συνδεθεί (bind) με όνομα πιθανώς. Κατασκευή απομακρυσμένων αναφορών στα αντικείμενα. Αντιγραφή αναφοράς.

Διαχείριση Λαθών Κάθε φορά που κάτι πάει στραβά έχουμε εξαίρεση (exception). Δύο ειδών εξαιρέσεις: Εφαρμογής. Συστήματος. Επιτρέπεται να έχουμε στην διεπαφή και εξαιρέσεις εφαρμογής. Μήπως είναι καλύτερο να χρησιμοποιήσουμε wrappers; Η κλάση Exception υλοποιεί το Serialized. Μία εξαίρεση μπορεί να έχει εμφωλιασμένες εξαιρέσεις (nested exceptions).

Περίληψη – Σχεδιασμός Crash course σε Java. Παράδειγμα σε RMI. Ζητήματα σχεδίασης (κατανεμημένων) εφαρμογών. RMI. Σχεδιασμός. Συγχρονισμός. Callbacks. Blocking/Callbacks/Polling. Push και Pull.

Σχεδιασμός Συγχρονισμού Κατασκευάζουμε ένα αντικείμενο που κρατά Strings που φτάνουν σε αυτό. Ζητούμε τα strings με δείκτες. Δεν αφαιρούμε strings ποτέ. public interface List { public void addString( String s) throws ...; public String getString( int i) throws ...; public int getNumOfStrings() throws RemoteException; }

Σχεδιασμός Συγχρονισμού (συν.) Στην υλοποίηση κρατούμε τα strings σε ένα πίνακα. Σίγουρα θα χάσουμε strings! //... public void addString( String s) { if (this.counter) { throw new Exception( “No space!”); } this.stringArray[ this.counter++] = s; // ...

Σχεδιασμός Συγχρονισμού (συν.) Συγχρονίζουμε την πρόσβαση στον πόρο (resource). Χρησιμοποιούμε τον synchronized μηχανισμό της Java. Προσοχή στην έκταση συγχρονισμού! Προσοχή στο κοινό σημείο συγχρονισμού! //... public void addString( String s) { synchronized( this.stringArray) { if (this.counter) { throw new Exception( “No space!”); } this.stringArray[ this.counter++] = s; // ...

Τρόπος Κλήσης Όλες οι RMI κλήσεις είναι σύγχρονες (synchronous/blocking). Ο καλούμενος αναστέλλει την εκτέλεσή του μέχρι να εκτελεστεί η απομακρυσμένη μέθοδος. Μπορούμε να έχουμε κλήση ασύγχρονη; Σε επίπεδο σχεδίασης ναι. Δύο λύσεις: Callbacks Polling

Blocking Κλήση Client Stub Skeleton Server idle

Callback Κλήση Client Callback Server thread idle other processing create thread idle other processing

Polling μετά την Κλήση Client Request Server thread other processing create poll updte poll other processing

Άλλες Τεχνικές Push και Pull Thread Pools Άλλα;

Αναφορές Java RMI Architecture (πάρα πολλά – ένα όχι τρομερό) Άλλα “Thinking in Java”, Bruce Eckel, διαθέσιμο από το www.bruceeckel.com. “The Java Tutorial”, Sun, διαθέσιμο από το http://java.sun.com/docs/books/tutorial/index.html. RMI “Fundamentals of RMI”, jGuru, διαθέσιμο (μαζί με άλλα) από το http://developer.java.sun.com/developer/onlineTraining/. Architecture (πάρα πολλά – ένα όχι τρομερό) “Pattern-Oriented Software Architecture”, Douglas C. Schmidt, διαθέσιμο από (σύνδεσμος powerpoint slides) το http://www.cs.wustl.edu/~schmidt/POSA/. Άλλα Το www.google.com είχει πολύ καλά αποτελέσματα όταν έψαξα.