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

Σχετικά έγγραφα
Structuring Components Specifications using Dependencies among the Runtime Environments

Remote Method Invocation (RMI)

Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Τι είναι η Spring. Η Spring είναι ένα ελεύθερο (open source) περιβάλλον εργασίας για εφαρμογές Java. Μπορεί να περιγραφεί ως:

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

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

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Διασυνδέσεις / Διεπαφές. Παναγιώτης Σφέτσος, PhD

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

Κλάσεις και Αντικείµενα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Το παρακάτω πρόγραμμα ορίζει δυο κλάσεις την SimpleThread και την TwoThreadsTest:

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

JAX-RPC (Web Services) ΕΠΛ 425: Τεχνολογίες ιαδικτύου Μιχάλης Έλληνας

2.1 Αντικειµενοστρεφής προγραµµατισµός

Σύνοψη 6 ης ιάλεξης. Εισαγωγικά (2)

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Βασικά της γλώσσας JAVA

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

Εισαγωγή στον Προγ/μό Η/Υ

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Generics και ArrayLists

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

. Μεθοδολογία Προγραμματισμού. Abstract Κλάσεις και Interfaces. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

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

public class ArrayStack implements Stack {

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

API: Applications Programming Interface

Μιχάλης Μασούρας Επιβλέπων Καθηγητής: Ιγνάτιος Δεληγιάννης

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

2 ΓΡΑΜΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

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

Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, :00-10:00 π.μ.

Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων

Συλλογές, Στοίβες και Ουρές

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

HelloWorld. Παύλος Εφραιμίδης. Java Το πρόγραμμα HelloWorld 1

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

Από τη UML στον Κώδικα. Μέρος Α

Εισαγωγή στις Σελίδες Εξυπηρετητή Java Java Server Pages (JSP)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing

Σύνοψη 3 ης ιάλεξης. Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων.

Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων

Ευφυείς Τεχνολογίες ----Πράκτορες

Μάθημα 2 [10/11/2015]

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Διάγραμμα Κλάσεων. Class Diagram

Δομές ελέγχου ροής προγράμματος

Από τη UML στον Κώδικα. Μέρος Β

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Παράδειγμα χρήσης κληρονομικότητας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Διδάσκων: Παναγιώτης Ανδρέου

2. Προσδιοριστές, δεσμευμένες λέξεις και τύποι

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

Mεταβλητές (variables) και Σταθερές (constants)

Transcript:

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021 18 Οκτωβρίου 2006

Η εργασία είχε σαν στόχο να δημιουργηθεί ένα κατανεμημένο σύστημα ελέγχου συσκευών μιας κουζίνας.συγκεκριμένα υπάρχει ένας κεντρικός server στον οποίο συνδέοονται οι συσκευές οι οποίες μπορεί να είναι κουζίνα,πλυντήριο πιάτων κ.α.έτσι αυτές οι συσκευές με την επίκλυση των απομακρυσμένων μεθόδων (RMI) μπορούν να επικοινωνούν με τον server χρησιμοποιώντας στην ουσία μεθόδους του.αυτό αποτελεί και μία εισαγωγή στο τι ακριβώς είναι το rmi το οποίο όμως θα εξηγήσω και παρακάτω. RMI :Είναι ένα API με το οποίο η java υλοποιεί τον κατανεμημένο προγραμματισμό.μέσω του rmi ένας client μπορεί να καλέσει μια public μέθοδο του server.πχ να εκτελεί ερωτήματα στην βάση δεδομένων που βρίσκεται στον server χρησιμοποιώντας συναρτήσεις του, μειώνοντας έτσι και την κυλοφοριακή συμφόρηση στο δίκτυο και δημιουργεί μία συνγχρονισμένη εφαρμογή. Πιο συγκεκριμένα το rmi αποτελείται από το επίπεδο σκελετού /στελέχους, το επίπεδο αναφοράς και το επίπεδο μεταφοράς. Επιγραμματικά το στέλεχος δρά σαν υποκατάστατο του server στο μηχάνημα του client ενώ ο σκελετός βρίσκεται στον server και είναι υπεύθυνο για την επικοινωνία με το στέλεχος.αυτό ήταν μια εισαγωγή για το πώς περίπου δουλεύει το rmi.δεν θα προχωρήσω και στα άλλα 2 επίπεδα αλλά θα προχωρήσω λίγο για το τι πρέπει να κάνουμε σε έναν κώδικα για να υλοποιήσουμε τις απομακρυσμένες μεθόδους.. 1.Υλοποιούμε την διασύνδεση remote που που βρίσκεται στο πακέτο java.rmi και απλώς δείχνει ποιες μέθοδοι είναι απομακρυσμένες επιτρέποντας στους clients την πρόσβαση μέσω του rmi:// αφου βέβαια επεκτείνουν την java.rmi.remote 2.Χρησιμοποιούμε την κλάση Naming για την αντιστοιχία ονομάτων με απομακρυσμένα αντικείμενα..

3.Χρησιμοποιούμε την rmi.server η οποία είναι αφηρημένη και ορίζει μεθόδους που χρησιμοποιούνται για την δημιουργία και εξαγωγή αντικειμένων 4.Επίσης κάθε φορά που θέλουμε να δημιουργήσουμε ένα αντικείμενο επεκτείνουμε την κλάση UnicastRemoteObject Αυτή ήταν μια γενική επισκόπηση για το τι πρέπει να κάνουμε σε επίπεδο υλοποίησης. Ας γίνουμε όμως πιο συγκεκριμένοι περιγράφοντας και την δική μας εφαρμογή. Στην αρχή ξεκινήσανε με την δημιουργία της βάσης μας Smart- Devices που βρίσκεται στον server και επικοινωνούμε με αυτή μέσω του jdbc-odbc οδηγού αφού την εισάγουμε στο odbc μέσω του control panel των Windows

Τώρα όσον αφορά την εφαρμογή μας.αυτή αποτελείται από 8 κλάσεις Οι κλάσεις SqlConnection,DatabaseDefinitions και connection_class υλοποιούν την σύνδεση με την βάση.συγκεκριμένα η πρώτη υλοποιεί το real connection με την βάση και την εξαγωγή δεδομένων-εισαγωγή χρησιμοποιώντας τα στοιχεία από τη δεύτερη και τα queries από την τρίτη.απλώς για λόγους ασφαλείας και δομημένου προγραμματισμού βρίσκονται σε ξεχωριστές κλάσεις και αρχεία Στην συνέχεια υλοποιούμε το interface DeviceRMI σύμφωνα και με τα παραπάνω που περιέχει τις μεθόδους του server που μπορούν να καλούν οι συσκευές όπως το να στέλνει τις μετρήσεις κτλ public interface DeviceRMI extends java.rmi.remote int receive_device_info(int devid,string devbrandname,string devmodel,string tupdate) throws java.rmi.remoteexception; void receive_error(int devid,boolean x,int y) throws java.rmi.remoteexception; void receive_temperature(int devid,int temp) throws java.rmi.remoteexception; void make_offline(int devid) throws java.rmi.remoteexception; boolean receive_flag() throws java.rmi.remoteexception; Η κλάση DeviceServer είναι και η κεντρική κλάση του server που δημιουργεί και το αντικείμενο που θα βλεπουν απομακρυσμένα οι συσκευές.η υλοποίηση των απομακρυσμένων μεθόδων(είναι αυτές που επικοινωνούν και με την βάση) βρίσκεται στο DeviceRMIImpl καθώς και άλλες βοηθητικές συναρτήσεις του server. import java.rmi.*; import java.rmi.server.*;

//κλάση που αρχικοποιεί τον server public class DeviceRMIServer // public DeviceRMIServer() // public static void main(string args[]) // System.setSecurityManager(new RMISecurityManager()); try DeviceRMIImpl mydevice; mydevice = new DeviceRMIImpl("myDeviceRMI"); System.out.println("Server ready"); catch(exception e) System.out.println("Exception: " + e.getmessage()); e.printstacktrace();

Περιγραφή της DeviceRMIImpl import java.rmi.remoteexception; import java.rmi.server.unicastremoteobject; import java.text.simpledateformat; import java.util.date; public class DeviceRMIImpl extends UnicastRemoteObject implements DeviceRMI // Fields static int sum_devices; static int test; boolean flag; Date time_now; String output; SimpleDateFormat formatter; // Constructors public DeviceRMIImpl(String string) throws RemoteException // Methods public int receive_device_info(int _int, String string, String string2, String string3) throws RemoteException return 0; public void receive_temperature(int _int, int _int1) throws RemoteException public void receive_error(int _int, boolean _boolean, int _int2) throws RemoteException public boolean receive_flag() throws RemoteException return false; public void make_offline(int _int) throws RemoteException protected String[][] write_rss_file(int _int, int _int1) return null; protected void write_file(string[][] stringarray, int _int) Στην συνέχεια έχουμε την κλάση DeviceRMIClient όπου περιγράφει μια συσκευή Και αφού κάνει μια αναφορά στο DeviceRMI καλεί τις μεθόδους του DeviceRMI mydevice = (DeviceRMI) Naming.lookup("rmi://127.0.0.1/myDeviceRMI");

Επίσης υλοποιήσαμε και την main_server που πάλι τρέχει απομακρυσμένα από τον server και απλώς υλοποιεί ένα περιβάλλον για τον χρήστη για να δει τις μετρήσεις του server κτλ Τέλος,χρησιμοποιήσαμε και το rss πρωτόκολλο για την δημιουργία ενός xml αρχείου όταν η θερμοκρασία μιας συσκευής ανέβει απότομα. Αυτή ήταν μια απλή και συνοπτική περιγραφή του συστηματός μας