Άσκηση 17.6
Ανάπτυξη ενός
απλού
εργαλείου
αναφοράς
πωλήσεων
Θέση αρχείων = /ExerciseCode/C17/SeventeenSix/
Αυτή η άσκηση
αποτελείται
από δύο μέρη.
Το πρώτο
υλοποιεί
έναν πελάτη και
το δεύτερο
έναν
διακομιστή,
με το
διακομιστή να
κάνει ένα
απομακρυσμένο
αντικείμενο RMI
με όνομα
SaleCollection διαθέσιμο
στο χρήστη.
Ο
διακομιστής
της άσκησης
περιέχει τις
παρακάτω
κλάσεις:
- Sale,
πρόκειται για
κλάση που
είναι ίδια με
αυτή της
Άσκησης 17.5.
Η μόνη διαφορά
είναι η
υλοποίηση
της διεπαφής
Serializable. Αυτή
επιτρέπει το
αντικείμενο
να σταλθεί
μέσω μιας
γραμμής
μετάδοσης. (Serializable
είναι η
διεπαφή χωρίς
μεθόδους,
απλώς
μαρκάρει το
αντικείμενο
που
καθορίζεται
από την κλάση
μπορεί να
σταλθεί
μέσω κάποιας
γραμμής
μετάδοσης).
- SaleCollection,
είναι η
διεπαφή που
καθορίζει
μια συλλογή
από πωλήσεις.
- SaleCollectionImpl,
είναι η
υλοποίηση
της SaleCollection.
Πρόκειται για
την ίδια κλάση
με
την SaleCollection που
χρησιμοποιείται
στην Άσκηση
17.5.
Η μόνη διαφορά
είναι ότι η
μέθοδος getAllSales
επιστρέφει ένα
αντικείμενο
Vector αντί για ένα
αντικείμενο
Enumeration.
Αυτό
συμβαίνει
διότι ένα
αντικείμενο
Enumeration δεν μπορεί
να σταλθεί
μέσω κάποιας
γραμμής
μετάδοσής, ενώ
το
αντικείμενο
Vector μπορεί.
Αυτή η κλάση
περιέχει μια
κύρια μέθοδο
που
δημιουργεί
ένα
απομακρυσμένο
αντικείμενο RMI
που
αναπαριστά μια
συλλογή από
πωλήσεις.
Ο
πελάτης της
άσκησης
περιέχει δύο
κλάσεις:
- ClientFrameSolution.
Είναι η λύση της άσκησης.
- ClientFrame.
Είναι η κλάση
παράθυρο που
πρέπει να
αλλάξετε
για την άσκηση.
Περιέχει
τρία κουμπιά,
ένα
αντικείμενο List
και δύο πεδία
κειμένου. Το
κουμπί
Quit τερματίζει
την
αλληλεπίδραση
του χρήστη με
το παράθυρο.
Το κουμπί
Report παράγει μια
αναφορά για
όλες τις
πωλήσεις
που
κρατιούνται
σε ένα
φάκελο στον
απομακρυσμένο
διακομιστή.
Το κουμπί Find
βρίσκει τις
λεπτομέρειες
για μια πώληση,
για
εκείνους
τους
χρήστες των
οποίων το
email είναι
επιλεγμένο
στη λίστα. Η
λίστα είναι
αρχικά γεμάτη
με τα
email όλων των
πελατών που
αγόρασαν το
λογισμικό
ελέγχου
συνδέσμων.
Για
την άσκηση αυτή
πρέπει να
εισάγετε
κώδικα που
εκτελείται
όταν το κουμπί
Find πατιέται.
Πριν
ξεκινήσετε
θα
πρέπει να
δηλώσετε την
βάση
δεδομένων της
Άσκησης
17.5
στα Windows. Κάντε τα
παρακάτω
βήματα.
- Πατήστε Start|Settings|Control
Panel
- Δείτε
την εικόνα
που
καθορίζει
σύνδεση ODBC μα
στο control panel. Αυτή
είναι ένα απλό
σύστημα
ονομασίας
που
επιτρέπει τα
προγράμματα Java
να
επικοινωνούν
με μια βάση
δεδομένων της
Microsoft. Πατήστε 2
φορές την
εικόνα.
- Πατήστε το κουμπί addστο
παράθυρο που
εμφανίζεται.
- Στο
επόμενο
παράθυρο
πατήστε δύο
φορές τη γραμμή
που αρχίζει
με Microsoft Access Driver....
Ένα νέο
παράθυρο
πρέπει να
εμφανιστεί.
- Στο
νέο παράθυρο
εισάγεται
το
string "SoftwareSales" στο
πεδίο Data Source Name. Κατόπιν
πατήστε το κουμπί Select.
- Πάτε
στον φάκελο
που περιέχει
την βάση
δεδομένων. Θα
την βρείτε
στον
κατάλογο /ExerciseCode/C17/SeventeenFive/. Θα
καταλάβετε
ότι έχετε
φτάσει
το όνομα του
καταλόγου
όταν αυτό (SoftwareSales.mdb)
εμφανιστεί
στην
πιο αριστερή
περιοχή
κειμένου.
Επιλέξτε τον
φάκελο και
πατήστε OK.
- Κλείστε
όλα τα
παράθυρα που
ανοίξατε
πατώντας OK σε
όλα.
- Τώρα η
βάση
δεδομένων
μπορεί να
αναφερθεί με
το όνομα SoftwareSales μέσα στο πρόγραμμα
Java.
Αν δεν
έχετε
καθορίσει
το φάκελο με
τη πολιτική
ασφαλείας
τότε πρέπει να
κάνετε τα
παρακάτω
βήματα.
Αλλάξτε
το αρχείο
ασφαλείας
που
καθορίζει
την πρόσβαση
στα
αντικείμενα RMI.
Αυτός ο
φάκελος
μπορεί να
βρεθεί στο
φάκελο
/JAVA_HOME/jre/lib/security/.
Υπάρχουν δύο
αρχεία
ασφαλείας,
φροντίστε να
βρείτε αυτόν
με το τύπο της
πολιτικής.
Ανοίξτε το
αρχείο με
οποιονδήποτε
κειμενογράφο
και
αντικαταστήστε
τα περιεχόμενά
του με
grant{
java.security.AllPermission;
};
Αυτό θα
επιτρέψει
οποιαδήποτε
πρόσβαση στα
αντικείμενα RMI.
Ακολουθήστε τα
παρακάτω βήματα.
- Συμβολομεταφράστε
όλες τις κλάσεις.
- Δημιουργήστε
στελέχη και
σκελετούς
χρησιμοποιώντας
το εργαλείο
rmic tool που έρχεται
μαζί με τη Java.
- Ξεκινήστε
το
μητρώο RMI. Πρέπει
να ελέγξετε
την
υλοποίηση
σας για να
δείτε πως θα
το
κάνετε. Σε
μερικές
περιπτώσεις
μπορείτε να
το κάνετε με
το άνοιγμα
ενός
παραθύρου MSDOS
και
γράφοντας rmiregistry.
- Εκτελέστε
το
διακομιστή
σε ένα
παράθυρο MSDOS.
Όταν
εκτελείτε
το
διακομιστή
προσθέστε τη
γραμμή -Djava.rmi.server.codebase=file:///
διαδρομή
στις
κλάσεις- στο
τέλος της
εντολής java. Θα
δείτε
ορισμένα
μηνύματα που
θα σας λένε
ότι ο
διακομιστής
έχει ήδη
ξεκινήσει
και είναι
έτοιμος.
- Ξεκινήστε
τον
πελάτη σε ένα
άλλο
παράθυρο MSDOS.
Πρέπει να
δείτε ένα
παράθυρο με
όλα
τα οπτικά
αντικείμενα
που
αναφέρθηκαν
παραπάνω. Η
λίστα πρέπει να
περιέχει
κάποια email που
αναφέρονται
σε πελάτες
οι οποίοι
έχουν
αγοράσει το
λογισμικό.
- Δοκιμάστε
τις
δυνατότητες
του πελάτη,
για
παράδειγμα
επιλέξτε ένα email
και έπειτα
πατήστε το
κουμπί Find.
- Εξετάστε
τον
κώδικα των
κλάσεων Sale, SaleCollection
και SaleCollectionImpl ώστε
να
κατανοήσετε
τη
λειτουργία
τους.
- Εξετάστε
τον
κώδικα του ClientFrame
μέσα στον
πελάτη και
κατανοήστε
τη
λειτουργία
του.
- Εισάγετε
τον
κώδικα που
θα
εκτελεστεί,
όταν το κουμπί
Find πατηθεί. Η θέση
που θα
πρέπει να
εισαχθεί ο
κώδικας
καθορίζεται
μέσα στον
πηγαίο κώδικα
του
ClientFrame.
- Ελέγξτε
τη απάντηση σας.