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

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

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

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

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

Java Servlets: Principles and Programming 1/19

Περιεχόμενα ΕΥΧΑΡΙΣΤΙΕΣ ΕΙΣΑΓΩΓΗ Σχετικά με τους συγγραφείς...24

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

Πτυχιακή εργασία. Ανάπτυξη παιχνιδιού πολλών παικτών

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 8 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Java Server Pages (JSP)

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

Διαδικτυακές Εφαρμογές Ενότητα 5: Servlets και JSPs

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Servlet

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

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

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

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

Διαδίκτυο και Εφαρμογές 2η Άσκηση Μετασχηματισμοί XML και XSL. Γιαννέλος Γιάννης ΑΜ: Μαρινέλλης Γιώργος ΑΜ:

Cloud Computing Database with Amazon SimpleDB

BPMN Abstraction Tool ΠΑΡΟΥΣΙΑΣΗ ΕΡΓΑΛΕΙΟΥ ΑΦΑΙΡΕΣΗΣ ΕΠΙΧΕΙΡΗΣΙΑΚΩΝ ΔΙΑΔΙΚΑΣΙΩΝ

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

Αξιολόγηση Υπηρεσιών ιαδικτύου µέσω Περιπτώσεων Μελέτης

ΑΝΑΠΤΥΞΗ WEB ΕΦΑΡΜΟΓΩΝ ΜΕ JAVA SERVLETS

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα

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


Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP

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

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

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

Αρχιτεκτονική πελάτη-εξυπηρέτη Οι διεργασίες που εκτελούνται στο δίκτυο είναι είτε πελάτες (clients) είτε εξυπηρέτες (servers). Εξυπηρέτης: παθητικός,

Τα βασικά για Servlet

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Βασικές Έννοιες Web Εφαρμογών

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

Remote Method Invocation (RMI)

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

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

Τεχνικός Εφαρμογών Πληροφορικής

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

Δομή και Στόχοι του Μαθήματος - Εισαγωγή

Εισαγωγή στον Κατανεμημένο Προγραμματισμό

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

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

ΑΛΕΞΑΝΡΕΙΟ Τ.Ε.Ι. ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΩΝ ΕΦΑΡΜΟΦΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Πτυχιακή Εργασία

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

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

Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης. Μικρομεσαίες Επιχειρήσεις και Καινοτομία

Distributed Systems II

Java & Java EE 3o Μέρος: Διασφάλιση ασφάλειας σε εφαρμογές Java Enterprise Edition. Κακαρόντζας Γεώργιος

HelloApplet. Παύλος Εφραιμίδης Java Applets 1

Εφαρμογές Ανοιχτού Κώδικα στη Βιβλιοθήκη & Κέντρο Πληροφόρησης του Πανεπιστημίου Μακεδονίας. Φίλιππος Κολοβός

ηµιουργία ιαλογικών Προγραµµάτων για το Web

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

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

Κεφάλαιο 7 ΔΙΑΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ JAVA SERVLETS

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

Προβλήµατα CGI, SSI CGI: Απόδοση Έναρξη νέας διαδικασίας για εκτέλεση (2 διαδικασιών σε περίπτωση διερµηνευόµενης γλώσσας, π.χ. perl). Κοινές διαδικασ

8ο Πανελλήνιο Συμποσιο Ωκεανογραφίας & Αλιείας 637

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

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

Ταχύτητα, Απλότητα & Αξιοπιστία

Ανάπτυξη Plugins για το AgentSheets

Ενιαίο Σύστημα Ψηφιακής Βιβλιοθήκης του Πανεπιστημίου Αθηνών

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Ανοικτά Ακαδηµα κά Μαθήµατα. ιαδικτυακές εφαρµογές ιαχείριση µαθηµάτων µε ηλεκτρονικό τρόπο Πρόγραµµα σπουδών διδακτική ενότητα

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

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΙΟΙΚΗΣΗΣ. Ανάπτυξη Πληροφοριακών Συστηµάτων Επισκόπηση Π.Σ. & τεχνικές για Ανάλυση και Ανάπτυξη. πληροφοριακών συστηµάτων

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

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

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

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

Java & Java EE 1o Μέρος: Servlets και Java Server Pages. Κακαρόντζας Γεώργιος

Υποέργο: ΒΕΛΤΙΣΤΗ ΑΥΤΟΜΑΤΗ ΚΑΤΑΡΤΙΣΗ ΩΡΟΛΟΓΙΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΜΑΘΗΜΑΤΩΝ ΚΑΙ ΕΞΕΤΑΣΕΩΝ ΓΙΑ ΣΧΟΛΕΣ ΑΕΙ & ΤΕΙ ΜΕ ΧΡΗΣΗ ΜΕΘΟ ΩΝ ΕΞΕΛΙΚΤΙΚΗΣ ΥΠΟΛΟΓΙΣΤΙΚΗΣ

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

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

ΚΕΦΑΛΑΙΟ Web Services

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

ΑΡΧΙΜΗ ΗΣ ΙΙ ΕΝΙΣΧΥΣΗ ΕΡΕΥΝΗΤΙΚΩΝ ΟΜΑ ΩΝ ΣΤΑ Τ.Ε.Ι.

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

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

Λειτουργικά Συστήματα Η/Υ

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #1 ο : Εισαγωγή στο Περιβάλλον Ανάπτυξης (IDE)

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Συγκριτικά Πλεονεκτήµατα Γραµµατείας 2003 έναντι Γραµµατείας 2.5

Java Servlets. Εισαγωγή. Σταύρος Πολυβίου

Πληροφορική στιςεπιχειρήσεις

Εξαιρέσεις. try, catch, finally, throw, throws

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

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

ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Επιβλέπων Καθηγητής: Αλέξανδρος Χατζηγεωργίου Εξεταστές: Χρήστος Γεωργιάδης. Τμήμα Εφαρμοσμένης Πληροφορικής

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

Κατανεµηµένος Προγραµµατισµός & Προγραµµατισµός στο ιαδίκτυο

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

Επιχειρησιακά Πληροφοριακά Συστήματα. Site: Στόχος Σκοπός μαθήματος

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

Καλώς ήλθατε στην παρουσίαση του έργου SmartGov.

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

Transcript:

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

Ενα Servlet είναι µια συνιστώσα λογισµικού JAVA µικρή σε µέγεθος εκτελείτε σε ένα ειδικό περιβάλλον -- Servlet Engine παράγει έξοδο που ορίζεται από την HTML παράγει έξοδο σύµφωνα µε το HTTP δέχεται είσοδο σύµφωνα µε το HTTP Συµπεριφέρεται σαν µια απλή σελίδα HTML έχει ένα URI αντιδρά σε κάθε κλήση HTTP/GET επιστρέφει κώδικα HTML επεξεργάζεται κλήσεις HTML/POST Το περιβάλλον όπου εκτελούνται τα Servlets συνδέεται µε τον HTTP (Web) Server Απλή εκδοχή Το περιβάλλον όπου εκτελούνται τα Servlets είναι το ίδιο µε τον HTTP (Web) Server Κοινό πρόγραµµα (executable) Συνήθως υποστηρίζονται και σελίδες JSP Το επίπεδο παρουσίασης είναι ένας web-browser resin server της caucho www.caucho.com tomcat server της Apache tomcat.apache.org Ενοποιηµένο Περιβάλλον Εκτέλεσης Συνηθισµένη εκδοχή Το περιβάλλον όπου εκτελούνται τα Servlets συνδέεται εξωτερικά µε τον HTTP (Web) Server ιαφορετικά προγράµµατα (executable) Ενα ενδιάµεσο επίπεδο µεταξύ των δύο υψηλότερων επιπέδων Οι κλήσεις που αφορούν τα Servlet προωθούνται στο χαµηλότερο επίπεδο Ανεξάρτητο Περιβάλλον Εκτέλεσης Ενα Servlet δηµιουργείτε από το περιβάλλον εκτέλεσης όταν κληθεί για πρώτη ϕορά ίδιος τρόπος µε τα απλά, τοπικά, αντικείµενα Μπορεί να δηµιουργηθεί από το περιβάλλον σε οποιοδήποτε χρόνο Μετά την δηµιουργία, γίνεται µια κλήση στη µέθοδο init(...) Το περιβάλλον που δηµιούργησε το αντικείµενο είναι υπεύθυνο για την διαχείριση του Κάθε αποµακρυσµένη διεργασία που επιθυµεί να χρησιµοποιήσει το αντικείµενο, πρέπει να επικοινωνήσει µε την µονάδα που το δηµιούργησε (διαχειριστή) Το περιβάλλον δεν κρατάει δείκτες προς τις διεργασίες που έχουν Ϲητήσει πρόσβαση στο κατανεµηµένο αντικείµενο Το αντικείµενο µπορεί να περισυλλεχθεί ανάλογα µε την χρήση

