Διαδικτυακές Εφαρμογές Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα του ΤΕΙ Δυτικής Μακεδονίας και της Ανώτατης Εκκλησιαστικής Ακαδημίας Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Enterprise Java Beans (EJB) και Java Server Faces
Σκοποί ενότητας Σε αυτή την ενότητα ασχολούμαστε με τα Enterprise Java Beans και τα Java Server Faces. 5
Περιεχόμενα ενότητας (1/2) Εισαγωγή. Τύποι EJB. CustomerEJB. CustomerEJBRemote. 6
Περιεχόμενα ενότητας (2/2) Ο κώδικας της CustomerEJB. Java Server Faces. Εφαρμογές Web. 7
Εισαγωγή (1/3) EJBs είναι server-side στοιχεία τα οποία ενσωματώνουν επιχειρηματική λογική και έχουν τον έλεγχο των συναλλαγών και την ασφάλεια αυτών. Έχουν επίσης μια ολοκληρωμένη στοίβα για την ανταλλαγή μηνυμάτων, τον προγραμματισμό, απομακρυσμένη πρόσβαση, τελικά σημεία παροχής υπηρεσιών διαδικτύου (SOAP και REST). 8
Εισαγωγή (2/3) Επιπλέον, τα EJBs μπορούν να ενσωματωθούν με άλλες τεχνολογίες είτε JavaSE (Java Standard Edition) είτε JavaEE (Java Enterprise Edition), όπως JDBC, JavaMail, JPA, Java Transaction Application Programming Interface - API (JTA), Java Messaging Service (JMS), Java Authentication και Authorization Service (JAAS), Java Naming και Java Directory Interface (JNDI), και Remote Method Invocation (RMI). 9
Εισαγωγή (3/3) Το EJB βρίσκεται πάνω από το επίπεδο Persistence και αποτελεί εισαγωγικό επίπεδο για το επίπεδο παρουσίασης (π.χ. Java Server Faces JSF). Το EJB ορίζει τύπους που οι προγραμματιστές μπορούν να κατασκευάσουν αλλά και να προσαρμόσουν. 10
Τύποι EJB (1/5) Session Beans τα οποία εκτελούν επιχειρηματικές (business) λειτουργίες και διευθύνουν τις δοσοληψίες και τον έλεγχο πρόσβασης. Υπάρχουν δύο τύποι session beans Tα stateless τα οποία δεν διατηρούν την κατάστασή τους με την πλευρά του πελάτη και επομένως είναι ποιο αποδοτικά όσον αφορά τους πόρους του συστήματος. Συνήθως με τα stateless υλοποιούμε υπηρεσίες ιστού. Tα statefull τα οποία μπορούν να αποθηκεύουν την κατάστασή τους σε κάποιο μέσο αποθήκευσης δεδομένων κατά την διάρκεια κάποιας συναλλαγής (για παράδειγμα καλάθι αγορών σε ένα e-shop). 11
Τύποι EJB (2/5) Message-Driven Beans (MDB) καλούνται ασύγχρονα για να ανταποκριθούν σε εξωτερικά γεγονότα, μέσω της σχέσης τους με μια ουρά μηνυμάτων ή άλλου αντικειμένου. Entities Beans τα οποία είναι αντικείμενα που έχουν μοναδική ταυτότητα και αναπαριστούν τα αποθηκευμένα (persistent) δεδομένα, που υπάρχουν αποθηκευμένα στην βάση δεδομένων. Παράδειγμα επιχειρησιακών αντικειμένων αποτελούν οι πελάτες, οι παραγγελίες, τα προϊόντα και άλλα. 12
Τύποι EJB (3/5) Το Session Bean υποκρύπτει το επιχειρηματικό μοντέλο και τις συναλλαγές από τον χρήστη. Το επόμενο παράδειγμα δείχνει πόσο απλά αναγνωρίζεται αν μια κλάση είναι ένα session bean ώστε να εφαρμοστούν σε αυτήν διάφορες υπηρεσίες που αφορούν το επιχειρηματικό μοντέλο. 13
Τύποι EJB (4/5) Σχήμα 1. Customer EJB. 14
Τύποι EJB (5/5) Προηγούμενες εκδόσεις της J2EE απαιτούσαν από τους προγραμματιστές να δημιουργήσουν αρκετά αντικείμενα προκειμένου να δημιουργήσουν ένα session bean. Από την Java EE5 και το EJB 3.0 είναι αρκετά μία κλάση και ένα ή περισσότερα business interfaces. Το EJB 3.1 πάει μακρύτερα και επιτρέπει ένα σχολιασμένο POJO (Plain Old Java Object) να έχει τον ρόλο του session bean. 15
Τύποι EJB Όπως μπορούμε να παρατηρήσουμε στον προηγούμενο κώδικα, δεν χρειάζεται να υλοποιήσουμε κανένα Interface και δεν χρειάζεται κανένα XML αρχείο ρυθμίσεων. Το μόνο που χρειάζεται για να αλλάξουμε μια κλάση ώστε να είναι δυνατή με ασφάλεια η πραγματοποίηση συναλλαγών είναι ο σχολιασμός Stateless. 16
CustomerEJB Αυτό δίνει τη δυνατότητα στην CustomerEJB χρησιμοποιώντας τον entity manager να δημιουργεί και να δέχεται αντικείμενα Customer από την βάση δεδομένων. Στον κώδικα που ακολουθεί εισάγουμε ένα πελάτη στην βάση δεδομένων. 17
CustomerEJBRemote (1/3) Σχήμα 2. Εισαγωγή απομακρυσμένου πελάτη. 18
CustomerEJBRemote (2/3) Θα δημιουργήσουμε ένα interface (CustomerEJBRemote) το οποίο θα χρησιμοποιεί ο χρήστης για να αλληλεπιδρά με την βάση δεδομένων. 19
CustomerEJBRemote (3/3) Επίσης θα αλλάξουμε την Customer ώστε να υλοποιεί την διασύνδεση Seralization και τέλος ξαναγράφουμε την Customer ως εξής. Σχήμα 3. Δημιουργία interface και αλλαγή customer. 20
CustomerEJB - Συνέχεια Θα γράψουμε τώρα την CustomerEJB η οποία λειτουργεί σαν μια πρόσοψη και χειρίζεται λειτουργίες CRUD (Create, Read, Update, Delete). Επίσης η CustomerEJB υλοποιεί το interface CustomerEJBRemote. 21
Ο κώδικας της CustomerEJB (1/2) Σχήμα 4. Ο κώδικας της CustomerEJB (1). 22
Ο κώδικας της CustomerEJB (2/2) Σχήμα 5. Ο κώδικας της CustomerEJB (2). 23
Java Server Faces Οι JSF (Java Server Faces) είναι ένα πλαίσιο εφαρμογών Web οι οποίες απλοποιούν την σχεδίασης τους γραφικού περιβάλλοντος και διαχωρίζουν το Business από το Presentation Model. Εκτός από τα τυπικά συστατικά που υπάρχουν στο Java Server Faces, μπορούμε να χρησιμοποιήσουμε και άλλες βιβλιοθήκες τρίτων κατασκευαστών. 24
Εφαρμογές Web (1/3) Οι web εφαρμογές NetBeans που χρησιμοποιούν το πλαίσιο εφαρμογών JSF αποτελούνται από μια ή περισσότερες σελίδες JSP ( Java Server Pages - τα αρχεία αυτά έχουν την επέκταση.jsp). Μέσα σε μια σελίδα JSP μπορούμε να ενσωματώσουμε Javascript κώδικα ώστε να προσθέσουμε διαλειτουργικότητα στην σελίδα. 25
Εφαρμογές Web (2/3) Στο Netbeans μπορούμε να δημιουργήσουμε σελίδες JSP μέσα από έναν Visual Editor, απλά σύροντας και αφήνοντας συστατικά μέσα στην σελίδα (Drag and Drop). Κάθε JSP αρχείο που δημιουργείται στο NetBeans και αντιπροσωπεύει μια ιστοσελίδα έχει και μια αντίστοιχη κλάση JavaBean που ονομάζεται page bean. 26
Εφαρμογές Web (3/3) Η κλάση JavaBean περιέχει έναν constructor χωρίς ορίσματα, συναρτήσεις set και get, χειριστές συμβάντων και μεθόδους κύκλου ζωής των σελίδων. 27
Βιβλιογραφία 1. Java προγραμματισμός, Όγδοη έκδοση, Deitel Paul J., Deitel Harvey M., Εκδόσεις Γκιούρδας Μ.. 2. «Προγραμματισμός Internet και World Wide Web», Deitel Paul J., Deitel Harvey M., Εκδόσεις Γκιούρδας Μ.. 3. «Πλήρες εγχειρίδιο της Java 6», Lemay C, Εκδόσεις Γκιούρδας Μ., Αθήνα 2007. 28
Τέλος Ενότητας