απομακρυσμένης πρόσβασης είναι ένα από τα « σκοτεινές τέχνες » του προγραμματισμού ηλεκτρονικών υπολογιστών σε πολλά προγραμματιστές . Στην πραγματικότητα , είναι εύκολο για τους προγραμματιστές να περάσει μια ολόκληρη καριέρα , χωρίς να ανησυχείτε για αυτό . Οι λεπτομέρειες είναι αρκετά άσχημη, αλλά η ουσία του είναι απλή : . Ένα πρόγραμμα σε έναν υπολογιστή καλεί κώδικα σε έναν άλλο υπολογιστή
Για να διευκολύνει τη συζήτηση λίγο , ο όρος «πελάτης » θα αναφέρεται στην αίτηση ο προγραμματιστής είναι ανάπτυξη , και "server" θα αναφέρεται στην αίτηση ο προγραμματιστής επικοινωνεί με .
εικόνων μια ματιά στο πώς Java Remoting έργα
Οι λεπτομέρειες της γραφής ένα πρόγραμμα Java που εκτελεί απομακρυσμένης πρόσβασης είναι πέρα από το πεδίο εφαρμογής του παρόντος άρθρου , αλλά οι βασικές έννοιες αξίζει να καλύπτουν . Ένα απομακρυσμένο αντικείμενο αντιπροσωπεύεται από ένα interface . Ο κύριος του έργου θα λάβει ένα στιγμιότυπο της διεπαφής και να καλέσει μια μέθοδο σε αυτό .
Αυτή η κλήση θα στείλει την αίτηση στο διακομιστή, η οποία θα επεξεργαστεί τις παραμέτρους ( και να επιστρέψει ένα αποτέλεσμα εάν είναι απαραίτητο ) . Η διαδικασία αποστολής αντικειμένων /παραμέτρους και από το διακομιστή που ονομάζεται " διαλογής " , και η διαδικασία της λήψης των παραταχθούν δεδομένων και μετάφραση πίσω στο χρηστικά αντικείμενα ονομάζεται " unmarshalling " .
Εικόνων
Προκαλεί
Η
φυσικά , τα πράγματα μπορεί πάντα να πάει στραβά . Ίσως ένα πρόγραμμα καλεί μια λειτουργία που δεν υπάρχει στον άλλο υπολογιστή . Για παράδειγμα , εάν προσπαθήσετε να καλέσετε a.foo ( ) χρησιμοποιώντας RMI , και την έκδοση στον υπολογιστή είστε σε επικοινωνία με δεν έχει a.foo ( ) ορίζεται , τα πράγματα σπάσει . Μια άλλη πιθανότητα είναι ότι ένα σφάλμα στο πρόγραμμα server , όπως ένα πρόβλημα σύνδεσης της βάσης δεδομένων .
Όταν συμβαίνει αυτό , θα πάρετε μια RemoteException ή σε μία από τις υποκατηγορίες της .
Εικόνων γεύσεις της RemoteException
Η
Υπάρχουν διάφορες υποκατηγορίες του RemoteException να χειριστεί διάφορες καταστάσεις που μπορεί να συμβούν (βλέπε την ενότητα Πόροι για έναν εξαντλητικό κατάλογο των υποκατηγοριών ) . Για παράδειγμα , αν παρουσιαστεί κάποιο πρόβλημα , ενώ διαλογής ή unmarshalling τα αντικείμενα , ένα MarshalException ή UnmarshalException θα ρίξει αντίστοιχα . Εάν συμβεί μια εξαίρεση που δεν έχει δηλωθεί στην υπογραφή της μεθόδου που ονομάζεται (δηλαδή , μια ανεξέλεγκτη εξαίρεση runtime) , ένα UnexpectedException θα ριχτούν - αυτό θα μπορούσε να είναι μια NullPointerException στο διακομιστή , για παράδειγμα
Η <. br > RemoteExceptions Χειρισμός
Η
Ενώ γενική πρακτική Java συνιστά να πιάσει την πιο εξειδικευμένη περίπτωση της κατ 'εξαίρεση, αυτό μπορεί να είναι δύσκολο να επιτευχθεί όταν εργάζονται με RMI . Υπάρχουν πάρα πολλές πιθανές εξαιρέσεις για να εξετάσει κατά την εξέταση των διαφόρων υποκατηγοριών RemoteException που ασχολούνται με τα ατομικά μάλλον δεν αξίζει τον κόπο .
Τούτου λεχθέντος , ένας προγραμματιστής μπορεί να επικεντρωθεί σε πιθανές προβληματικές περιοχές που μπορεί να είναι περισσότερο ή λιγότερο προφανές κατά τη διάρκεια της ανάπτυξης . Για παράδειγμα , στην πρώτη προσπάθεια σε μια απομακρυσμένη κλήση της μεθόδου ( ίσως προετοιμασίας εφαρμογής ) , ο κύριος του έργου μπορεί να προσπαθήσει να χειριστεί μια UnknownHostException σε ένα εξειδικευμένο τρόπο . Μια άλλη δυνατότητα θα μπορούσε να είναι μια γενική χειρισμού RemoteException που θα μπορούσε να λάβει διάφορες δράσεις με βάση την ειδική εξαίρεση που αντιμετωπίζουν .
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα