Προγραμματισμός

Διαβάστε τα πάντα για το EJB 2.0

Το Enterprise JavaBeans 2.0, που κυκλοφόρησε στις 2 Ιουνίου, δεν είναι απλώς μια έκδοση σημείου, αλλά και μια νέα έκδοση των προδιαγραφών. Σε περισσότερες από 500 σελίδες, η προδιαγραφή EJB 2.0 είναι 200 ​​σελίδες (66 τοις εκατό) μεγαλύτερη από την προηγούμενη προδιαγραφή EJB 1.1. Οι πιο σημαντικές αλλαγές στην προδιαγραφή είναι αυτές που έγιναν στην εμμονή με διαχείριση κοντέινερ (CMP) και την εισαγωγή ενός εντελώς νέου τύπου φασολιού, το ΜήνυμαDrivenBean.

Το μεγαλύτερο μέρος των αλλαγών στο EJB 2.0 βρίσκονται στον ορισμό ενός νέου μοντέλου CMP. Είναι ριζικά διαφορετικό από το παλιό μοντέλο CMP επειδή εισάγει έναν εντελώς νέο συμμετέχοντα, το διαχειριστής επιμονήςκαι έναν εντελώς νέο τρόπο καθορισμού πεδίων με διαχείριση κοντέινερ, καθώς και σχέσεων με άλλα φασόλια και εξαρτημένα αντικείμενα.

Η εισαγωγή του ΜήνυμαDrivenBean (το μήνυμα bean) είναι επίσης σημαντικό. Το μήνυμα bean αντιπροσωπεύει την ενοποίηση του JMS (Java Message Service) με το EJB για τη δημιουργία ενός εντελώς νέου τύπου bean που έχει σχεδιαστεί για να χειρίζεται ασύγχρονα μηνύματα JMS. Αυτός ο συναρπαστικός νέος τύπος φασολιών παρέχει ένα βασικό μοντέλο για πελάτες JMS, επιτρέποντάς τους να αναπτυχθούν στο πλούσιο και στιβαρό περιβάλλον ενός συστήματος κοντέινερ EJB.

Υπάρχουν πολλές άλλες μικρότερες αλλαγές που έγιναν στην προδιαγραφή. Αυτές οι άλλες αλλαγές, αν και σημαντικές, αφορούν κυρίως τη σύσφιξη των προδιαγραφών για την εξάλειψη των αμφισημιών και τη βελτίωση των φορητών στοιχείων. Αυτό το άρθρο επικεντρώνεται στα νέα μοντέλα CMP και συστατικών φασολιών μηνυμάτων που παρουσιάζονται στο EJB 2.0.

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

Επιμονή με διαχείριση κοντέινερ

Η εμμονή που διαχειρίζεται το κοντέινερ έχει υποστεί ριζικές αλλαγές στο EJB 2.0. Στο EJB 2.0, ο διαχειριστής επιμονής χειρίζεται την επιμονή των κόκκων οντοτήτων CMP αυτόματα κατά το χρόνο εκτέλεσης. Ο ανθεκτικός διαχειριστής είναι υπεύθυνος για τη χαρτογράφηση του φασολιού οντότητας στη βάση δεδομένων με βάση ένα νέο συμβόλαιο διαχειριστή διατήρησης φασολιών που ονομάζεται αφηρημένο σχήμα εμμονής. Επιπλέον, ο διαχειριστής επιμονής είναι υπεύθυνος για την εφαρμογή και την εκτέλεση μεθόδων εύρεσης με βάση μια νέα γλώσσα ερωτήματος που ονομάζεται EJB QL.

Είναι σημαντικό να σημειωθεί ότι τα προϊόντα που συμμορφώνονται με τις προδιαγραφές EJB 2.0 πρέπει να υποστηρίζουν το μοντέλο EJB 1.1 CMP καθώς και το νέο μοντέλο EJB 2.0. Ενώ αυτά τα μοντέλα δεν είναι συμβατά, απαιτείται υποστήριξη για το μοντέλο EJB 1.1 για να εξασφαλιστεί συμβατότητα προς τα πίσω.

Το σχήμα αφηρημένης επιμονής

Για να καταλάβω πώς λειτουργεί το σχήμα αφηρημένης επιμονής και γιατί είναι σημαντικό, θα σας εξετάσω γρήγορα πώς χειρίζεται το CMP στο EJB 1.1 και μετά θα συζητήσω πώς ορίζεται στο EJB 2.0.

