Κατανεμημένα Συστήματα με Java. Ενότητα # 16: Κατανεμημένα συστήματα αντικειμένων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Σχετικά έγγραφα
Κινητά και Διάχυτα Συστήματα. Ενότητα # 4: Απομακρυσμένα αντικείμενα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Σύστηµα Java RMI. Κατανεµηµένα Συστήµατα 17-1

Κατανεµηµένα Αντικείµενα 16-1

Τεχνολογία Πολυμέσων. Ενότητα # 2: Εφαρμογές πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Σύστηµα CORBA. Κατανεµηµένα Συστήµατα 18-1

Κατανεμημένα Συστήματα με Java. Ενότητα # 4: Αμοιβαίος αποκλεισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κατανεμημένα Συστήματα. Ενότητα # 11: Μηνυματοστρεφές ενδιάμεσο λογισμικό Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 1: Εισαγωγή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κατανεμημένα Συστήματα. Ενότητα # 2: Εκλογή αρχηγού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κατανεμημένα Συστήματα. Ενότητα # 4: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κινητά και Διάχυτα Συστήματα. Ενότητα # 8: Εκλογή αρχηγού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Δομημένος Προγραμματισμός

Κατανεμημένα Συστήματα με Java. Ενότητα # 18: Υπηρεσίες Ιστού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Τεχνολογία Πολυμέσων. Ενότητα # 17: Πρωτόκολλα μετάδοσης Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Remote Method Invocation (RMI)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Τεχνολογία Πολυμέσων. Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Διαδικαστικός Προγραμματισμός

Ειδικά Θέματα Προγραμματισμού

Κινητά και Διάχυτα Συστήματα. Ενότητα # 6: Εφαρμογές DHT Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Οντοκεντρικός Προγραμματισμός

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 6: Κατανομή φόρτου Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Ειδικά Θέματα Δικτύων Ι

Κινητά και Διάχυτα Συστήματα. Ενότητα # 10: Κατανομή φόρτου Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κατανεμημένα Συστήματα με Java. Ενότητα # 14: Κατανεμημένα συστήματα αποθήκευσης Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Δομημένος Προγραμματισμός

Τεχνολογία Πολυμέσων. Ενότητα # 19: Τηλεδιάσκεψη Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Τεχνολογία Πολυμέσων. Ενότητα # 16: Πολυεκπομπή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Απομακρυσμένα αντικείμενα (Remote Objects) Κατανεμημένα Συστήματα 1

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Αλληλεπίδρασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Φιλικές συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 8: Ταυτοχρονισμός και νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Ειδικά Θέματα Δικτύων ΙΙ

Εισαγωγή. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο Κατανεµηµένα συστήµατα αρχείων. Μέρη κατανεµηµένου συστήµατος αρχείων

Τεχνολογία Πολυμέσων. Ενότητα # 15: Συγχρονισμός πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Υπολογιστικά Συστήματα

Ιστορία της μετάφρασης

ικτύωσησε Java Κατανεµηµένα Συστήµατα 08-1

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Ειδικά Θέματα Προγραμματισμού

Δομημένος Προγραμματισμός

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Ενδεικτικές λύσεις ασκήσεων διαγραμμάτων περίπτωσης χρήσης (1ο Μέρος)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Σχεδίαση Δικτύων Υπολογιστών

Εισαγωγή στους Αλγορίθμους Ενότητα 7η

Εισαγωγή στους Αλγορίθμους

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις

Τεχνολογία Πολυμέσων. Ενότητα # 1: Εισαγωγή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Cretive Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπ

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 7: Πίνακες (Arrays)

Διδακτική Πληροφορικής

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 4

Μοντελοποίηση Λογικών Κυκλωμάτων

Δομημένος Προγραμματισμός

Εισαγωγή στον δομημένο προγραμματισμό

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Οντοκεντρικός Προγραμματισμός

Στατιστική Επιχειρήσεων Ι

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική

Αντικειμενοστρεφής Προγραμματισμός

Εισαγωγή στους Αλγορίθμους

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Αποµακρυσµένη κλήση διαδικασιών

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

ΜΗΧΑΝΙΣΜΟΙ ΠΟΙΟΤΗΤΑΣ ΥΠΗΡΕΣΙΑΣ ΣΕ ΔΙΚΤΥΑ

