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

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

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

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

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

Εισαγωγή στη J2EE. Μέρος 2

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

ιαδικτυακές Εφαρµογές

Remote Method Invocation (RMI)

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

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

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

Κατανεμημένα Συστήματα. Javascript LCR example

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

Εργαστήριο Java. Αντικείµενο: Δίκτυα. Χειρισµός URLs. Άσκηση 1. Lab11. Πακέτο java.net

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ


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

ΟΔΗΓΟΣ ΔΙΑΣΥΝΔΕΣΗΣ για το Έργο «Ανάπτυξη Πλατφόρμας Παροχής Υπηρεσιών Αποστολής και Λήψης Σύντομων Μηνυμάτων»

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

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

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

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

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

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

ΕΠΛ 012. JavaScripts

1.2.1 Το μοντέλο αναφοράς για τη Διασύνδεση Ανοικτών Συστημάτων (OSI) 1 / 19

Πληροφορίες για το μάθημα

Περιγραφή της εργασίας

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες

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

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

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

CORBA. Αρχιτεκτονική και 3-tier 3. εφαρµογές. Β. Φλώρος. Μαρτάκος. Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστιακό Πανεπιστήµιο Αθηνών

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

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

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4

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

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

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

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

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ

2η Προγραµµατιστική Εργασία

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Distributed Systems II

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

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

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

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

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

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

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

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

Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

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

Τµήµα Πληροφορικής. Υλοποίηση LRU Cache ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ - ΕΡΓΑΣΙΑ 4. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Γενικά περί Caching

Βασικές Έννοιες Δοµών Δεδοµένων

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

ΕΡΓΑΣΙΑ. (στο µάθηµα: Τεχνολογίες Εφαρµογών ιαδικτύου του Η εξαµήνου σπουδών του Τµήµατος Πληροφορικής & Τηλ/νιών)

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

ΜΑΘΗΜΑ: Διαδικτυακές Εφαρμογές

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

Διαδικτυακές Εφαρμογές Ενότητα 3: Ανάπτυξη JavaEE 6 εφαρμογής με JSF2, EJB3 και JPA

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ ΓΙΑ ΕΠΙΚΟΙΝΩΝΙΑ ΠΕΛΑΤΩΝ ΜΕΣΩ ΙΑ ΙΚΤΥΟΥ

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

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

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

Μοντέλο OSI 1.8. Κεφάλαιο 1. ΕΠΑ.Λ. Άμφισσας Σχολικό Έτος : Τάξη. : Β Τομέα Πληροφορικής Μάθημα. : Δίκτυα Υπολογιστών I Διδάσκων

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

Αρχιτεκτονικές Συστημάτων

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

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

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

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

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος

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

Διαδίκτυο των Αντικειμένων - IoT.

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

Οδηγίες αξιοποίησης για τον Εκπαιδευτικό

7.11 Πρωτόκολλα Εφαρµογής Βασικές και Προηγµένες Υπηρεσίες ιαδικτύου. Ηλεκτρονικό Ταχυδροµείο. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

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

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

Επικοινωνία Client/Server

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας. Υπηρεσίες Internet. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα θ

Λογισμικό Δικτύων Τετράδιο μαθητή

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αρχεία

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

Transcript:

Κατανεµηµένα Συστήµατα ΙΙ Μάθηµα Ελεύθερης Επιλογής, Εαρινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Αθανάσιος Κίναλης Πέµπτη, 21 Ιουνίου, 2007 Αίθουσα ΑΠ7 Μελετάµε ένα κατανεµηµένο σύστηµα για την κράτηση αεροπορικών ϑέσεων Εξετάσαµε την αρχιτεκτονική του συστήµατος Επισκόπηση της ϐιβλιοθήκης JDBC για την σύνδεση µε την ϐάση δεδοµένων Επισκόπηση της ϐιβλιοθήκης java.net και την υλοποίηση του συστήµατος µε Sockets Υλοποίηση του συστήµατος µε RMI Υλοποίηση του συστήµατος µε Java Servlets Βασιζόµαστε στο µοντέλο Πελάτη-Εξυπηρέτη ιαχωρίσαµε τον Εξυπηρέτη σε 3 επίπεδα Επίπεδο εδοµένων Βάση εδοµένων Επίπεδο Αντικειµένων Επίπεδο Λογικής Λογική επέκταση του µοντέλου πελάτη-εξυπηρέτη Χωρίζουµε την λειτουργικότητα σε ανεξάρτητα τµήµατα Κάθε τµήµα αναθέτετε σε διαφορετικό εξυπηρέτη (tier) Μια αίτηση µπορεί να απασχολήσει πολλούς εξυπηρέτες Αλυσιδωτές αιτήσεις κατά µήκος των διαφορετικών τµηµάτων Παράδειγµα Multi-tier Συστήµατος ϑα υλοποιήσουµε το σύστηµα µε την χρήση JMS (Java Message Service API) Αφορά την διασύνδεση των δύο υψηλότερων επιπέδων Επίπεδο παρουσίασης (Presentation Tier) Επίπεδο λειτουργιών (Business Logic Tier) Τα χαµηλότερα επίπεδα (και ο τρόπος διασύνδεσης) παραµένουν τα ίδια Επίπεδο αντικειµένων (Object Tier) Επίπεδο δεδοµένων (Data Tier)

Η ανταλλαγή µηνυµάτων είναι µια µέθοδος επικοινωνίας ανάµεσα σε τµήµατα λογισµικού ή εφαρµογών Ενα σύστηµα ανταλλαγής µηνυµάτων παρέχει λειτουργίες µεταξύ οµοτίµων πελατών Κάθε πελάτης µπορεί να λάβει και να στείλει µηνύµατα σε οποιοδήποτε άλλο πελάτη Το σύστηµα παρέχει τις λειτουργίες για τη δηµιουργία, αποστολή, λήψη και ανάγνωση των µηνυµάτων Ασύνδετη επικοινωνία Ο αποστολέας δε χρειάζεται να γνωρίζει τίποτα για τον παραλήπτη και αντίστροφα Ο αποστολέας και ο παραλήπτης δε χρειάζεται να είναι συνδεδεµένοι για να ολοκληρωθεί η αποστολή/λήψη Κοινή µορφή µηνυµάτων Αξιόπιστη επικοινωνία Ασύγχρονη επικοινωνία Ευελιξία στην υλοποίηση Συνδέει ανεξάρτητες συνιστώσες λογισµικού Κάθε συνιστώσα µπορεί να αντικατασταθεί εύκολα Η ανταλλαγή δεδοµένων δε διακόπτει τη ϱοή του προγράµµατος Επιτρέπει τη λειτουργία της εφαρµογής ακόµα και όταν κάποιες συνιστώσες είναι ανενεργές Java Message Service Specification JMS Παροχέας: Ενα σύστηµα ανταλλαγής µηνυµάτων που υλοποιεί τις διεπαφές JMS και παρέχει εργαλεία διαχείρισης και ελέγχου J2EE JBoss WebSphere Πελάτης JMS: Java λογισµικό που παράγει ή καταναλώνει µηνύµατα Μηνύµατα: Αντικείµενα για ανταλλαγή πληροφοριών ανάµεσα στους πελάτες Αντικείµενα ιαχειριστή: Ορίζονται από το διαχειριστή και χρησιµοποιούνται από τους πελάτες Point-to-Point (Message ) Κάθε µήνυµα έχει µόνο έναν παραλήπτη εν υπάρχει συγχρονισµός Ο παραλήπτης επιβεβαιώνει τη λήψη Point-to-Point Επικοινωνία

