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

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

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

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

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

ΕΡΓΑΣΤΗΡΙΟ FRONT PAGE 3

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

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

Βιοϊατρική τεχνολογία

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

Δημιουργία μιας εφαρμογής Java με το NetBeans

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

ΜΑΘΗΜΑ 10 Ο ΟΡΓΑΝΩΣΗ ΤΗΣ Β ΓΙΑ ΧΡΗΣΤΕΣ (NON-EXPERTS) Α. ΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ ΕΠΙΛΟΓΩΝ 1. TOOLS DATA UTILITIES SWITCHBOARD MANAGER YES

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

Διαδικτυακές Εφαρμογές Ενότητα 4: Streams

2 η Εργαστηριακή Άσκηση

Αρχιτεκτονικές Δικτύων & Πρωτόκολλα Ι

2. Εισαγωγή Δεδομένων σε Σχεσιακή Βάση Δεδομένων

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

Ψηφιακή Επεξεργασία Σήματος

Ασφάλεια Υπολογιστικών Συστημάτων

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Χρήση εργαλείων Εικόνων, Εντολών και Ετικετών ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Τα Σχήματα ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

Ενότητα. Σχεδίαση Βάσεων Δεδομένων

Ξεκινώντας με το MIT Αρρ Inventor. 1 η Εργασία

Εφαρμοσμένη Πληροφορική ΙΙ (Ε) To Ολοκληρωμένο Περιβάλλον Ανάπτυξης (Integrated Development Environment-IDE) Netbeans 8

Δίκτυα Υπολογιστών Ενότητα 9: Dynamic Host Configuration Protocol- DHCP

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

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

4. ΔΗΜΙΟΥΡΓΙΑ ΜΟΝΤΕΛΟΥ ΠΟΛΥΔΙΑΣΤΑΤΗΣ ΑΝΑΛΥΣΗΣ

Εισαγωγή στους Υπολογιστές

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

Δίκτυα Υψηλών Ταχυτήτων Ενότητα 7: Διευθυνσιοδότηση Internet Protocol (IP) v4

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Ενότητα. Εισαγωγή στη Microsoft Access

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

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

Υπηρεσία διαμοιρασμού αρχείων

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

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

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

Ψηφιακή Τεχνολογία σε Ακαδημαϊκό Περιβάλλον

Οδηγίες για προσθήκη Web Frames Tools to the Quick Access Bar σε μεταγενέστερη έκδοση του Word

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

TEC510 Ανάπτυξη Δικτυακών Τόπων (Ε εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Γιώργος Μηλιώτης

Οδηγίες Σύνδεσης Ασύρματου Δικτύου ΤΜΗΥ&Π. Οδηγίες Σύνδεσης για λοιπά Linux/Unix Συστήματα

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Αντιγραφή με χρήση της γυάλινης επιφάνειας σάρωσης

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Εισαγωγή ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΜΕΤΑΒΛΗΤΕΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

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

Σύντομη περιγραφή 5. Για να ξεκινήσετε 6. Οι οθόνες του προγράμματος 8. Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7

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

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

Δίκτυα Υπολογιστών Ενότητα 10: Ethernet και ARP

ΤΕΙ Πελοποννήσου Τμήμα Πληροφορικής. Οδηγίες Εγκατάστασης VPN Σύνδεσης στο ΤΕΙ Πελοποννήσου

Για περισσότερες πληροφορίες σχετικά με τη συμβατότητα του λογισμικού με άλλα λειτουργικά συστήματα, επικοινωνήστε με το τμήμα υποστήριξης πελατών.

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

Προετοιμασία σύνδεσης του modem. Εγκατάσταση του Modem

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

Οδηγίες για την εγκατάσταση του πακέτου Cygwin

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Μαθηματικές Πράξεις στην Visual Basic ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

Συνοπτικός Οδηγός Χρήσης του MySQL Workbench

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Εργαστήριο 4 ο : MATLAB

Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

Τεχνικό Τοπογραφικό Σχέδιο

Οδηγός Εγκατάστασης Pylon Auto Moto Cube

Joomla! with K2 - User Guide

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση

Epsilon Net PYLON Platform

Ανοικτό Ψηφιακό Μάθημα για την κατάρτιση του προσωπικού υποστήριξης ανάπτυξης ψηφιακών μαθημάτων

Πληροφορική. Εργαστηριακή Ενότητα 1 η : Εισαγωγή στα Λογιστικά Φύλλα με το MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

ΔΙΑΔΙΚΑΣΙA ΜΕΤΑΦΟΡΑΣ ΥΛΙΚΟΥ ΜΑΘΗΜΑΤΟΣ ΑΠΟ BLACKBOARD VISTA ΣΕ MOODLE

4 η Εργαστηριακή Άσκηση

Εθνική Υποδομή ΓΕωχωρικών Πληροφοριών

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

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

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

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

Εγχειρίδιο χρήσης συστήματος ηλεκτρονικής αλληλογραφίας της Ελληνικής Ομοσπονδίας Μπριτζ

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

Σχεδιασμός Βάσεων Δεδομένων

Εγκατάσταση του εκτυπωτή από το CD λογισμικού και τεκμηρίωσης

Οδηγίες Εγκατάστασης και Χρήσης Ψηφιακών Πιστοποιητικών

Vodafone Business Connect

ΜΕΤΑΦΟΡΑ ΑΡΧΕΙΩΝ FTP

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

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

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

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

Transcript:

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

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

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

Ανάπτυξη JavaEE 6 εφαρμογής με JSF2, EJB3 και JPA

Σκοποί ενότητας Σε αυτή την ενότητα θα δημιουργήσουμε μια διαδικτυακή εφαρμογή, την CustomerApp η οποία θα εκτελεί μόνο λειτουργίες εισαγωγής και ανάγνωσης δεδομένων, χρησιμοποιώντας το NetBeans, τον Glassfish για application server, την JavaDB (Derby) για βάση δεδομένων. 5

Περιεχόμενα ενότητας (1/2) Εισαγωγή. Δημιουργώντας ένα Enterprise Application Project. Δημιουργώντας τις κλάσεις οντοτήτων από την βάση δεδομένων. Δημιουργώντας το Enterprise Java Beans - Session και Message Driven. 6

Περιεχόμενα ενότητας (2/2) Δημιουργώντας το Customer Managed Bean. Δημιουργία της σελίδας Web για την προβολή των πελατών. Δημιουργία της σελίδας Web για την προβολή των στοιχείων των πελατών. 7

Εισαγωγή (1/3) Η εφαρμογή είναι χωρισμένη σε τρία διαφορετικά επίπεδα. Presentation, Business, Data Access and Data. Η αρχιτεκτονική αυτή βοηθάει στον καθαρό διαχωρισμό των αρμοδιοτήτων, της επαναχρησιμοποίησης και της επεκτασιμότητας μέσω χρήσης των Enterprise Java Beans. 8

Εισαγωγή (2/3) Επίσης με την χρήση των Java Server Face (JSF) και Java Persistence Application (JPA), η ανάπτυξη των γραφικών διεπαφών χρήστη (GUI) είναι εύκολη, όπως επίσης εύκολη είναι και η σύνδεση του αντικειμενοστραφούς προγραμματισμού με τις σχεσιακές βάσεις δεδομένων για την εισαγωγή και λήψη δεδομένων. 9

Εισαγωγή (3/3) Σχήμα 1. Αρχιτεκτονική για τη δημιουργία Java Database. 10

Δημιουργώντας ένα Enterprise Application Project (1/3) Για το συγκεκριμένο παράδειγμα θα χρησιμοποιηθεί η βάση δεδομένων sample. Δημιουργείται αυτόματα με την εγκατάσταση του Netbeans. Σχήμα 2. Δημιουργώντας ένα Enterprise Application Project (1). 11

Δημιουργώντας ένα Enterprise Application Project (2/3) 1. Επιλέξτε File > New Project. Από το παράθυρο Categories, επιλέξετε Java EE και στο Projects επιλέξτε Enterprise Application. Πατήστε Next. 2. Επιλέξτε τη τοποθεσία που θα δημιουργηθεί το project και σαν όνομα επιλέξτε το CustomerApp και πατήστε Next. 3. Επιλέξτε το εγκατεστημένο Glassfish v3 σαν application server, και Java EE 6 για την έκδοση JAVA EE και στο τέλος επιλέξτε Finish. 12

Δημιουργώντας ένα Enterprise Application Project (3/3) Το Netbeans θα δημιουργήσει 3 projects με όνομα CustomerApp (Enterprise Application project), CustomerAppejb (EJB project) και CustomerApp-war (Web project). Σχήμα 3. Δημιουργώντας ένα Enterprise Application Project (2). 13

Δημιουργία κλάσεων οντοτήτων από την βάση δεδομένων (1/7) Πριν από οτιδήποτε άλλο πρώτα θα πρέπει να δημιουργήσουμε τις Entity Class και λόγω του ότι το Session Beans είναι υπεύθυνο για τον χειρισμό των δεδομένων. Η δημιουργεί αυτών των κλάσεων θα γίνει μέσα στο EJB project. 14

Δημιουργία κλάσεων οντοτήτων από την βάση δεδομένων (2/7) 1. Στο Projects view, κάνουμε δεξί κλίκ πάνω στο CustomerApp-ejb project και επιλέγουμε New > Entity Classes from Database. 2. Επιλέγουμε Data Source (Radio button) και από την αναπτυσσόμενη λίστα θα επιλέξουμε New Data Source. 3. Ορίζουμε το Java Naming and Directory Interface (JNDI) με όνομα jdbc/sample, και επιλέγουμε jdbc:derby://localhost:1527/sample [app on APP] σαν Database Connection και πατάμε OK. 15

Δημιουργία κλάσεων οντοτήτων από την βάση δεδομένων (3/7) 4. Από τους διαθέσιμους πίνακες (Available Tables), επιλέγουμε CUSTOMER και πατάμε το κουμπί Add έτσι ώστε να εμφανιστεί στο Selected Tables list box (Σημ. Ο συσχετιζόμενος πίνακας, DISCOUNT_CODE προστίθεται αυτόματα) τέλος πατάμε Next. 16

Δημιουργία κλάσεων οντοτήτων από την βάση δεδομένων (4/7) Σχήμα 4. Δημιουργώντας τις κλάσεις οντοτήτων από την βάση δεδομένων (1). 17

Δημιουργία κλάσεων οντοτήτων από την βάση δεδομένων (5/7) 5. Πατήστε στο κουμπί Create Persistence Unit... επιλέξτε jdbc/sample για το Data Source αφήστε τα υπόλοιπα όπως είναι κι επιλέξτε Create. Σχήμα 5. Οδηγίες. 18

Δημιουργία κλάσεων οντοτήτων από την βάση δεδομένων (6/7) 6. Δώστε ένα όνομα για το πακέτο για παράδειγμα com.customerapp.entity μέσα στο κατάλληλο πεδίο και πατήστε Next. 7. Αλλάξτε το Collection Type σε java.util.list και πατήστε Finish. 8. Προσέξτε τις νέες κλάσεις που δημιουργήθηκαν κάτω από το Source Packages στο παράθυρο προβολής των project. 19

Δημιουργία κλάσεων οντοτήτων από την βάση δεδομένων (7/7) Σχήμα 6. Δημιουργώντας τις κλάσεις οντοτήτων από την βάση δεδομένων (2). 20

Δημιουργία Enterprise Java Beans - Session και Message Driven (1/23) Έχοντας δημιουργήσει τις Entity Classes η επόμενη ενέργειά μας είναι να δημιουργήσουμε την Session (Stateless) Bean, CustomerSession μέσω της οποίας θα χειριζόμαστε και θα παρέχουμε RU λειτουργίες στο αντικείμενο. Στη συγκεκριμένη εφαρμογή που αναπτύσσουμε ο client που θα κάνει χρήση αυτών των συναρτήσεων είναι οι Java Server Pages (JSP) σελίδες. 21

Δημιουργία Enterprise Java Beans - Session και Message Driven (2/23) Θα δημιουργήσουμε επίσης έναν Message-Driven Bean (MDB), NotificationBean ο οποίος θα χρησιμοποιηθεί για τη ανταλλαγή ασύγχρονων μηνυμάτων. 1. Κάνουμε δεξί κλικ πάνω στο CustomerApp-ejb project και επιλέγουμε New > Session Bean... 2. Στον διάλογο New Session Bean, εισάγουμε για το EJB Name το CustomerSession, και για όνομα πακέτου το com.customerapp.ejb, επιλέγουμε Session Type, Stateless και αφήνουμε το Create Interface από επιλεγμένο, για παράδειγμα no Interface (New in EJB 3.1), και πατάμε Finish. 22

Δημιουργία Enterprise Java Beans - Session και Message Driven (3/23) Σχήμα 7. Δημιουργώντας το Enterprise Java Beans - Session και Message Driven. 23

Δημιουργία Enterprise Java Beans - Session και Message Driven (4/23) 3. Κάνουμε δεξί κλικ πάνω στο CustomerApp-ejb project και επιλέγουμε "New > Message-Driven Bean...«. 4. Στον διάλογο New Message-Driven Bean εισάγουμε σαν EJB Name το NotificationBean και για όνομα πακέτου το "com.customerapp.mdb", κάνουμε κλικ στο κουμπί "Add..." button στην επιλογή Project Destination. 5. Στον διάλογο Add Message Destination, επιλέγουμε για Destination Name το NotificationQueue και για Destination Type την Queue και πατάμε OK. 24

Δημιουργία Enterprise Java Beans - Session και Message Driven (5/23) Πατάμε Finish για να ολοκληρωθεί η δημιουργία MDB. Σχήμα 8. Ολοκλήρωση MDB. 25

Δημιουργία Enterprise Java Beans - Session και Message Driven (6/23) 6. Στο παράθυρο Projects view, κάνουμε διπλό κλικ στο στοιχείο CustomerSessionBean item. Σχήμα 9. Δημιουργώντας το Enterprise Java Beans - Session και Message Driven (2). 26

Δημιουργία Enterprise Java Beans - Session και Message Driven (7/23) 7. Κάνουμε δεξί κλικ στο παράθυρο του κώδικα και επιλέγουμε Persistence > Use Entity Manager. Ο σχολιασμός @PersistenceContext θα εισαχθεί αυτόματα, και έτσι ο ΕntityManager, με όνομα, em μπορεί να χρησιμοποιηθεί αμέσως. 8. Δημιουργούμε τις μεθόδους για το Session Bean: Retrieve και Update, κάνοντας δεξί κλικ στον κώδικα, και επιλέγοντας Insert Code..., κάτω από το Generate list, επιλέγουμε Add Business Method. 27

Δημιουργία Enterprise Java Beans - Session και Message Driven (8/23) 9. Στον διάλογο Add Business Method..., υπάρχουν οι Name, Return Type and Parameters για την χρήση των μεθόδων. Σχήμα 10. Επιλογές στο παράθυρο Business Method. 28

Δημιουργία Enterprise Java Beans - Session και Message Driven (9/23) 10.Επαναλαμβάνουμε τα βήματα για την συνάρτηση Update. 11.Επεξεργαστείτε τις μεθόδους, έτσι ώστε να εφαρμόσουν τις επιδιωκόμενες λειτουργίες, όπως φαίνεται στην επόμενη διαφάνεια. 29

Δημιουργία Enterprise Java Beans - Session και Message Driven (10/23) 30

Δημιουργία Enterprise Java Beans - Session και Message Driven (11/23) Τώρα θα εισάγουμε κώδικα για να στέλνουμε το ενημερωμένο αντικείμενο Customer στην ουρά προορισμού. 12. Κάνουμε δεξί κλικ πάνω στον κώδικα και επιλέγουμε "Insert Code...", και "Send JMS Message" από την Generate list. 13. Στον διάλογο Send JMS Message, επιλέγουμε "jms/notificationqueue" σαν Project Destination και κάνουμε κλικ στο ΟΚ. 31

Δημιουργία Enterprise Java Beans - Session και Message Driven (12/23) Παρατηρείστε ότι δημιουργήθηκαν αυτόματα οι δύο μέθοδοι. createjmsmessageforjmsnotificationqueue και sendjmsmessagetonotificationqueue. 32

Δημιουργία Enterprise Java Beans - Session και Message Driven (13/23) 14. Στην μέθοδο update, εισάγουμε κώδικα για να καλέσουμε την sendjmsmessagetonotificationqueue μετά την δήλωση em.merge() και τροποποιούμε την μέθοδο createjmsmessageforjmsnotificationqueue ώστε να στέλνει ObjectMessage. 33

Δημιουργία Enterprise Java Beans - Session και Message Driven (14/23) 34

Δημιουργία Enterprise Java Beans - Session και Message Driven (15/23) 35

Δημιουργία Enterprise Java Beans - Session και Message Driven (16/23) 36

Δημιουργία Enterprise Java Beans - Session και Message Driven (17/23) 37

Δημιουργία Enterprise Java Beans - Session και Message Driven (18/23) 15. Στο Message-Driven Bean, NotificationBean, διορθώνουμε την μέθοδο onmessage ώστε να τυπώνουμε τις λεπτομέρειες του ενημερωμένου αντικειμένου Customer και να δείχνουμε ότι έλαβε το μήνυμα. 38

Δημιουργία Enterprise Java Beans - Session και Message Driven (19/23) 39

Δημιουργία Enterprise Java Beans - Session και Message Driven (20/23) Μέχρι εδώ έχουμε ολοκληρώσει τις εργασίες που απαιτούνται στο EJB και θα πάμε στο επόμενο επίπεδο τις σελίδες JSF. 40

Δημιουργία Enterprise Java Beans - Session και Message Driven (21/23) Πριν δημιουργήσουμε τις σελίδες wed θα πρέπει να επιβεβαιώσουμε ότι το framework JavaServer Faces υπάρχει στο Web project, CustomerApp-war. 1. Στο παράθυρο Projects view, κάνουμε δεξί κλικ στο Web project, CustomerApp-war, και επιλέγουμε Properties (last item) 2. Από το πλαίσιο Categories, επιλέγουμε Frameworks, και επιβεβαιώνουμε ότι το JavaServer Faces έχει προστεθεί στο πλαίσιο Used Frameworks. 41

Δημιουργία Enterprise Java Beans - Session και Message Driven (22/23) Σχήμα 11. Παράθυρο project properties επιλογή frameworks. 42

Δημιουργία Enterprise Java Beans - Session και Message Driven (23/23) Στις παρακάτω διαφάνειες θα δημιουργήσουμε τις σελίδες JSF, οι οποίες θα εμφανίζουν τις οθόνες για να υλοποιούνται οι συναρτήσεις Read/Update. Θα δημιουργήσουμε δύο σελίδες Web: CustomerList όπου θα παρουσιάζονται όλοι οι πελάτες με μορφή πίνακα, και CustomerDetails όπου μπορούμε να βλέπουμε και να διορθώνουμε τα στοιχεία κάποιου πελάτη. 43

Δημιουργώντας το Customer Managed Bean (1/8) Πριν δημιουργήσουμε μια σελίδα JSF, θα πρέπει πρώτα να δημιουργήσουμε ένα managed bean μέσω του οποίου θα παρέχουμε τις απαραίτητες υπηρεσίες για τις σελίδες JSF. 1. Στο παράθυρο Projects, δεξί κλικ στο Web project, CustomerApp-war, και επιλέγουμε New > JSF Managed Bean..., δώστε σαν όνομα κλάσης το CustomerMBean, "com.customerapp.web" σαν όνομα πακέτου, customer σαν όνομα, και scope επιλέξτε session. 44

Δημιουργώντας το Customer Managed Bean (2/8) Σχήμα 12. Δημιουργία managed bean. 45

Δημιουργώντας το Customer Managed Bean (3/8) 2. Στον code editor επιλέγουμε την νέα κλάση CustomerMBean, δεξί κλικ και επιλέγουμε Insert Code...", και Call Enterprise Bean... από την λίστα. 3. Στον διάλογο "Call Enterprise Bean", ανοίγουμε το CustomerApp-ejb project επιλέγουμε CustomerSessionBean και επιλέγουμε No Interface (και η Local και η Remote δεν θα πρέπει να είναι επιλεγμένες γιατί δημιουργούμε ένα Session Bean χωρίς interface) για το Referenced Interface, και τέλος πατάμε το κουμπί OK. 46

Δημιουργώντας το Customer Managed Bean (4/8) 4. Προσέξτε ότι δημιουργείται αυτόματα η μεταβλητή, customersessionbean η οποία αντιπροσωπεύει ένα στιγμιότυπο του session bean, στην αρχή του τμήματος δηλώσεων της κλάσης. 47

Δημιουργώντας το Customer Managed Bean (5/8) Προσθέστε το υπόλοιπο των μεθόδων (properties και action handlers) και τις υλοποιήσεις στην κλάση όπως δείχνεται παρακάτω, οι οποίες θα χρησιμοποιηθούν από τις σελίδες JSF αργότερα. 48

Δημιουργώντας το Customer Managed Bean (6/8) 49

Δημιουργώντας το Customer Managed Bean (7/8) 50

Δημιουργώντας το Customer Managed Bean (8/8) 51

Δημιουργία της σελίδας Web για την προβολή των πελατών (1/17) 1. Στο παράθυρο προβολής των Projects, κάνουμε δεξί κλικ στο Web project, CustomerApp-war κι επιλέγουμε New > JSF Page..., δίνοντας για ονομασία αρχείου το CustomerList και σαν τύπο JSP File στα Options. 52

Δημιουργία της σελίδας Web για την προβολή των πελατών (2/17) Σχήμα 13. Δημιουργία σελίδας web για την προβολή πελατών (1). 53

Δημιουργία της σελίδας Web για την προβολή των πελατών (3/17) 2. Ανοίγουμε το αρχείο CustomerList.jsp σε προβολή κώδικα, και από την παλέτα εισάγουμε (drag and drop) ένα "JSF Data Table from Entity" ανάμεσα από τις ετικέτες <body></body>. 54

Δημιουργία της σελίδας Web για την προβολή των πελατών (4/17) Σχήμα 14. Δημιουργία σελίδας web για την προβολή πελατών (2). 55

Δημιουργία της σελίδας Web για την προβολή των πελατών (5/17) 3. Στο παράθυρο διαλόγου με τίτλο "JSF Table from Entity" που εμφανίζεται επιλέγουμε "com.customerapp.entity.customer" σαν Entity Bean, και "customer.customers" σαν Managed Bean και κάνουμε κλικ στο κουμπί ΟΚ. Σχήμα 15. Δημιουργία σελίδας web για την προβολή πελατών (3). 56

Δημιουργία της σελίδας Web για την προβολή των πελατών (6/17) Το αποτέλεσμα αυτού είναι η αυτόματη δημιουργία κώδικα ο οποίος θα εμφανίσει την λίστα των αντικειμένων Customer. 57

Δημιουργία της σελίδας Web για την προβολή των πελατών (7/17) 4. Σε αυτό το σημείο μπορούμε να δούμε τα αποτελέσματα της πρώτης σελίδας που δημιουργήσαμε. Στο παράθυρο προβολής των Projects κάνουμε δεξί κλικ πάνω στο project CustomerApp επιλέγουμε Clean and Build και μετά Deploy. Για να επιβεβαιώσουμε ότι η εγκατάσταση ήταν επιτυχής πάμε στον φάκελο Applications στον Glassfish server κάτω από τα Services και ελέγχουμε εάν η εφαρμογή, CustomerApp υπάρχει. 58

Δημιουργία της σελίδας Web για την προβολή των πελατών (8/17) Σχήμα 16. Δημιουργία σελίδας web για την προβολή πελατών (4). 59

Δημιουργία της σελίδας Web για την προβολή των πελατών (9/17) 5. Στον browser πληκτρολογούμε την διεύθυνση http://localhost:8080/customerappwar/faces/customerlist.jsp και θα πρέπει να δούμε την επόμενη εικόνα. 60

Δημιουργία της σελίδας Web για την προβολή των πελατών (10/17) Σχήμα 17. Δημιουργία σελίδας web για την προβολή πελατών (5). 61

Δημιουργία της σελίδας Web για την προβολή των πελατών (11/17) Θα πρέπει τώρα να μορφοποιήσουμε την σελίδα κατάλληλα ώστε να γίνει αισθητικά ποιο καλή. 6. Εισάγουμε τον ακόλουθο κώδικα στο αρχείο μορφοποίησης css/default.css. 62

Δημιουργία της σελίδας Web για την προβολή των πελατών (12/17) Εισάγουμε την μορφοποίηση στο αρχείο JSP ανάμεσα από τις ετικέτες <head> και </head> χρησιμοποιώντας την ετικέτα <link> ώστε ο κώδικας να είναι όπως παρακάτω. 63

Δημιουργία της σελίδας Web για την προβολή των πελατών (13/17) 64

Δημιουργία της σελίδας Web για την προβολή των πελατών (14/17) 65

Δημιουργία της σελίδας Web για την προβολή των πελατών (15/17) 66

Δημιουργία της σελίδας Web για την προβολή των πελατών (16/17) 67

Δημιουργία της σελίδας Web για την προβολή των πελατών (17/17) Το αποτέλεσμα το οποίο είναι πλέον αισθητικά πολύ καλύτερο φαίνεται στην επόμενη εικόνα. Σχήμα 18. Δημιουργία σελίδας web για την προβολή πελατών (6). 68

Σελίδα Web για προβολή στοιχείων πελατών (1/19) Θα δημιουργήσουμε τώρα την σελίδα στην οποία θα μπορούμε να δούμε και να διορθώσουμε τα στοιχεία κάποιου πελάτη. 1. Στο παράθυρο προβολής των Projects κάνουμε δεξί κλικ στο Web project, CustomerApp-war, και επιλέγουμε New > JSF Page..., δίνοντας για όνομα αρχείου το CustomerDetails και σαν τύπο JSP File στα Options. 2. Ανοίγουμε το αρχείο σε προβολή κώδικα και με drag and drop εισάγουμε ένα στοιχείο "JSF Form from Entity" από την παλέτα ανάμεσα από τις ετικέτες <body></body>. 69

Σελίδα Web για προβολή στοιχείων πελατών (2/19) Σχήμα 19. Δημιουργία σελίδας web για την προβολή στοιχείων των πελατών (1). 70

Σελίδα Web για προβολή στοιχείων πελατών (3/19) 3. Στο παράθυρο διαλόγου που θα εμφανιστεί JSF Form from Entity. Επιλέγουμε "com.customerapp.entity.customer" ως Entity Bean. Επιλέγουμε "customer.details" ως Managed Bean property. Κάνουμε κλικ στο OK. Σχήμα 20. Δημιουργία σελίδας web για την προβολή στοιχείων των πελατών (2). 71

Σελίδα Web για προβολή στοιχείων πελατών (4/19) Το αποτέλεσμα της προηγούμενης ενέργειας θα είναι η αυτόματη δημιουργία κώδικα για την προβολή όλων των τιμών των ιδιοτήτων του αντικειμένου Customer σε 2 columns grid. 4. Για να ενεργοποιηθεί η δυνατότητα πλοήγησης από την σελίδα προβολής όλων των πελατών στην σελίδα προβολής και διόρθωσης των στοιχείων των πελατών θα πρέπει να διορθώσουμε το αρχείο faces-config.xml με το διορθωτή PageFlow και να συνδέσουμε τις 2 σελίδες όπως φαίνεται στο παρακάτω διάγραμμα. 72

Σελίδα Web για προβολή στοιχείων πελατών (5/19) Σημείωση: Τα <from-outcome> strings LIST και DETAILS πρέπει να ταιριάζουν με το επιστρεφόμενο String των μεθόδων list και showdetails στο CustomerMBean. Σχήμα 21. Δημιουργία σελίδας web για την προβολή στοιχείων των πελατών (3). 73

Σελίδα Web για προβολή στοιχείων πελατών (6/19) 5. Για να δούμε το αποτέλεσμα των παραπάνω ενεργειών αποθηκεύουμε και εγκαθιστούμε την εφαρμογή στον server. Στη συνέχεια ανοίγουμε την διεύθυνση http://localhost:8080/customerappwar/faces/customerlist.jsp. Κάνουμε κλικ στην πρώτη γραμμή του πίνακα με τους πελάτες. 74

Σελίδα Web για προβολή στοιχείων πελατών (7/19) Σχήμα 22. Δημιουργία σελίδας web για την προβολή στοιχείων των πελατών (4). 75

Σελίδα Web για προβολή στοιχείων πελατών (8/19) Θα πρέπει να διορθώσουμε αισθητικά την σελίδα, και να εισάγουμε την λειτουργία Update. 6. O Discount Codes είναι μια σταθερή λίστα στην βάση δεδομένων έτσι μπορούμε να την παρουσιάσουμε σε ένα Drop Down List. Έτσι θα αντιστοιχίσουμε την <f:selectitem> την Discount Codes dropdown list σε μια νέα ιδιότητα, customer.discountcodes στην CustomerMBean η οποία θα επιστρέφει έναν πίνακα SelectItem (Object value, String label). 76

Σελίδα Web για προβολή στοιχείων πελατών (9/19) 77

Σελίδα Web για προβολή στοιχείων πελατών (10/19) Σημειώστε ότι η τιμή από κάθε SelectItem του Discount Code είναι τύπου Character, καθώς η τιμή που θα αντιστοιχεί στο Discount Code <h:selectonemenu> πρέπει να είναι τύπου Character. Έτσι θα χρειαστεί να δημιουργήσουμε getter and setter για την νέα ιδιότητα, discount στην Customer Entity class, η οποία χρησιμοποιεί τύπο Character ως παράμετρο. 78

Σελίδα Web για προβολή στοιχείων πελατών (11/19) 79

Σελίδα Web για προβολή στοιχείων πελατών (12/19) 7. Αντιστοιχούμε την νέα ιδιότητα, "customer.details.discount" στην τιμή από το <h:selectonemenu> του πεδίου Discount Code στο αρχείο CustomerDetails.jsp. 80

Σελίδα Web για προβολή στοιχείων πελατών (13/19) Κάνουμε και τις υπόλοιπες αλλαγές στην σελίδα JSP με την βοήθεια του code completion χαρακτηριστικού του Netbeans. Εισάγουμε την ετικέτα <link> στο <head> ώστε να εισάγουμε το αρχείο μορφοποίησης, css/default.css. Εισάγουμε τα Command buttons, <h:commandbutton> για την ενημέρωση και την επιστροφή ( Update, Back ). Αναδιατάσσουμε τις γραμμές και χρησιμοποιούμε ένα διαφορετικό background color για το panelgrid. 81

Σελίδα Web για προβολή στοιχείων πελατών (14/19) 82

Σελίδα Web για προβολή στοιχείων πελατών (15/19) 83

Σελίδα Web για προβολή στοιχείων πελατών (16/19) 84

Σελίδα Web για προβολή στοιχείων πελατών (17/19) 85

Σελίδα Web για προβολή στοιχείων πελατών (18/19) Τα αποτελέσματα των αλλαγών. Σχήμα 23. Customer Details. 86

Σελίδα Web για προβολή στοιχείων πελατών (19/19) Όταν κάνουμε κλικ στο κουμπί Update θα πρέπει να βλέπουμε κάτι παρόμοιο με τα παρακάτω μέσα στο αρχείο server.log. 87

Βιβλιογραφία 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. 88

Τέλος Ενότητας