{ int a = 5; { int b = 7; a = b + 3;

Διδακτική Πληροφορικής

Ενδεικτικές λύσεις ασκήσεων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

ΜΑΘΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

Ειδικά Θέματα Δικτύων Ι

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Δομές Δεδομένων. Ενότητα 11: Τεχνικές Κατακερματισμού. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Transcript:

Κατανεμημένα Συστήματα με Java Ενότητα # 16: Κατανεμημένα συστήματα αντικειμένων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Οικονομικό Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 2

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Οι εικόνες προέρχονται από το βιβλίο «Κατανεμημένα Συστήματα με Java», Ι. Κάβουρας, Ι. Μήλης, Γ. Ξυλωμένος, Α. Ρουκουνάκη, 3 η έκδοση, 2011, Εκδόσεις Κλειδάριθμος. 3

Σκοποί ενότητας Εισαγωγή στα μοντέλα απομακρυσμένων αντικειμένων. Κατανόηση του μοντέλου Java RMI και του τρόπου με τον οποίο χρησιμοποιείται. 4

Περιεχόμενα ενότητας Απομακρυσμένα αντικείμενα Διαχείριση αντικειμένων Αντικείμενα στο Java RMI Εντοπισμός στο Java RMI Εφαρμογές στο Java RMI Ενεργοποίηση στο Java RMI 5

Απομακρυσμένα αντικείμενα Μάθημα: Κατανεμημένα Συστήματα με Java, Ενότητα # 16: Κατανεμημένα συστήματα αντικειμένων Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

Διεπαφή Μέθοδοι Μέθοδοι Διεπαφή Διεπαφή και υλοποίηση Αντικείμενο Κατάσταση Διεπαφή (interface) αντικειμένου Περιγραφή (υπογραφών) μεθόδων αντικειμένου Παράμετροι εισόδου και εξόδου κάθε μεθόδου Το αντικείμενο μπορεί να υλοποιεί πολλές διεπαφές Υλοποίηση (implementation) αντικειμένου Μέθοδοι: κοινές σε όλα τα αντικείμενα Κατάσταση: ιδιωτική σε κάθε αντικείμενο 7

Μέθοδοι Σκελετός Πληρεξούσιος Διεπαφή Αντικείμενα και RMI Πελάτης Αντικείμενο Κατάσταση Απομακρυσμένα αντικείμενα Διεπαφή και υλοποίηση σε διαφορετικές μηχανές Υλοποίηση σε μία μόνο μηχανή Απομακρυσμένη Κλήση Μεθόδων (RMI) Πληρεξούσιος (proxy) και σκελετός (skeleton) Παραλήπτης (receiver) ή στόχος (target) κλήσης 8

Μέθοδοι Διεπαφή Τύποι αντικειμένων Προσαρμογέας Συναρτήσεις Δεδομένα Απομακρυσμένα αντικείμενα C++ και Java Εμπεριέχουν διάκριση διεπαφής και υλοποίησης Αυτόματη παραγωγή πληρεξούσιου και σκελετού Απομακρυσμένα αντικείμενα άλλων γλωσσών Διατίθεται μόνο η υλοποίηση, όχι η διεπαφή Προσθήκη προσαρμογέα (adapter) αντικειμένων Αντικειμενοστρεφής διεπαφή για τυχαίο κώδικα 9

Διεπαφές και είδη αντικειμένων Απομακρυσμένη διεπαφή (remote interface) Υποσύνολο των διεπαφών του αντικειμένου Οι παράμετροι μπορεί να είναι αντικείμενα Διάρκεια ζωής αντικειμένων Παροδικά: δημιουργία από αρχική κατάσταση Καταστροφή κατάστασης όταν δεν χρειάζονται πια Διατηρούμενα: δημιουργία από παλιά κατάσταση Αποθήκευση κατάστασης όταν δεν χρειάζονται πια 10

Απομακρυσμένες κλήσεις Στατικές απομακρυσμένες κλήσεις Γνωστές διεπαφές κατά τη μεταγλώττιση Δυναμικές απομακρυσμένες κλήσεις Δυναμική ανακάλυψη διεπαφών Τα αντικείμενα καταχωρούν τις διεπαφές τους Χρήση γενικευμένων κλήσεων μεθόδων Αναγνωριστικά αντικειμένου και μεθόδου Πίνακες παραμέτρων εισόδου και εξόδου 11

Αναφορές αντικειμένων (1 από 3) Χρήσεις (απομακρυσμένων) αναφορών Προσδιορισμός αντικειμένου που θα κληθεί Μεταβίβαση αντικειμένων ως παραμέτρων Περιεχόμενο απομακρυσμένης αναφοράς Άμεση αναφορά: διεύθυνση, θύρα, αντικείμενο Δεν επιτρέπει τη μετακίνηση αντικειμένων Έμμεση αναφορά: μέσω μεταφραστή σε διευθύνσεις Μόνο ο μεταφραστής είναι σε σταθερό σημείο Πιθανόν με πληροφορίες για πρωτόκολλα επικοινωνίας 12

Αναφορές αντικειμένων (2 από 3) Εντοπισμός αντικειμένων Δεσμευτής: μετάφραση ονόματος σε αναφορά Εγγραφή αντικειμένων στο δεσμευτή Γίνεται από τον εξυπηρετητή Εξειδικευμένοι πληρεξούσιοι Αναφορά σε πληρεξούσιο αντί στο αντικείμενο Κατέβασμα και εκτέλεση πληρεξούσιου Απαιτεί τυποποίηση αναφορών σε πληρεξούσιους 13

Αναφορές αντικειμένων (3 από 3) Μεταβίβαση αντικειμένων σε μεθόδους Χρήση απομακρυσμένης αναφοράς Αντιοικονομική όταν τα πάντα είναι αντικείμενα Διάκριση αντικειμένων Απομακρυσμένα αντικείμενα: με αναφορά Ενσωματωμένοι τύποι: με τιμή Απαγόρευση μεταβίβασης άλλων τύπων Η Java επιτρέπει μεταβίβαση όλων των αντικειμένων Δυνατότητα σειριακοποίησης σύνθετων αντικειμένων 14

Διαχείριση αντικειμένων Μάθημα: Κατανεμημένα Συστήματα με Java, Ενότητα # 16: Κατανεμημένα συστήματα αντικειμένων Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

Εξυπηρετητές αντικειμένων (1 από 4) Αντικείμενο 1 Αντικείμενο 2 Κατάσταση Μέθοδοι Σκελετός Κατάσταση Μέθοδοι Σκελετός Διανομέας Κλήσεων Εξυπηρετητής Αντικειμένων Δημιουργία και καταστροφή αντικειμένων Δημιουργία αναφορών και διανομή κλήσεων Πολιτικές ενεργοποίησης αντικειμένων Χρόνος δημιουργίας και καταστροφής (Κατα)μερισμός μνήμης Διαχείριση νημάτων 16

Εξυπηρετητές αντικειμένων (2 από 4) Χρόνος δημιουργίας και καταστροφής Πόσο μένει ενεργό ένα διατηρούμενο αντικείμενο; Θα δημιουργηθούν αντικείμενα προκαταβολικά; (Κατα)μερισμός μνήμης Κοινή ή ανεξάρτητη μνήμη ανά αντικείμενο; Διαχείριση νημάτων Νήμα ανά εξυπηρετητή; Νήμα ανά αντικείμενο; Νήμα ανά κλήση; 17

Εξυπηρετητές αντικειμένων (3 από 4) Αντικείμενο 1 Αντικείμενο 2 Αντικείμενο 3 Αντικείμενο 4 Κατάσταση Κατάσταση Κατάσταση Κατάσταση Μέθοδοι Μέθοδοι Μέθοδοι Μέθοδοι Σκελετός Σκελετός Σκελετός Σκελετός Προσαρμογέας 1 Προσαρμογέας 2 Εξυπηρετητής Αντικειμένων Προσαρμογείς αντικειμένων Υλοποίηση (και) των πολιτικών ενεργοποίησης Ο εξυπηρετητής υποστηρίζει πολλούς προσαρμογείς Κάθε προσαρμογέας υποστηρίζει πολλά αντικείμενα Επικοινωνία προσαρμογέα με αντικείμενα Χρήση γενικευμένων / δυναμικών κλήσεων 18

Εξυπηρετητές αντικειμένων (4 από 4) Υποτακτικές τάξεις (servant classes) Υλοποιήσεις των απομακρυσμένων αντικειμένων Καλούνται από τους σκελετούς των αντικειμένων Αρχικοποίηση εξυπηρετητή Δημιουργία ενός τουλάχιστον αντικειμένου Δημιουργία πρόσθετων αντικειμένων μέσω RMI Κατασκευή απομακρυσμένων αντικειμένων Εργοστασιακές μέθοδοι: κατασκευάζουν αντικείμενα Εργοστασιακά αντικείμενα: για εργοστασιακές μεθόδους Δημιουργούνται κατά την αρχικοποίηση των εξυπηρετητών 19

Εκκαθάριση αντικειμένων (1 από 2) Κατανεμημένη αποκομιδή απορριμμάτων Εντοπισμός αντικειμένων χωρίς αναφορές Κάθε αναφορά είναι ζεύγος πληρεξούσιου-σκελετού Υποθέτουμε μόνο απομακρυσμένες αναφορές Οι αναφορές μπορεί να έχουν καταστραφεί Αποτυχία διεργασιών που περιέχουν αναφορές Πότε μπορεί να διαγραφεί ένα αντικείμενο; Όταν δεν έχει απομακρυσμένες αναφορές Οι κυκλικές αναφορές αγνοούνται 20

Εκκαθάριση αντικειμένων (2 από 2) 2 3 7 1 4 5 8 6 Γράφημα αντικειμένων και αναφορών Κόμβοι: αντικείμενα Ακμές: αναφορές Ριζικό σύνολο: αντικείμενα προσπελάσιμα χωρίς αναφορές Χρήστες, υπηρεσίες, μηχανές Παράδειγμα: Το ριζικό σύνολο είναι το αντικείμενο 1 Μόνο τα αντικείμενα 3, 7 και 8 είναι προσπελάσιμα 21

Μετρητές αναφορών Πλήθος αναφορών προς αντικείμενο Αύξηση σε κάθε δημιουργία αναφοράς Μείωση σε κάθε διαγραφή αναφοράς Διαγραφή αντικειμένου κατά το μηδενισμό Εφαρμογή σε απομακρυσμένα αντικείμενα Αποθήκευση μετρητή αναφορών στο σκελετό Οι πληρεξούσιοι ενημερώνουν το σκελετό με μηνύματα Μεταβίβαση απομακρυσμένων αναφορών Δημιουργία νέου πληρεξούσιου στον καλούμενο Ο καλών δεν πρέπει να διαγραφεί άμεσα 22

Λίστες αναφορών Παρακολούθηση των πηγών των αναφορών Καταγραφή όλων των πληρεξούσιων του αντικειμένου Μεταβίβαση αναφορών Πρώτα ενημερώνεται ο σκελετός από τον καλούντα Ιδιότητες λίστας αναφορών Ο σκελετός ελέγχει περιοδικά τους πληρεξούσιους Κάθε πράξη απαιτεί επικοινωνία με το σκελετό Παραχώρηση αναφορών (lease) Διαγραφή των αναφορών αν δεν ανανεωθούν ρητά 23

Αντικείμενα στο Java RMI Μάθημα: Κατανεμημένα Συστήματα με Java, Ενότητα # 16: Κατανεμημένα συστήματα αντικειμένων Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

RMI (1 από 2) Java RMI Υλοποίηση RMI ειδικά για την Java Κλήση μεθόδων από απομακρυσμένη JVM Πληρεξούσιος στον πελάτη Σκελετός στον εξυπηρετητή Στον ίδιο ή σε διαφορετικό υπολογιστή Παρόμοιες με τοπικές κλήσεις Διαφοροποιήσεις για λόγους απόδοσης 25

RMI (2 από 2) Απομακρυσμένα αντικείμενα στην Java Υλοποιούν μία απομακρυσμένη διεπαφή Εξάγονται για να μπορούν να δεχτούν κλήσεις Μειονεκτήματα και πλεονεκτήματα Κλειστό σύστημα (καλύπτει μόνο την Java) Αξιοποίηση της Java (π.χ. σειριακοποίηση) Ολοκληρωμένο περιβάλλον (δεν χρειάζεται IDL) 26

Επικοινωνία με αντικείμενα (1 από 4) Ορισμός απομακρυσμένων αντικειμένων Υποστάσεις τάξεων με απομακρυσμένη διεπαφή Επεκτείνουν τη διεπαφή java.rmi.remote Τάξη υλοποίησης απομακρυσμένου αντικειμένου Μπορεί να έχουν και μη απομακρυσμένες διεπαφές Δημιουργία με (μη απομακρυσμένο) κατασκευαστή Εξαγωγή (export) για να μπορεί να δεχθεί RMI Είτε με java.rmi.server.unicastremoteobject Είτε με Java.rmi.activation.Activatable 27

Επικοινωνία με αντικείμενα (2 από 4) Τάξη UnicastRemoteObject Static Remote exportobject (Remote obj, int port) Εξάγει το αντικείμενο obj Δέχεται κλήσεις στο port (τυχαίο αν port=0) Εξαγωγή αντικειμένου Δημιουργία αντικειμένου Εξαγωγή μέσω της exportobject Επιστρέφεται αναφορά στον πληρεξούσιο (proxy) 28

Επικοινωνία με αντικείμενα (3 από 4) Πληρεξούσιος αντικειμένου Μπορεί να μεταβιβαστεί (σειριακοποίηση!) Οι κλήσεις μεταφράζονται σε κλήσεις RMI Περιέχει αναφορά σε αντικείμενο Διεύθυνση δικτύου και θύρα Δημιουργία πληρεξούσιων αντικειμένων Κατά τη μεταγλώττιση με το εργαλείο rmic Χρησιμοποιείται μόνο για λόγους συμβατότητας Κατά την εξαγωγή του αντικειμένου Δυναμική δημιουργία κατά την εκτέλεση 29

Επικοινωνία με αντικείμενα (4 από 4) Πρωτόκολλο επικοινωνίας RMI Αρχικά δοκιμή απευθείας σύνδεσης μέσω TCP Σε περίπτωση αποτυχίας δοκιμή σύνδεσης μέσω HTTP Σύγχρονες κλήσεις Εμποδισμός πελάτη κατά τη διάρκεια της κλήσης Σημασιολογία: κλήση το πολύ μία φορά Χρήση πρόσθετων ευκολιών της Java Ασύγχρονες κλήσεις: χρήση πολλών νημάτων Γεγονότα: χρήση παρατηρήσιμων αντικειμένων 30

Μεταβίβαση παραμέτρων (1 από 2) Τιμές εσωτερικών τύπων Μεταβίβαση με τιμή Δημιουργία αντιγράφου στον παραλήπτη Τοπικά αντικείμενα Μεταβίβαση με τιμή Σειριακοποίηση και αποστολή Λήψη και αποσειριακοποίηση Πρέπει να υλοποιείται η διεπαφή java.io.serializable 31

Μεταβίβαση παραμέτρων (2 από 2) Απομακρυσμένα αντικείμενα Δεν μπορούμε να τα σειριακοποιήσουμε Δεν είναι τοπικά Ο πληρεξούσιός τους όμως είναι τοπικός Μεταβίβαση με αναφορά Αντιγραφή απομακρυσμένης αναφοράς Στην πραγματικότητα αντιγραφή του πληρεξούσιου Ο πληρεξούσιος περιέχει και την αναφορά 32

Εντοπισμός στο Java RMI Μάθημα: Κατανεμημένα Συστήματα με Java, Ενότητα # 16: Κατανεμημένα συστήματα αντικειμένων Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

Εντοπισμός αντικειμένων (1 από 7) Μητρώο συστήματος RMI (rmiregistry) Διαχειριστής αντικειμένων - υπηρεσία ονομασίας Λειτουργεί ως δεσμευτής του συστήματος Απεικόνιση URL σε αναφορές αντικειμένων Το URL ξεκινάει με rmi:// Εμβέλεια μητρώου Το μητρώο κάθε μηχανής είναι ανεξάρτητο Ο πελάτης πρέπει να γνωρίζει που να ρωτήσει 34

Εντοπισμός αντικειμένων (2 από 7) Πολλαπλά μητρώα ανά μηχανή Αρκεί να εκτελούνται σε διαφορετικές θύρες Η προεπιλεγμένη θύρα είναι η 1099 Πολλοί εξυπηρετητές ανά μητρώο Πολλά μητρώα ανά εξυπηρετητή Εντοπισμός μητρώου Το μητρώο είναι απομακρυσμένο αντικείμενο Απλά είναι πιο εύκολο να το εντοπίσουμε 35

Εντοπισμός αντικειμένων (3 από 7) Διεπαφή java.rmi.registry.registry Υλοποιείται από το μητρώο void bind(string name, Remote obj) void rebind(string name, Remote obj) Συσχέτιση του name με το αντικείμενο obj void unbind(string name) Διαγραφή συσχέτισης από το μητρώο 36

Εντοπισμός αντικειμένων (4 από 7) String[] list() Επιστρέφει πίνακα με τα ονόματα του μητρώου Remote lookup(string name) Επιστρέφει αναφορά που σχετίζεται με το όνομα Στην πραγματικότητα, αναφορά προς πληρεξούσιο Οι bind, rebind, unbind καλούνται τοπικά Από τον εξυπηρετητή αντικειμένων Οι list, lookup καλούνται και απομακρυσμένα Από τους πελάτες των αντικειμένων 37

Εντοπισμός αντικειμένων (5 από 7) Δύο τρόποι απόκτησης αναφοράς σε αντικείμενο Λήψη της ως παραμέτρου κλήσης Χρήση της μεθόδου lookup Τάξη java.rmi.registry.locateregistry Επιτρέπει τον εντοπισμό ενός μητρώου static Registry getregistry(string host, int port) Επιστρέφει απομακρυσμένη αναφορά σε μητρώο Εκτελείται στη θύρα port της μηχανής host 38

Εντοπισμός αντικειμένων (6 από 7) Διεπαφή java.rmi.naming Συνδυάζει Registry και LocateRegistry void bind(string url, Remote obj) void rebind(string url, Remote obj) Remote lookup (String url) void unbind (String url) String[] list (String url) 39

Εντοπισμός αντικειμένων (7 από 7) Διαφορά Naming από Registry Η ερμηνεία του ονόματος είναι διαφορετική Registry: <όνομα> Πρέπει να έχει εντοπιστεί πρώτα το μητρώο Χρήση της LocateRegistry Naming: //<διεύθυνση>:<θύρα>/<όνομα> Το μητρώο υπονοείται από την παράμετρο Δεν χρειάζεται χωριστό βήμα εντοπισμού 40

Δυναμική φόρτωση κώδικα Επέκταση κώδικα Java Αυτόματη φόρτωση πληρεξούσιου Δεν απαιτείται ο ίδιος κώδικας παντού Χρήση βάσης κώδικα (codebase) Ιδιότητα java.rmi.server.codebase Προσδιορίζει τι είναι ορατό σε άλλες JVM Αποτελείται από μια λίστα URL Από πελάτη σε εξυπηρετητή Από εξυπηρετητή σε πελάτη 41

Διαχειριστής ασφαλείας Διαχειριστής ασφαλείας RMI Επιβάλλει πολιτική ασφαλείας Ισχύει για τον εξωτερικό κώδικα Η εξ ορισμού τάξη είναι πολύ συντηρητική Δεν επιτρέπει καμία πρόσβαση! Ασφαλής από προεπιλογή Υλοποίηση τάξης ανάλογα με την εφαρμογή Επιβολή κανόνων που ταιριάζουν στο περιβάλλον 42

Εφαρμογές στο Java RMI Μάθημα: Κατανεμημένα Συστήματα με Java, Ενότητα # 16: Κατανεμημένα συστήματα αντικειμένων Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

Υλοποίηση εφαρμογών (1 από 4) Σχεδιασμός απομακρυσμένης διεπαφής Επεκτείνει τη διεπαφή java.rmi.remote Οι μέθοδοι ρίχνουν εξαιρέσεις RemoteException Ορίζονται μόνο οι απομακρυσμένες μέθοδοι Υλοποίηση της απομακρυσμένης διεπαφής Ο κώδικας ανήκει σε μία υποτακτική τάξη Υλοποιεί και τις απομακρυσμένες μεθόδους 44

Υλοποίηση εφαρμογών (2 από 4) Σχεδιασμός και εκτέλεση εξυπηρετητή Δημιουργία απομακρυσμένου αντικειμένου Εξαγωγή αντικειμένου stub=unicastremoteobject.exportobject(obj,port) Δημιουργεί τον πληρεξούσιο Καταγραφή αντικειμένου στο μητρώο Naming.bind( name,stub) Κάνει τον πληρεξούσιο ορατό 45

Υλοποίηση εφαρμογών (3 από 4) Σχεδιασμός και εκτέλεση εξυπηρετητή Μεταγλώττιση όλων των τάξεων Διεπαφή, εξυπηρετητής και υποτακτικές τάξεις Δημιουργία αρχείου JAR με κώδικα προς διάθεση Π.χ. τάξη διεπαφής Εκκίνηση μητρώου rmiregistry & Εκτέλεση εξυπηρετητή Προσδιορισμός ιδιότητας codebase 46

Υλοποίηση εφαρμογών (4 από 4) Σχεδιασμός και εκτέλεση πελάτη Ρύθμιση διαχειριστή ασφάλειας Αλλιώς δεν εκτελείται ο ξένος κώδικας Απόκτηση αναφοράς προς το αντικείμενο stub = Naming.lookup("rmi://διεύθυνση/όνομα"); Αυτόματη προσκόμιση κώδικα που λείπει Χρήση του codebase στον εξυπηρετητή 47

Ενεργοποίηση στο Java RMI Μάθημα: Κατανεμημένα Συστήματα με Java, Ενότητα # 16: Κατανεμημένα συστήματα αντικειμένων Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής

Ενεργοποίηση (1 από 4) Παροδικά αντικείμενα Εξάγονται μέσω java.rmi.unicastremoteobject Επεκτείνουν java.rmi.unicastremoteobject Ξεκινούν πάντα με την ίδια αρχική κατάσταση Διατηρούμενα αντικείμενα Επεκτείνουν την java.rmi.activation.activatable Ενεργοποιούνται όταν γίνεται αναφορά σε αυτά Ειδικός κατασκευαστής ενεργοποίησης 49

Ενεργοποίηση (2 από 4) Object1 Null Object1 Object2 Object2 Descriptor1 Descriptor2 Descriptor3 rmid Group1 Class1 Διαδρομή Init1 Αναφορές ενεργοποιήσιμων αντικειμένων Αναγνωριστικό ενεργοποίησης (όνομα) Ενεργή αναφορά (πραγματική αναφορά) Κενή αναφορά: ανενεργό αντικείμενο Μη κενή αναφορά: ενεργό αντικείμενο 50

Ενεργοποίηση (3 από 4) Δαίμονας ενεργοποίησης (rmid) Αντιστοιχίζει αναγνωριστικά σε περιγραφείς Περιγραφέας ενεργοποίησης Ομάδα ενεργοποίησης αντικειμένου Όνομα τάξης και τοποθεσία κώδικα τάξης Προταγμένο αντικείμενο για αρχικοποίηση Κλήση ανενεργού αντικειμένου Ανάκτηση περιγραφέα από δαίμονα ενεργοποίησης Μεταβίβαση περιγραφέα σε ομάδα ενεργοποίησης 51

Ενεργοποίηση (4 από 4) Group1 Class1 Διαδρομή Init1 Class1 Σύστημα Αρχείων Object1 Group1 Ομάδα ενεργοποίησης Ομαδοποιεί ενεργοποιήσιμα αντικείμενα JVM Ξεκινάει αυτόματα αν δεν είναι ήδη ενεργή Φορτώνει την τάξη από την τοποθεσία Καλεί τον κατασκευαστή ενεργοποίησης Μεταβιβάζει το προταγμένο αντικείμενο Κωδικοποιεί την αποθηκευμένη κατάσταση JVM 52

Τέλος Ενότητας # 16 Μάθημα: Κατανεμημένα Συστήματα με Java, Ενότητα # 16: Κατανεμημένα συστήματα αντικειμένων Διδάσκων: Γιώργος Ξυλωμένος, Τμήμα: Πληροφορικής