Publish/Subscribe (Topic) Ενα µήνυµα µπορεί να έχει πολλούς παραλήπτες Ενας πελάτης µπορεί να λάβει µηνύµατα µόνο αφού εγγραφεί στο ϑέµα Publish/Subscribe Επικοινωνία ιαχειριζόµενα Αντικείµενα Βιοµηχανίες Συνδέσεων Προορισµοί ηµιουργούνται µέσω του Sun Application Server Οι προορισµοί δίνουν όνοµα σε ουρές µηνυµάτων ή ϑέµατα (topics) Καταγράφονται στο Java Naming and Directory Interface -- JNDI Connection factory: Χρησιµοποιείται από τους πελάτες για τη σύνδεση µε το παροχέα JMS Context ctx = new InitialContext(); ConnectionFactory connectionfactory = (ConnectionFactory) ctx.lookup("jms/connectionfactory"); Προορισµοί: Ορίζουν τον προορισµό ή την πηγή ενός µηνύµατος Destination mydest = (Destination)ctx.lookup("jms/MyTopic"); my = ()ctx.lookup("jms/my"); Συνδέσεις: Αντιπροσωπεύει τη σύνδεση µε τον παροχέα JMS Connection con = connectionfactory.createconnection(); connection.start(); con.close(); Σύνοδοι: Κρατούν πληροφορία για τη χρήση του JMS παροχέα χρησιµοποιείται για τη δηµιουργία αντικειµένων Παραγωγών Μηνυµάτων Καταναλωτών Μηνυµάτων Μηνυµάτων Session session = connection.createsession(false, Session.AUTO_ACKNOWLEDGE); Παραγωγοί Μηνυµάτων MessageProducer producer = session.createproducer(my); MessageProducer producer = session.createproducer(mytopic); producer.send(message); Καταναλωτές Μηνυµάτων MessageConsumer consumer = session.createconsumer(my); MessageConsumer consumer = session.createconsumer(mytopic); Message m = consumer.receive(); Listener mylistener = new MessageListener() { public void onmessage(message message) {...; consumer.setmessagelistener(mylistener);

Μηνύµατα Επικεφαλίδα Ιδιότητες (Προαιρετικά) Σώµα (Προαιρετικά) TextMessage java.lang.string MapMessage Ζεύγη κλειδιών τιµών BytesMessage υαδικά εδοµένα StreamMessage Μεταφέρει σειριακά τύπους δεδοµένων JAVA ObjectMessage java.io.serializable Message null TextMessage message = session.createtextmessage(); message.settext(msg_text); // msg_text is a String producer.send(message); Υλοποιούµε τρεις συναλλαγές µεταξύ Πελάτη-Εξυπηρέτη (δύο υψηλότερα επίπεδα) Αναζήτηση Πτήσεων επιστρέφει όλες τις πτήσεις που υπάρχουν στη ϐάση δεδοµένων Αναζήτηση Θέσεων επιστρέφει όλες τις κρατήσεις που αφορούν ένα συγκεκριµένο πελάτη Κράτηση ϑέσης υποθέτουµε ότι η πτήση και ο πελάτης υπάρχουν ήδη στους πίνακες της ϐάσης δεδοµένων (για χάριν ευκολίας) Οι υπόλοιπες λειτουργίες υλοποιούνται αντίστοιχα

Οι συνιστώσες λογισµικού για την υλοποίηση σε JMS δεν είναι πολύ διαφορετικές από αυτές που χρησιµοποιούν Sockets, RMI Η ϐασικές διαφορές είναι: Η επικοινωνία είναι ασύγχρονη Πρέπει να ϐρεθεί ο τύπος δεδοµένων που µεταφέρει ένα µήνυµα ηµιουργούµε 2 ουρές µηνυµάτων: µία για αιτήσεις και µία για απαντήσεις Ο πελάτης στέλνει µηνύµατα αιτήσεων και περιµένει να λάβει απαντήσεις Ο εξυπηρέτης περιοδικά ελέγχει την ουρά και περιµένει αιτήσεις Πρέπει να χειριζόµαστε σφάλµατα τύπου JMSException Συνιστώσα Server import java.jms.*; import java.naming.*; import java.sql.*; public Server { Context Factory Receiver Session Factory Session Producer jndicontext = null; recv_queueconfactory = null; recv_queuecon = null; receiver = null; recv_queuesession = null; recv_queue = null; send_queueconfactory = null; send_queuecon = null; send_queuesession = null; send_queue = null; sender = null; Connection theconnection; Συνιστώσα Server -- constructor public Server() { initializedb(); //Get JNDI context jndicontext = new InitialContext(); /* Look up connection factories and queues. If either does not exist, exit.*/ recv_queueconfactory = (Factory) jndicontext.lookup("recvfactory"); recv_queue = () jndicontext.lookup("recv"); send_queueconfactory = (Factory) jndicontext.lookup("sendfactory"); recv_queue = () jndicontext.lookup("send"); catch (NamingException e) { System.err.println("JNDI API lookup failed: " + e.tostring()); System.exit(1); Συνιστώσα Server -- constructor... /* * Create connections. */ recv_queuecon = recv_queueconfactory.create() recv_queuesession = recv_queuecon.createsession(false, Session.AUTO_ACKNOWLEDGE); receiver = recv_queuesession.createreceiver(recv recv_queuecon.start();

Συνιστώσα Server -- listen() public void listen() { while (true) { Message m = receiver.receive(100); if (m!= null) { if (m instanceof TextMessage) { message = (TextMessage) m; if (m.gettext() == "GET_FLIGHTS") { getflights(); else if (...) {... else { continue; Συνιστώσα Server -- getflights() public void getflights() { Flight flights[] = retrieveflightsdb(); Message om = send_queuesession.createobjectmessag om.setobject(flights); sender.send(om); public static void main(string[] args) { Server s = new Server(); s.listen(); Συνιστώσα Client import java.jms.*; import java.naming.*; public Client { Context Factory Producer Session Factory Session Receiver jndicontext = null; query_queueconfactory = null; query_queuecon = null; inquirer = null; query_queuesession = null; query_queue = null; resp_queueconfactory = null; resp_queuecon = null; resp_queuesession = null; resp_queue = null; responder = null; Συνιστώσα Client -- constructor public Client() { initializegui(); //Get JNDI context jndicontext = new InitialContext(); /* Look up connection factories and queues. If eith * not exist, exit.*/ resp_queueconfactory = (Factory) jndicontext.lookup("sendfactory"); resp_queue = () jndicontext.lookup("sendque query_queueconfactory = (Factory) jndicontext.lookup("recvfactory"); query_queue = () jndicontext.lookup("recvqu catch (NamingException e) { System.err.println("JNDI API lookup failed: " + e.tostring()); System.exit(1);

Συνιστώσα Client -- constructor public void retrieveflights() { Flight flights[] = null; /* Message tm = send_queuesession.createtextmessage( * Create connections. tm.settext("get_flights"); */ inquirer.send(tm); Message m = responder.receive(10000); resp_queuecon = if (m!= null) { resp_queueconfactory.create(); if (m instanceof ObjectMessage) { resp_queuesession = message = (ObjectMessage) m; resp_queuecon.createsession(false, flights = (Flights[])m.getObject(); Session.AUTO_ACKNOWLEDGE); else { responder = recv_queuesession.createreceiver(resp_queue); displayerror(); resp_queuecon.start();... Συνιστώσα Client -- getflights() public static void main(string[] args) { Client c = new Client(); c.listen(); Κάναµε µια γρήγορη επισκόπηση των ϐασικών ιδεών των τεχνολογιών Ανταλλαγής Μηνυµάτων Εστιάσαµε στην τεχνολογία JMS Παρουσιάσαµε την υλοποίηση για επιλεγµένες λειτουργίες στον Εξυπηρέτη και Πελάτη