Το μοντέλο EJB 1.1 CMP

Στο EJB 1.1, ο προγραμματιστής φασολιών είναι υπεύθυνος για να δηλώσει τα επίμονα πεδία της κατηγορίας φασολιών είτε ως πρωτόγονοι Java είτε ως σειριοποιήσιμοι τύποι. Τα ακόλουθα παραδείγματα δείχνουν ένα Υπάλληλος κατηγορία φασολιών επιχειρήσεων, όπως ορίζεται στο EJB 1.1, με πολλά πεδία CMP:

// το Employee bean class public class EmployeeBean εφαρμόζει java.ejb.EntityBean {// πεδία παρουσίας EntityContext ejbContext; // πεδία διαχείρισης εμπορευματοκιβωτίων δημόσια int ταυτότητα; δημόσια συμβολοσειρά firstName; δημόσια συμβολοσειρά επώνυμο; δημόσιος διπλός μισθός · δημόσια διεύθυνση Διεύθυνση; δημόσιο Integer ejbCreate (int id, String fname, String lname) {ταυτότητα = id; firstName = fname; επώνυμο = lname; επιστροφή μηδέν; } ...} // Η διεύθυνση εξαρτάται από τη διεύθυνση κλάσης που εξαρτάται από τη διεύθυνση Το Serializable {public String street; δημόσια πόλη String; δημόσια κατάσταση String; δημόσιο φερμουάρ String; } 

Όταν μια σχεσιακή βάση δεδομένων χρησιμοποιείται για επιμονή, τα πρωτόγονα πεδία όπως Ταυτότητα, όνομα, επίθετο, και Μισθός είναι αρκετά εύκολο να επιμείνουμε δεδομένου ότι χαρτογραφούν ωραία σε τύπους SQL όπως ΑΚΕΡΑΙΟΣ ΑΡΙΘΜΟΣ, ΑΠΑΝΘΡΑΚΩΝΩ, και ΔΙΠΛΟ.

Στο EJB 1.1, παρέχει η περιγραφή XML ανάπτυξης ενός CMP bean cmp-πεδίο στοιχεία για τον εντοπισμό των επίμονων πεδίων (πεδία διαχειριζόμενου κοντέινερ) στην κατηγορία φασολιών. Όπως φαίνεται παρακάτω, το cmp-πεδίο Τα στοιχεία χρησιμοποιούνται για τη διάκριση μεταξύ των πεδίων που είναι γραμμένα στη βάση δεδομένων και εκείνων που δεν είναι. Για παράδειγμα, το Περιεχόμενο ejb Το πεδίο δεν περιλαμβάνεται στη λίστα των πεδίων που διαχειρίζεται το κοντέινερ και επομένως δεν είναι ένα επίμονο πεδίο.

   EmployeeEJB ... Container ... ταυτότητα firstName επώνυμο διεύθυνση μισθού ... 

Ο πάροχος κοντέινερ παρέχει ένα εργαλείο για τη χαρτογράφηση των επίμονων πεδίων του φασολιού στις στήλες στους πίνακες βάσης δεδομένων, συνήθως έναν πίνακα ανά φασόλι. Σειριοποιήσιμα είδη όπως Διεύθυνση, ωστόσο, είναι πιο δύσκολο να επιμείνουμε. Στο EJB 1.1 δεν υπάρχει τυπικός τρόπος χαρτογράφησης σειριοποιήσιμων αντικειμένων σε σχεσιακή βάση δεδομένων. παρόλο που το Διεύθυνση Η κλάση έχει το δικό της σύνολο πεδίων, η περιγραφή XML ανάπτυξης δεν παρέχει μηχανισμό για τη χαρτογράφηση αυτών των πεδίων στη βάση δεδομένων. Στις περισσότερες περιπτώσεις αναμενόταν ότι σειριοποιήσιμα αντικείμενα όπως Διεύθυνση θα διατηρηθεί ως δυαδικός τύπος, ο οποίος μερικές φορές ονομάζεται α άμορφη μάζα πληκτρολογήστε, σε έναν πίνακα βάσης δεδομένων.

