Πίνακας περιεχομένων:
- Ορισμός μιας υπηρεσίας ιστού
- Σκοπός της υπηρεσίας σας είναι να επιτρέπετε σε απομακρυσμένους πελάτες να έχουν πρόσβαση στις υπηρεσίες που παρέχετε. Αυτές οι υπηρεσίες, που ονομάζονται
- Σε αυτή την ενότητα, δημιουργείτε μια σύγχρονη υπηρεσία ιστού χρησιμοποιώντας μια κανονική τάξη Java και στη συνέχεια χρησιμοποιώντας μια κατάσταση EJB χωρίς κατάσταση. Πρώτα, πρέπει να γράψετε το συστατικό της βάσης. Αυτό θα είναι είτε μια κλάση Java, ένας ανιθαγενής EJB, ή ένας καταναλωτής της μεθόδου JMS.
Βίντεο: Radiojar: μία SAAS υπηρεσία για τη δημιουργία web radios - Στάθης Κουτσογεώργος (Radiojar) 2024
Μια υπηρεσία web είναι μια απομακρυσμένη διαδικασία διαθέσιμη στους πελάτες μέσω TCP / IP, συνήθως χρησιμοποιώντας HTTP ή SMTP ως μεταφορά και XML για κωδικοποίηση. Η υπηρεσία ιστού περιγράφεται χρησιμοποιώντας τυπική ονομασία XML που ονομάζεται περιγραφή υπηρεσίας. Μια υπηρεσία ιστού πληροί μία μόνο εργασία ή ένα σύνολο εργασιών.
Όλες οι λεπτομέρειες της υπηρεσίας ιστού είναι κρυμμένες από το χρήστη και η υπηρεσία είναι ανεξάρτητη από το υλικό και το λογισμικό. Αυτό ενθαρρύνει τους προγραμματιστές λογισμικού να δημιουργούν εφαρμογές που αποτελούνται από μικρές, μεμονωμένες υπηρεσίες, οι οποίες μπορούν στη συνέχεια να χρησιμοποιηθούν μόνοι ή σε ομάδες για να εκτελέσουν ακόμη πιο πολύπλοκα καθήκοντα.
Μπορείτε να δημιουργήσετε μια υπηρεσία ιστού με δύο τρόπους: με το χέρι, μέσω της δημιουργίας αρχείων προέλευσης και διαμόρφωσης Java ή χρησιμοποιώντας ένα σύστημα GUI που ονομάζεται WebLogic Workshop. Σε αυτό το άρθρο, δημιουργείτε μια υπηρεσία ιστού μη αυτόματα.
Ορισμός μιας υπηρεσίας ιστού
Πριν δημιουργήσετε την υπηρεσία ιστού, θα πρέπει να ορίσετε τι θα κάνει. Αυτό σας επιτρέπει να κατασκευάσετε σωστά τη διεπαφή που πρέπει να τηρούν άλλες εφαρμογές, αν θέλουν να επικοινωνήσουν με την υπηρεσία web σας.
Η πιο βασική απόφαση σχεδιασμού είναι ποιο από τα δύο γενικά είδη υπηρεσιών web που θα δημιουργήσετε:- Σύγχρονη υπηρεσία
- Ασύγχρονη υπηρεσία
A που είναι η προεπιλογή, ξεκινά όταν η υπηρεσία ιστού λάβει ένα μήνυμα. Αυτή η υπηρεσία ιστού αποκρίνεται αμέσως. Οι σύγχρονες υπηρεσίες ιστού είναι πιο χρήσιμες όταν το πρόγραμμα πελάτη απαιτεί αμέσως τα δεδομένα που επιστρέφονται από το αίτημα. Ένα παράδειγμα αυτού του τύπου δεδομένων είναι η τρέχουσα προσφορά μετοχών για μια συγκεκριμένη εταιρεία.
υπηρεσία ιστού είναι ασύγχρονη, ώστε τα μηνύματα να μπορούν να ανταλλάσσονται ελεύθερα μεταξύ του πελάτη και της υπηρεσίας ιστού. Ένα μήνυμα από τη μια πλευρά δεν υποχρεώνει τον άλλο να στείλει ένα αντίστοιχο μήνυμα. Όταν ένας υπολογιστής-πελάτης στέλνει ένα μήνυμα σε μια ασύγχρονη υπηρεσία ιστού, ο πελάτης δεν περιμένει ένα μήνυμα πίσω από την υπηρεσία ιστού. Η υπηρεσία ιστού ενδέχεται να στείλει ένα μήνυμα πίσω στον πελάτη αργότερα, αλλά τίποτα δεν συνδέει εγγενώς αυτό το μήνυμα με το αρχικό μήνυμα που έστειλε ο πελάτης. Οι ασύγχρονες υπηρεσίες ιστού είναι μια καλή επιλογή όταν στέλνετε πληροφορίες που δεν απαιτούν απάντηση. Για παράδειγμα, μπορεί να θέλετε να στείλετε ένα μήνυμα σε πολλούς από τους διακομιστές σας, δίνοντάς τους ένα νέο μήνυμα χαιρετισμού που θα προβληθεί στους χρήστες.
Επιλογή και δημιουργία ενός στοιχείου υποστήριξης
Σκοπός της υπηρεσίας σας είναι να επιτρέπετε σε απομακρυσμένους πελάτες να έχουν πρόσβαση στις υπηρεσίες που παρέχετε. Αυτές οι υπηρεσίες, που ονομάζονται
συστατικό backend, παίρνουν τη μορφή κώδικα Java.Μπορείτε να δημιουργήσετε το συστατικό σας backend ως ένα από τα παρακάτω: Μια μέθοδος μιας συνόδου ανιθαγένειας EJB
- Μια μέθοδος Java class
- Μια μέθοδος JMS καταναλωτής
- Το WebLogic μπορεί να διαθέσει οποιοδήποτε από αυτά τα στοιχεία ως μια υπηρεσία ιστού. Αυτό καθιστά εύκολο το πακέτο του υπάρχοντος κώδικα Java ως υπηρεσία ιστού. Αν έχετε ήδη δημιουργήσει EJB συνεδριών ανιθαγενής, μπορείτε να τις συσκευάσετε ως υπηρεσία ιστού. Ή αν ο κωδικός σας υπάρχει σε κανονικές τάξεις Java, μπορείτε να παρέχετε πρόσβαση στην τάξη σας ως υπηρεσία ιστού. Μπορείτε επίσης να χρησιμοποιήσετε τα μηνύματα JMS ως υπηρεσία back-end για την υπηρεσία web σας.
Δημιουργία μιας σύγχρονης υπηρεσίας ιστού
Σε αυτή την ενότητα, δημιουργείτε μια σύγχρονη υπηρεσία ιστού χρησιμοποιώντας μια κανονική τάξη Java και στη συνέχεια χρησιμοποιώντας μια κατάσταση EJB χωρίς κατάσταση. Πρώτα, πρέπει να γράψετε το συστατικό της βάσης. Αυτό θα είναι είτε μια κλάση Java, ένας ανιθαγενής EJB, ή ένας καταναλωτής της μεθόδου JMS.
Εργασία με ένα συστατικό υποστήριξης κλάσης Java
Πρέπει να ακολουθήσετε μερικούς κανόνες κατά την υλοποίηση μιας λειτουργίας διαδικτυακής υπηρεσίας που χρησιμοποιεί μια κλάση Java:
Μην ξεκινάτε οποιαδήποτε θέματα. Αυτός ο κανόνας ισχύει για όλους τους κώδικες Java που εκτελούνται στον WebLogic Server.
- Ορίστε έναν προεπιλεγμένο κατασκευαστή χωρίς όρια.
- Ορίστε ως δημόσιες μεθόδους της κλάσης Java που θα εκτίθενται ως λειτουργίες υπηρεσιών ιστού.
- Πρέπει να γράψετε κώδικα Java ασφαλούς με νήματα επειδή ο διακομιστής WebLogic διατηρεί μόνο μία εμφάνιση μιας κλάσης Java που υλοποιεί μια λειτουργία υπηρεσίας ιστού και κάθε κλήση της υπηρεσίας ιστού χρησιμοποιεί αυτήν την ίδια εμφάνιση.
Για παράδειγμα εφαρμογής μιας λειτουργίας WebLogic web service με κλάση Java, μεταβείτε στον ακόλουθο κατάλογο:
WL_HOMEsamplesserversrcexampleswebservicesbasicjavaclass
όπου το
WL_HOME αναφέρεται στον κύριο κατάλογο της εγκατάστασης του WebLogic Server. Σε ένα σύστημα των Windows, αυτός ο κατάλογος είναι συνήθως C: beaweblogic81. Η λίστα 1 δείχνει μια κλάση Java που θα μπορούσατε να χρησιμοποιήσετε ως συστατικό υποστήριξης. Αυτή η τάξη Java περιέχει μια μοναδική μέθοδο, που ονομάζεται sampleMethod, η οποία δέχεται ένα int και επιστρέφει ένα String.
Λίστα 1: Component backend της κλάσης Java
com. ανδρείκελα. ejb;
δημόσια τάξη SampleBackendComponent
{
public String sampleMethod (int num)
{ διακόπτης (num)
{ case 1: επιστροφή "One";
περίπτωση 2: επιστροφή "Δύο".
περίπτωση 3: επιστροφή "Τρεις";
περίπτωση 4: επιστροφή "Τέσσερα";
περίπτωση 5: επιστροφή "Πέντε".
περίπτωση 6: επιστροφή "Έξι";
περίπτωση 7: επιστροφή "Επτά";
περίπτωση 8: επιστροφή "Οκτώ";
περίπτωση 9: επιστροφή "Εννέα";
περίπτωση 10: επιστροφή "δέκα";
προεπιλογή: επιστροφή "Ορισμένος αριθμός";
}
}
}
Εργασία με μια συνθήκη ανυπέρβλητης συνόδου EJB backend component
Μπορείτε επίσης να επιλέξετε να δημιουργήσετε το συστατικό σας backend ως EJB session. Γράφοντας τον κώδικα Java για μια συνάντηση ανιθαγένειας Το EJB για μια υπηρεσία ιστού δεν διαφέρει από το να γράψεις ένα αυτόνομο EJB.
Στις υπηρεσίες ιστού. xml, μπορείτε να καθορίσετε ότι μια λειτουργία υπηρεσίας ιστού είναι ένας τρόπος, πράγμα που σημαίνει ότι η εφαρμογή-πελάτης που καλεί την υπηρεσία ιστού δεν περιμένει μια απάντηση.Όταν γράφετε τον κώδικα Java για τη μέθοδο EJB που εφαρμόζει αυτόν τον τύπο λειτουργίας, θα πρέπει να καθορίσετε ότι θα επιστρέψει κενό.
Όταν επιλέγετε μεταξύ χρήσης ενός EJB ή ενός στοιχείου υποστήριξης κλάσης Java, εξετάστε τους άλλους τρόπους με τους οποίους θα χρησιμοποιηθεί το συστατικό της βάσης δεδομένων. Εάν το συστατικό σας backend θα είναι συνήθως προσβάσιμο ως EJB, χτίστε το ως EJB. Αυτό σας επιτρέπει να χρησιμοποιήσετε τον ίδιο κωδικό τόσο για την υπηρεσία EJB όσο και για την υπηρεσία ιστού.
Απαιτούνται σημαντικά περισσότεροι πόροι για να καλέσετε μια υπηρεσία ιστού από το να καλέσετε ένα EJB. Εξαιτίας αυτού, είναι συνηθισμένο να δημιουργήσετε όλα τα συστατικά στοιχεία υποστήριξης σας ως EJB και, στη συνέχεια, επιτρέπετε σε εξωτερικές εφαρμογές να έχουν πρόσβαση στα συστατικά στοιχεία της βάσης δεδομένων ως υπηρεσίες ιστού. Οι δικές σας τοπικές εφαρμογές, οι οποίες εκτελούνται στο ίδιο δίκτυο με το διακομιστή σας WebLogic, μπορούν να χρησιμοποιήσουν την ταχύτερη μέθοδο κλήσης EJB.
Η λίστα 2 δείχνει το αρχείο φασολιών που υλοποιεί το στοιχείο υποστήριξης EJB. Το στοιχείο υποστήριξης EJB είναι σχεδόν το ίδιο με το συστατικό υποστήριξης κλάσης Java. Η κύρια διαφορά είναι ο πρόσθετος κωδικός που χρησιμοποιείται για την υποστήριξη του EJB.
Λίστα 2: Σύνθετο στοιχείο EJB Backend Component
com. ανδρείκελα. ejb;
εισαγωγή javax. ejb. *;
εισαγωγή java. rmi. *;
εισαγωγή javax. κούνια. *;
δημόσια class SampleBean υλοποιεί SessionBean
{
ιδιωτικό SessionContext stx;
// Απαιτούνται μέθοδοι, που δεν χρησιμοποιούνται από αυτόν τον τύπο φασολιών
δημόσιο κενό ejbCreate () {}
δημόσιο κενό ejbRemove () {}
public void ejbActivate ejbPassivate () {}
// setter για το SessionContext
public void setSessionContext (SessionContext ctx)
{
ctx = αυτό. stx;
// η μέθοδος δειγματοληψίας
δημόσιο δείγμα StringMethod (int num)
ρίχνει RemoteException
{ διακόπτης (999) Ενας";
περίπτωση 2: επιστροφή "Δύο".
περίπτωση 3: επιστροφή "Τρεις";
περίπτωση 4: επιστροφή "Τέσσερα";
περίπτωση 5: επιστροφή "Πέντε".
περίπτωση 6: επιστροφή "Έξι";
περίπτωση 7: επιστροφή "Επτά";
περίπτωση 8: επιστροφή "Οκτώ";
περίπτωση 9: επιστροφή "Εννέα";
περίπτωση 10: επιστροφή "δέκα";
προεπιλογή: επιστροφή "Ορισμένος αριθμός";
}
}
}
Πρέπει να καθορίσετε ότι το φασόλι είναι ένα ανιθαγενές EJB στο ejb-jar. xml, το οποίο εμφανίζεται στην Λίστα 3. Μπορείτε να χρησιμοποιήσετε πολλούς κόμβους και χαρακτηριστικά.
Λίστα 3: ejb-jar. Αρχείο xml για ένα στοιχείο Backend
' // java. ήλιος. com / dtd / ejb-jar_2_0. dtd '>
SampleObject
com. ανδρείκελα. ejb. SampleHome
com. ανδρείκελα. ejb. Δείγμα
com. ανδρείκελα. ejb. SampleBean
Αστέρας
Δοχείο