Οι συνιστώσες υλοποιούν το interface HttpServlet µέθοδος init(...) µέθοδος doget(...) µέθοδος dopost(...) Η είσοδος ορίζεται από την συνιστώσα HttpServletRequest Μια δοµή Map αποθηκεύει τις παραµέτρους της κλήσης Προσφέρει αντικείµενα ServletInputStream για χειρισµό εισερχόµενων ϱοών Η έξοδος ορίζεται από την συνιστώσα HttpServletResponse Προσφέρει αντικείµενα PrintWriter για έξοδο σε µορφή κειµένου Προσφέρει ServletInputStream για χειρισµό εξερχόµενων ϱοών Tomcat -- Apache Υλοποίηση αυστηρά υπό τα πρότυπα των προδιαγραφών της JAVA Reference Implementation για τα Java Servlet και JSP (Java Server Pages) IAS -- Oracle Υλοποίηση όλων των προδιαγραφών που ορίζει η J2EE (Java 2 Enterprise Edition) ιασύνδεση µε τα υπόλοιπα προιόντα της Oracle Resin -- Caucho Περιβάλλον εκτέλεσης υψηλών επιδόσεων Ιδιαίτερη επεκτασιµότητα και βιωσιµότητα µε την διασύνδεση > 1 περιβάλλοντων εκτέλεσης Ανοικτός κώδικας Η υλοποίηση σε Servlets ϐασίζεται στην παρουσία του web-browser Μικρότερο κόστος υλοποίησης του επίπεδου παρουσίασης Εστιάζουµε στο περιεχόµενο της διεπαφής και τον τρόπο παρουσίας του Για την παρουσίαση των δεδοµένων Βασιζόµαστε στην HTML Μπορούµε να χρησιµοποιήσουµε άλλες γλώσσες, π.χ. XML Χρησιµοποιούµε όλα τα αντικείµενα (π.χ. εικόνες) που δηµοσιεύει ο HTTP (web) server Μπορούµε να στείλουµε δεδοµένα σε µορφή binary π.χ. µια εικόνα, ένα κείµενο PDF Το επίπεδο παρουσίασης (web-browser) δεν χρειάζεται να εκτελέσει κώδικα JAVA Σε αντίθεση µε τα Applets Το περιβάλλον εκτέλεσης χειρίζεται αυτόµατα τις ταυτόχρονες κλήσεις στο ίδιο αντικείµενο Η υλοποίηση µε Servlet είναι ορισµένα αρνητικά στοιχεία Απαιτεί την παρουσία ενός περιβάλλοντος εκτέλεσης Απαιτεί την παρουσία ενός HTTP (web) server Πρέπει να ενηµερώνουµε το περιβάλλον εργασίας όταν προσθέτουµε/αφαιρούµε Servlets Μπορούµε να µειώσουµε τον χρόνο υλοποίησης µε την χρήση JSP/PHP/ASP Το επίπεδο παρουσίασης παραµένει το ίδιο Αλλάζει η γλώσσα προγραµµατισµού ο τρόπος υλοποίησης παραµένει ο ίδιος Μπορούµε να απεµπλέξουµε το περιεχόµενο από τον τρόπο που παρουσιάζεται Template Engine (Apache Velocity Engine, Jakarta Project)

Απλό παράδειγµα Servlet Η υλοποίηση µπορεί να γίνει σε δύο επίπεδα Απλές λειτουργίες υλοποιούνται ως σελίδες JSP/PHP/ASP Σύνθετες λειτουργίες υλοποιούνται ως Servlets Αλλος τρόπος διαχωρισµού της υλοποίησης σε δύο επίπεδα Οι ϐασικές λειτουργίες υλοποιούνται ως σελίδες JSP/PHP/ASP Οι υπολογιστικά σύνθετες λειτουργίες υλοποιούνται ως Servlets Οι λειτουργίες που δηµιουργούν σύνθετες εξόδους υλοποιούνται ως Servlets Μια σύνθετη λειτουργία Χρησιµοποιεί µια εξωτερική ϐιβλιοθήκη Παράγει ένα κείµενο σε µορφή PDF public class SimpleServlet extends HttpServlet { public void doget(httpservletrequest request, out.println("<html>\n<head>\n"); out.println(""); out.println("<title>a SimpleServer Page</TITLE>\n out.println("</head>\n<body>\n"); out.println("<h1>simpleservlet was here.</h1>\n") out.println("</body>\n</html>\n"); Απλό παράδειγµα Servlet Η δηµιουργία των αντικειµένων Servlet µπορεί να παραµετροποιηθεί Βασιζόµαστε στην µέθοδο init(...) Ορίζεται από το interface HttpServlet Η παραµετροποίηση γίνεται µε αντικείµενα ServletConfig Οι τιµές των παραµέτρων ορίζονται από το περιβάλλον εκτέλεσης Η ίδια συνιστώσα Servlet µπορεί να δηµιουργήσει αντικείµενα µε διαφορετικές παραµέτρους και όνοµα (alias) Η κλήση των µεθόδων ενός αντικειµένου Servlet µπορεί να παραµετροποιηθεί Κατά την κλήση της µεθόδου doget(...) Η παραµετροποίηση γίνεται µέσω του αντικείµενου HttpServletRequest π.χ.: http://localhost:8080/simpleservlet?cmd=5 public class SimpleServlet extends HttpServlet { public void doget(httpservletrequest request, out.println("<html>\n<head>"); out.println(""); out.println("<title>a SimpleServer Page</TITLE>") out.println("</head>\n<body>"); out.println("<h1>simpleservlet command: "); out.println(request.getparametervalues("cmd")); out.println("</h1>\n</body>\n</html>");

Συνιστώσα SearchFlights (1) Υλοποιούµε τρεις συναλλαγές µεταξύ Πελάτη-Εξυπηρέτη (δύο υψηλότερα επίπεδα) Αναζήτηση Πτήσεων επιστρέφει όλες τις πτήσεις που υπάρχουν στη ϐάση δεδοµένων Αναζήτηση Θέσεων επιστρέφει όλες τις κρατήσεις που αφορούν ένα συγκεκριµένο πελάτη Κράτηση ϑέσης υποθέτουµε ότι η πτήση και ο πελάτης υπάρχουν ήδη στους πίνακες της ϐάσης δεδοµένων (για χάριν ευκολίας) Υλοποιήσαµε τις ίδιες λειτουργίες µε την χρήση RMI Οι υπόλοιπες λειτουργίες αφήνονται σαν άσκηση Ο κώδικας ϑα αναρτηθεί στην σελίδα του µαθήµατος import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.sql.*; public class SearchFlights extends HttpServlet { static final String DB = "jdbc:odbc:airline"; static final String USER = ""; static final String PASSWD = ""; public void doget(httpservletrequest request, out.println("<html>\n<head>\n<title>"); out.println("search Flights Results Page"); out.println("</title>\n</head>\n<body>"); Συνιστώσα SearchFlights (2) try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection db = DriverManager.getConnection(DB, USER, PASSWD); Flight [] flights = Flight.getFlights(db); db.close(); out.println("<h2>flight Information:</H2>"); for (int i=0; i < flights.length; i++) out.println(flights[i] + "<BR>"); catch (Exception ex) { out.println("<h2>error:</h2>"); out.println(ex); out.println("</body>\n</html>"); Κάθε ϕορά που καλείται η µέθοδος (κλήση web-browser) ηµιουργείται µια νέα σύνδεση µε τη ϐάση δεδοµένων Εκτελείται ο κώδικας SQL Αποσυνδέεται από τη ϐάση δεδοµένων Κάθε ϕορά που δηµιουργούµε µια νέα σύνδεση στη ϐάση δεδοµένων ηµιουργείται ένα νέο Socket Η ϐάση δεδοµένων ελέγχει τα στοιχεία (credentials) εσµεύεται µνήµη (και στα δύο επίπεδα) Μπορούµε να διατηρούµε µια σύνδεση όταν δηµιουργηθεί το Servlet για πρώτη ϕορά Τα στοιχεία (credentials) είναι παράµετροι (ServletConfig) Αν έχουµε πολλά Servlets?

Σελίδα SearchSeats.html <HTML> <HEAD> <TITLE>Search Seats Test Page</TITLE> </HEAD> <BODY> <FORM ACTION="http://127.0.0.1:8080/servlet/SearchSeats" METHOD=POST> <H1>Search Seats Test Page</H1> <P>Passenger No: <INPUT TYPE=TEXT NAME=passenger_no> <P> <INPUT TYPE=SUBMIT> <INPUT TYPE=RESET> </FORM> </BODY> </HTML> Συνιστώσα SearchSeats public class SearchSeats extends HttpServlet { Connection db; public void dopost(httpservletrequest request, out.println("<html>\n<head>\n<title>"); out.println("search Seats Results Page"); out.println("</title>\n</head>\n<body>"); String passenger_no = request.getparameter("passenger_no"); Συνιστώσα SearchSeats try { Reservation [] seats = Reservation.getPassenger( db, passenger_no); out.println("<h2>seat Information:</H2>"); for (int i=0; i < seats.length; i++) out.println(seats[i] + "<BR>"); catch (Exception ex) { out.println("<h2>error:</h2>"); out.println(ex); out.println("</body>"); out.println("</html>"); ηµιουργήστε ένα ϕάκελο και τοποθετήστε όλα τον κώδικα της υλοποίησης και την ϐάση δεδοµένων (airline.mdb) Ρυθµίστε τον οδηγό ODBC Κάντε compile τον κώδικα: javac *.java Εγκαταστήστε ένα περιβάλλον εκτέλεσης Servlet π.χ. Tomcat, Resin (stand-alone) Κάντε τις κατάλληλες ϱυθµίσεις για την προσθήκη των νέων Servlets Ξεκινήστε τον Εξυπηρέτη Ξεκινήστε ένα web-browser

Κάναµε µια γρήγορη επισκόπηση των ϐασικών ιδεών της τεχνολογίας Servlets Παρουσιάσαµε την υλοποίηση για επιλεγµένες λειτουργίες στον Εξυπηρέτη Ο κώδικας ϑα αναρτηθεί στην σελίδα του µαθήµατος µαζί µε επιπλέον παραδείγµατα Στο επόµενο ϕροντιστήριο ϑα µελετήσουµε την τεχνολογία JMS -- JAVA Message Service