Αυτό το πρόβλημα επιδεινώνεται καθώς το σχήμα δεδομένων της οντότητας φασόλι μεγαλώνει σε πολυπλοκότητα. Ενα Υπάλληλος το φασόλι, για παράδειγμα, μπορεί να έχει πολλά παιδικά αντικείμενα παρόμοια με αυτά Διεύθυνση, όπως Οφέλη και Θέση εργασίας. Αυτά τα θυγατρικά αντικείμενα, που ονομάζονται εξαρτημένα αντικείμενα, μπορούν να σχηματίσουν σύνθετα γραφήματα αντικειμένων που εκτείνονται σε διάφορους πίνακες σε σχεσιακή βάση δεδομένων. Επιπλέον, το CMP στο EJB 1.1 είναι σε μεγάλο βαθμό ανεπαρκές για διαρκή σχέση με άλλα φασόλια. Στο EJB 1.1, εάν ένα φασόλι διατηρούσε μια σχέση με ένα άλλο φασόλι, το δοχείο θα χρησιμοποιούσε αυτόματα το πρωτεύον κλειδί ή θα χειριζόταν ως σύνδεσμος. Αυτό έχει αποδειχθεί ότι είναι ένας αρκετά ακατέργαστος μηχανισμός για τη διατήρηση σχέσεων με άλλα φασόλια των οποίων η φυσική σχέση μπορεί να είναι αμφίδρομη ή να εξαρτάται από πεδία που δεν αντιπροσωπεύονται εύκολα από το πρωτεύον κλειδί ή τη λαβή.

Το μοντέλο EJB 2.0 CMP

Στο EJB 2.0, ένα νέο συμβόλαιο μεταξύ του φασολιού οντοτήτων CMP και του manajer εμμονής σάς επιτρέπει να ορίσετε πιο πολύπλοκες και φορητές σχέσεις αντικειμένων bean-to-bean, bean-to-bean, ακόμη και εξαρτώμενος-εξαρτώμενος από ένα φασόλι οντότητας.

Ο μόνιμος διαχειριστής είναι ένας νέος συμμετέχων στη διαδικασία ανάπτυξης του Enterprise JavaBeans. Ο προμηθευτής κοντέινερ ή ένας προμηθευτής που ειδικεύεται στην επιμονή σε μια συγκεκριμένη βάση δεδομένων μπορεί να παρέχει τον διαχειριστή επιμονής. Η ιδέα είναι να διαχωριστεί ο μηχανισμός που χρησιμοποιείται για τη διαχείριση των σχέσεων με τα φασόλια από το δοχείο, το οποίο είναι υπεύθυνο για τη διαχείριση της ασφάλειας, των συναλλαγών και των πόρων. Ο διαχωρισμός των ευθυνών επιτρέπει σε διαφορετικούς διαχειριστές επιμονής να συνεργάζονται με διαφορετικά κοντέινερ. Επιτρέπει επίσης στα φασόλια οντοτήτων να γίνουν πιο φορητά στους προμηθευτές EJB καθώς και στους διαχειριστές επιμονής.

Εάν έχετε εργαστεί ή μελετήσει την CocoBase, ένα προϊόν της Thought Inc. που παράγει αυτόματα φασόλια BMP (Bean Managed Persistence) για κοντέινερ EJB 1.1, τότε είστε ήδη κάπως εξοικειωμένοι με το πώς μπορεί να λειτουργήσει ένα μόνιμο εργαλείο διαχείρισης. Η CocoBase δημιουργεί όλη τη λογική πρόσβασης στη βάση δεδομένων για κόκκους BMP με βάση τις πληροφορίες χαρτογράφησης αντικειμένων σε σχέση που παρέχονται από το πρόγραμμα ανάπτυξης φασολιών. Στο EJB 2.0, ο διαχειριστής επιμονής μπορεί να δημιουργήσει μια αντιστοίχιση οντοτήτων CMP σε μια σχεσιακή βάση δεδομένων με βάση τις πληροφορίες που παρέχονται από τον περιγραφέα ανάπτυξης, το σχήμα αφηρημένης εμμονής του φασολιού και την εργασία που εκτελείται από τον προγραμματιστή. Ωστόσο, ο διαχειριστής επιμονής δεν περιορίζεται σε σχεσιακή βάση δεδομένων. Οι διαχειριστές επιμονής μπορούν επίσης να αναπτυχθούν για βάσεις δεδομένων αντικειμένων, καθώς και για συστήματα παλαιού τύπου και ERP όπως το SAP.

Για να διαχωριστεί ο διαχειριστής ανθεκτικότητας από το δοχείο, έπρεπε να καθοριστεί μια σύμβαση μεταξύ του φασολιού και του διαχειριστή επιμονής. Το συμβόλαιο εκδηλώνεται στο νέο σχήμα αφηρημένης εμμονής. Αυτό το σχήμα ορίζεται μέσω ενός νέου συνόλου στοιχείων XML στον περιγραφέα ανάπτυξης και ενός συνόλου ιδιωματικών κωδικών στα κόμματα οντοτήτων CMP. Στο EJB 2.0, η κλάση CMP bean δηλώνεται ως αφηρημένη και τα επίμονα πεδία και τα σχέδιά της είναι προσβάσιμα χρησιμοποιώντας αφηρημένες μεθόδους προσπέλασης και μεταλλάκτη των οποίων οι υπογραφές μεθόδων αντιστοιχούν σε ειδικά στοιχεία στην περιγραφή XML ανάπτυξης.

Όταν αναπτύσσεται το bean, θα χρησιμοποιήσετε επίμονα εργαλεία διαχείρισης για να δημιουργήσετε μια συγκεκριμένη εφαρμογή της κλάσης abstract bean και των εξαρτημένων κλάσεων αντικειμένων βάσει της περιγραφής ανάπτυξης XML και της κλάσης bean. Οι συγκεκριμένες υλοποιήσεις θα περιλαμβάνουν τον κωδικό πρόσβασης δεδομένων που θα διαβάζει και θα γράφει την κατάσταση του φασολιού στη βάση δεδομένων κατά το χρόνο εκτέλεσης. Κατά το χρόνο εκτέλεσης, το κοντέινερ χρησιμοποιεί τις δευτερεύουσες τάξεις που δημιουργούνται από τα εργαλεία διαχείρισης επιμονής αντί για τις αφηρημένες τάξεις που ορίζονται από τον πάροχο φασολιών.

Για να δώσουμε λίγο κρέας στη συζήτηση, παρέχεται ένα παράδειγμα οντότητας CMP που εξηγεί πιο συγκεκριμένα πώς λειτουργεί το σχήμα αφηρημένης επιμονής.

Ένα παράδειγμα οντότητας CMP στο EJB 2.0

Στο EJB 2.0 ένα φασόλι οντότητας που διαχειρίζεται το κοντέινερ ορίζεται ως αφηρημένο και τα επίμονα πεδία του δεν ορίζονται απευθείας στην κατηγορία φασολιών. Αντ 'αυτού, έχει αναπτυχθεί ένα αφηρημένο μόνιμο σχήμα που επιτρέπει στον πάροχο φασολιών να δηλώνει έμμεσα τα επίμονα πεδία και τις σχέσεις φασολιών. Παρακάτω είναι ένα παράδειγμα του Υπάλληλος φασόλι που χρησιμοποιεί το νέο αφηρημένο επίμονο σχήμα. Παρατηρήστε ότι κανένα από τα επίμονα πεδία δεν δηλώνεται στην κατηγορία φασολιών.

δημόσια περίληψη Το EmployeeBean εφαρμόζει javax.ejb.EntityBean {. // πεδία παρουσίας EntityContext ejbContext; // κοντέινερ διαχειριζόμενα επίμονα πεδία δημόσιο αφηρημένο void setIdentity (int ταυτότητα); δημόσια περίληψη int getIdentity (); public abstract void setFirstName (συμβολοσειρά firstName); δημόσια περίληψη String getFirstName (); public abstract void setLastName (συμβολοσειρά επώνυμο); δημόσια περίληψη String getLastName (); // πεδία σχέσεων διαχειριζόμενης κοντέινερ δημόσια περίληψη κενού setContactInfo (ContactInfo info); δημόσια περίληψη ContactInfo getContactInfo (); ...} 

Στην περιγραφή XML ανάπτυξης αυτού του φασολιού, το σχήμα αφηρημένης επιμονής δηλώνει τα πεδία και τις σχέσεις που διαχειρίζεται το κοντέινερ.

   ΥπάλληλοςEJB ... Κοντέινερ ... ταυτότητα πρώτοΟνοματεπώνυμο ... ContactInfo ContactInfo street city state zip homePhone workPhone email ... Υπάλληλος-ContactInfo υπάλληλος-έχει-contactinfo ένας υπάλληλοςEJB contactInfo ContactInfo contactinfo_belongsto_employee one ContactInfo 
$config[zx-auto] not found$config[zx-overlay] not found