Προγραμματιστικά εργαλεία σε περιβάλλον Linux

From EEYEM Pilot Wiki
Revision as of 10:45, 21 December 2016 by Admin (Talk | contribs) (Changed protection level for "Προγραμματιστικά εργαλεία σε περιβάλλον Linux" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) [cascading])

Jump to: navigation, search

Εισαγωγή

Σε αυτό το wiki θα ασχοληθούμε με την ανάπτυξη λογισμικού με αντικειμενοστραφή προγραμματισμό σε γλώσσα Java καθώς και με Λειτουργικά Συστήματα. Ταυτόχρονα, θα αρχίσουμε να χρησιμοποιούμε εργαλεία που αφορούν το επόμενο μεγάλο κεφάλαιο της ΘΕ ΠΛΣ60, αυτό των Λειτουργικών Συστημάτων. Τα εργαλεία αυτά μας είναι απαραίτητα για να μπορέσουμε να ολοκληρώσουμε την εργασία και περιλαμβάνουν “Εικονικές Μηχανές”, εγκατάσταση προγραμμάτων και χρήση του λειτουργικού συστήματος Linux. Οι περιγραφές των εργασιών που πραγαματεύομαστε είναι κατά το δυνατό αναλυτικές, ώστε να βοηθήσουν τον αναγνώστη όσο γίνεται περισσότερο. Οι ανάγκες τεχνικών για τα ζητήματα που διαπραγματευόμαστε περιγράφονται διαικπεραιωμένα για την εγκατάσταση και χρήση όλων των εργαλείων που θα χρειαστούν στα πλαίσια του αντικειμένου.


Εγκατασταση VirtualBox

Στo αντικείμενο που μελετάται απαιτείται η ανάπτυξη λογισμικού στο Λειτουργικό Σύστημα Linux. Ωστόσο η εγκατάσταση κάποιας διανομής Linux (Linux distribution) σε έναν υπολογιστή (που ενδεχομένως τρέχει ήδη κάποιο άλλο λειτουργικό σύστημα) απαιτεί την ύπαρξη μιας τουλάχιστον ελεύθερης κατάτμησης στον σκληρό δίσκο του υπολογιστή (hard disk partition). Στις περισσότερες των περιπτώσεων δεν υπάρχει ελεύθερη κατάτμηση και η δημιουργία μιας νέας, κενής κατάτμησης είναι μια διαδικασία που απαιτεί κάποια εξειδίκευση. Προς διευκόλυνση του αναγνώστη, αλλά και προς εξοικείωση με ένα ιδιαίτερα σύγχρονο θέμα των Λειτουργικών Συστημάτων, δεν θα δημιουργήσουμε νέα κατάτμηση. Αντί αυτού, θα χρησιμοποιηθεί η τεχνολογία της «Εικονικής Μηχανής» (Virtual Machine). Θα εγκαταστασταθεί ένα πρόγραμμα στον υπολογιστή μας το οποίο εξομοιώνει έναν ολόκληρο υπολογιστή. Σε αυτόν τον εικονικό υπολογιστή θα εγκατασταθεί μια διανομή Linux, η οποία θα χρησιμοποιηθεί για τις ανάγκες μας. Το πρόγραμμα που θα πρέπει να εγκαταστήσετε είναι τo Virtual Box της Oracle. Ακολουθούν οδηγίες για την εγκατάσταση του προγράμματος.


1)Αρχικά κατεβάζουμε το αρχείο εγκατάστασης από την τοποθεσία https://www.virtualbox.org

2)Ο σύνδεσμος που χρειάζεται για να επιλέξουμε την έκδοση την οποία επιθυμούμε είναι ο Downloads στο μενού αριστερά στη σελίδα.

3)Δεδομένου ότι το λειτουργικό σύστημα του υπολογιστή σας είναι τα Windows επιλέγουμε την πιο πρόσφατη έκδοση του VirtualBox για Windows.

4)Επιλέγουμε τον φάκελο στον οποίο θα αποθηκευτεί το πρόγραμμα εγκατάστασης.

5)Από την ίδια σελίδα, πρέπει να μεταφορτωθεί και το " VirtualBox 5.1.8 (ή η πιο πρόσφατη ) Oracle VM VirtualBox Extension Pack" (η αντίστοιχη έκδοση με αυτή του βήματος 3 ,η πιο πρόσφατη δηλαδή ). Το πακέτο αυτό είναι ανεξάρτητο του λειτουργικού συστήματος που έχει κάποιος εγκατεστημένο στον υπολογιστή του και προσφέρει επιπλέον δυνατότητες στον εικονικό υπολογιστή που θα δημιουργηθεί.

6)Αποθηκεύουμε αυτό το πακέτο στον ίδιο φάκελο που αποθηκεύσατε και το πρόγραμμα εγκατάστασης (βήμα 4).

7)Μεταβαίνουμε στον φάκελο στον οποίο αποθηκεύσαμε το πρόγραμμα εγκατάστασης , επιλέγουμε το συγκεκριμένο αρχείο και κάνουμε διπλό κλικ. Ακολουθώντας τις οδηγίες σε κάθε βήμα πραγματοποιούμε την εγκατάσταση.

8)Μετά την εγκατάσταση του Virtual Box, εκκινούμε το πρόγραμμα και από το μενού του προγράμματος επιλέγουμε "File → Preferences..."(Αρχείο → Προτιμήσεις - στην Ελληνική έκδοση). Στο παράθυρο που ανοίγει επιλέγουμε το "Extensions"(Επεκτάσεις). Κάνουμε κλικ στο μπλε τετράγωνο με τις καμπυλωμένες γωνίες για να προσθέσετε ένα νέο extension (μια νέα επέκταση). Στο παράθυρο που ανοίγει επιλέγουμε το αρχείο που κατεβάσαμε στο βήμα 5. Έχει ολοκληρώθει η εγκατάσταση όλων των στοιχείων του Virtual Box.

Εγκατάσταση Linux στο VirtualBox

Κατόπιν της επιτυχούς εγκατάστασης του VirtualBox ακολουθεί η εγκατάσταση σε αυτό το εικονικό μηχάνημα του λειτουργικού συστήματος Linux. Στη συνέχεια θα εγκατσταθούν σε αυτό το λειτουργικό σύστημα τα απαραίτητα προγράμματα για τον σκοπό μας. Επιλέχθηκε η διανομή Fedora 21 . Είναι η καταλληλότερη προκειμένου να μπορούμε να χρησιμοποιησούμε τον Application Server Tomcat σε συνδυασμό με MySQL και Java. Δεν χρειάζεται να γίνει η εγκατάσταση ολόκληρου του λειτουργικού συστήματος στο εικονικό μηχάνημα παρά μόνο ενός αρχείου. Το αρχείο αυτό έχει παραχθεί και επεξεργαστεί από τους διδάσκοντες. Βρίσκεται στην τοποθεσία https://goo.gl/lYsWQZ .

Οδηγίες εγκατάστασης αρχείου στο οποίο περιέχεται το λειτουργικό σύστημα

1) Για να ολοκληρωθεί η διαδικασία θα χρειαστεί να διατίθενται τουλάχιστο 10GB ελεύθερα στον υπολογιστή μας.

2) Κατεβάζουμε από το σύνδεσμο https://goo.gl/lYsWQZ το αρχείο “Fedora 21 - ΕΑΠ ΠΛΣ60 2015-2016 Εκφώνηση.ova” (≈1800MB) και το αποθηκεύουμε σε κάποιον φάκελο στον υπολογιστή μας.

3) Ακολουθεί η εκκίνηση του προγράμματος Virtual Box και από το μενού του προγράμματος επιλέγουμε "File → Import Appliance...". Αν το μενού είναι στα ελληνικά επιλέγουμε "Αρχείο → Εισαγωγή Συσκευής".

4) Επιλέγουμε το αρχείο που κατεβάσαμε από τον σύνδεσμο στο βήμα 1. Έχουμε ολοκληρώσει την εγκατάσταση του λειτουργικού συστήματος στον εικονικό υπολογιστή.

Προκειμένου να γίνεται η εκκίνηση του νέου υπολογιστή με λειτουργικό σύστημα Linux από το VirtualBox ακολουθούμε τα εξής βήματα. Αρχικά ανοίγουμε το VirtualBox , στη συνέχεια επιλέγουμε τη μηχανή με το εγκατεστημένο λειτουργικό σύστημα , όπως έγινε στα βήματα 1 - 4, (Fedora 21 - ΕΑΠ ΠΛΣ60 2015-2016)και επιλέγουμε "Start" (ή "Ξεκίνημα" στην ελληνική έκδοση) για να εκκινήσουμε τον εικονικό υπολογιστή. Όπως έχει προαναφερθεί, το λειτουργικό σύστημα του εικονικού υπολογιστή έχει ήδη παραμετροποιηθεί από τους διδάσκοντες κατάλληλα, ώστε να μπορεί κάποιος χωρίς καμία επιπλέον κίνηση από μέρους του να μεταγλωττίζει και να εκτελεί προγράμματα. Ακολουθούν πληροφορίες για τις παραμετροποιήσεις που έχουν γίνει και θα χρειαστούν στα πλαίσια της άσκησης.

1) Έχει δημιουργηθεί ένας λογαριασμός χρήστη με όνομα “hadoop2.0” (το όνομα του χρήστη είναι χωρίς τα εισαγωγικά). Ο κωδικός για τον χρήστη αυτό είναι επίσης “hadoop2.0” (πάλι χωρίς τα εισαγωγικά). Αυτόν τον λογαριασμό θα χρησιμοποιειεί για να εισέρθει στο σύστημα και να πραγματοποιεί τα ζητούμενα ο αναγνώστης.

2) Σε περίπτωση που χρειαστεί να εισέλθει κάποιος ως διαχειριστής στο σύστημα (όπως θα περιγραφεί παρακάτω αργότερα), το όνομα χρήστη είναι “root” και ο κωδικός είναι πάλι “hadoop2.0”. Προσέξτε πως το γραφικό περιβάλλον LXDE (lightweight X11 desktop environment) που έχει εγκατασταθεί δεν σας επιτρέπει να εισέλθετε στο σύστημα απευθείας ως διαχειριστής. Θα πρέπει να εισέλθετε πρώτα ως χρήστης “hadoop2.0” και στην συνέχεια από ένα τερματικό (terminal) να δωθεί η εντολή “su –“. Μπορεί να ανοιχτεί το τερματικό πηγαίνοντας στο “Start → System Tools → LXTerminal” στο λειτουργικό σύστημα Linux.

Εξυπηρετητές Παγκοσμίου Ιστού και Αιτήσεις Χρηστών

Αρχικά, οι εξυπηρετητές παγκόσμιου ιστού (web servers) δημοσίευαν μόνο στατικό περιεχόμενο χωρίς να λαμβάνεται υπόψη τυχόν δεδομένα που μπορεί να αποστέλλουν οι χρήστες. Τα Java Servlets είναι προγράμματα που εκτελούνται στους web εξυπηρετητές (server side programs) και χειρίζεται αιτήσεις χρηστών (requests) (δηλαδή προσπελάσεις σελίδων στον εξυπηρετητή με client side programs) και επιστρέφουν μια προσαρμοσμένη (δυναμική όπως αναφέρεται συχνά) απάντηση (response) για κάθε αίτημα χρήστη. Η δυναμική απάντηση μπορεί να βασίζεται σε δεδομένα εισόδου του χρήστη (π.χ. στοιχεία αναζήτησης) με τα δεδομένα της απόκρισης, δηλαδή της σελίδας που θα λάβει ο χρήστης, να είναι δυνατό να ανακτώνται από βάσεις δεδομένων ή άλλες εφαρμογές και να συνδυάζονται με επιπλέον στατικά χαρακτηριστικά σχεδίασης και πληροφορίες. Όλα αυτά εκτελούνται με χρήση του HTTP πρωτόκολλου που αποτελεί το πλέον διαδεδομένο στο Διαδίκτυο.


Εικόνα1
.

Τεχνολογίες στην πλευρά του εξυπηρετητή (server side programs)

Σήμερα υπάρχουν πολλές και ανταγωνιζόμενες τεχνολογίες server side programming όπως: βασισμένες σε Java (π.χ. servlet, JSP, JSF, Struts, Spring, Hibernate), αλλά και πολλές άλλες όπως ASP.NET (π.χ. με προγραμματισμό σε C#), PHP, Ruby, Python κλπ. Τα Java servlet αποτελούν τη βάση για τον προγραμματισμό με Java στην πλευρά του εξυπηρετητή Web. Εν γένει οι τεχνολογίες JSP (JavaServer Pages), JSF (JavaServer Faces), Struts, Spring, Hibernate, και πολλές άλλες αποτελούν επεκτάσεις της τεχνολογίας των servlet. Για το λόγο αυτό η εργασία με Java servlet βοηθά στη βαθιά κατανόηση των βασικότερων στοιχείων του προγραμματισμού Java για το Web.

Εξυπηρετητής Εφαρμογών Διαδικτύου Apache Tomcat

Τα Servlets είναι προγράμματα που εκτελούνται σε κάποιο εξυπηρετητή που μπορεί να εκτελεί Java όταν δέχεται κλήσεις για την παροχή μίας ιστοσελίδας-εφαρμογής Διαδικτύου, δηλαδή είναι προγράμματα που εκτελούνται στην πλευρά του εξυπηρετητή (οι κλήσεις θεωρούμε ότι έρχονται από την πλευρά του χρήστη, δηλαδή με την κλήση μέσα από ένα web browser μιας διεύθυνσης μιας ιστοσελίδας-εφαρμογής Διαδικτύου). Ο εξυπηρετητής Εφαρμογών Διαδικτύου Apache Tomcat Server (@ http://tomcat.apache.org) αποτελεί την επίσημη βασική υλοποίηση αναφοράς για Java servlet και JSP και παρέχεται δωρεάν από το open-source foundation Apache (@ http://www.apache.org). Για να λειτουργήσουν τα Java Servlets απαιτείται η εγκατάσταση και λειτουργία του εξυπηρετητή Tomcat. Στην εικονική μηχανή που έχετε διαθέσιμη με την εκφώνηση της εργασίας ο εξυπηρετητής έχει ήδη εγκατασταθεί και βρίσκεται ρυθμισμένος έτοιμος για να προγραμματίσετε.

Ο Τοmcat βρίσκεται στη θέση /usr/share/tomcat/ το οποίο για συντομία αναφέρεται ως <CATALINA_HOME>, και είναι διαθέσιμος για προσπέλαση από τον Firefox που διαθέτει η εικονική μηχανή στο port 8080 (π.χ. http://localhost:8080/ για την κεντρική σελίδα εισαγωγής και http://localhost:8080/examples για διάφορα παραδείγματα).

Catalina είναι o servlet container του Tomcat:


Εικόνα2

H βασική ιδέα για τους Servlet container είναι να δίνουν τη δυνατότητα να παράγονται δυναμικά web ιστοσελίδες με χρήση της Java server-side. Πλήρης τεκμηρίωση μπορείτε να βρείτε για τα Java Servlets http://java.sun.com/products/servlet (http://www.oracle.com/technetwork/java/javaee/servlet/index.html

Το πρόγραμμα "Hello-world" Servlet

Προκειμένου να γίνει μετάφραση του java προγράμματος για java servlet και στη συνέχεια να εκτελεστεί και να προσπελαστεί (το αποτέλεσμα που εκτυπώνει) με χρήση ενός web browser (π.χ. firefox) ακολουθείται η εξής διαδικασία κάθε φορά που ένας χρήστης το ζητήσει. Μέσα από ένα web browser στη δική μας περίπτωση τον firefox στην εικονική μηχανή στέλνει το πρόγραμμα το αποτέλεσμά του στη σελίδα. Ένα παράδειγμα προγράμματος προς μετάφραση είναι το : “HelloServlet.java”.Στην παρούσα περίπτωση θα πρέπει να γραφεί ένα java servlet "HelloServlet.java" το οποίο θα μεταφραστεί σε "HelloServlet.class". Ο web browser μπορεί να εκτελέσει/προσπελάσει/δει το πρόγραμμα "HelloServlet.class" αν γραφεί η διεύθυνση URL http://localhost:8080/helloServlet/sayhello Όλα τα εργαλεία που χρειάζονται για την μεταγλώττιση και εκτέλεση του προγράμματος “HelloJava.java” βρίσκονται προεγκατεστημένα στην εικονική μηχανή και είναι το JDK (JVM) και ο Tomcat. Κάθε εφαρμογή Διαδικτύου – εφαρμογή Web (webapp) αναφέρεται ως web context στον Tomcat και μπορεί να περιλαμβάνει αρχεία όπως: εικόνες, html αρχεία, προγράμματα και βιβλιοθήκες. Κάθε Tomcat Java webapp έχει μία συγκεκριμένη δομή φακέλων για να αποθηκεύονται τα αρχεία της.


Εικόνα3

Αφού ξεκινήσει την εικονική μηχανή, πρέπει κάποιος να κάνει login όπως περιγράφηκε παραπάνω. Στο lxterminal που έχει ανοίξει (προσοχή στα κεφαλαία και πεζά, παίζουν ρόλο δεν είναι το ίδιο!)πρέπει ο χρήστης να μπει ως root και στη συνέχεια:

1. Μετακινούμαστε στο φάκελο webapps του tomcat:

cd /usr/share/tomcat/webapps

2. Δημιουργούμε ένα φάκελο helloservlet

mkdir helloservlet

3. Μεταφερόμαστε στον υποκατάλογο helloservlet

cd helloservlet

4. Δημιουργούμε ένα φάκελο WEB-INF και έναν META-INF μέσα στο helloservlet

mkdir WEB-INF

mkdir META-INF

5. Μεταφερόμαστε στον υποκατάλογο WEB-INF

cd WEB-INF

6. Δημιουργούμε φακέλους "classes", "lib" και "src" (χωρίς εισαγωγικά).

mkdir classes

mkdir lib

mkdir src


<CATALINA_HOME>\webapps\helloservlet: O κεντρικός φάκελος της εφαρμογής με όλα τα αρχεία (HTML, CSS, Scripts και εικόνες ) Μπορεί να διαθέτει επιπλέον φακέλους για εικονές κλπ χωριστά

<CATALINA_HOME>\webapps\helloservlet\WEB-INF: Ο φάκελος περιλαμβάνει τον κώδικα, βιβλιοθήκες και τον μεταφρασμένο κώδικα της εφαρμογής.

<CATALINA_HOME>\webapps\helloservlet\WEB-INF\src: Φάκελος με τον πηγαίο κώδικα Java.

<CATALINA_HOME>\webapps\helloservlet\WEB-INF\classes: Φάκελος με τις Java classes (compiled).

<CATALINA_HOME>\webapps\helloservlet\WEB-INF\lib: Παρέχει βιβλιοθήκες σε μορφή πακέτων JAR για το συγκεκριμένο webapp (π.χ. βιβλιοθήκη για τη διασύνδεση με ΒΔ mysql).

Γράφοντας πρόγραμμα Java servlet

Το πρόγραμμα το οποίο θα επεξεργαστεί παρακάτω είναι το HelloServlet.java :


1. // To save as "<CATALINA_HOME>\webapps\helloservlet\WEB-INF\src\HelloServlet.java"

2. //catalina is Tomact’s servlet container

3. import java.io.*;

4. import javax.servlet.*;

5. import javax.servlet.http.*;

6. import java.util.Date;

7. public class HelloServlet extends HttpServlet {

8. @Override

9. public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException, ServletException {

10. // Set the response message's MIME type

11. response.setContentType("text/html;charset=UTF-8");

12. // Allocate an output writer to write the response message into the network socket

13. PrintWriter out = response.getWriter();

14. // Write the response message, in an HTML page

15. try {

16. out.println("<!DOCTYPE html>");

17. out.println("<html><head>");

18. out.println("<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>");

19. out.println("<title>Hello, World</title></head>");

20. out.println("<body>");

21. out.println("<h1>Hello, world!</h1>"); // says Hello

22. // Echo client's request information

23. out.println("<p>Request URI: " + request.getRequestURI() + "</p>");

24. out.println("<p>Protocol: " + request.getProtocol() + "</p>");

25. out.println("<p>PathInfo: " + request.getPathInfo() + "</p>");

26. out.println("<p>Remote Address: " + request.getRemoteAddr() + "</p>");

27. // Generate current datetime

28. String now = new Date().toString();

29. out.println("<p>Datetime: <strong>" + now + "</strong></p>");

30. out.println("</body>");

31. out.println("</html>");

32. } finally {

33. out.close(); // Always close the output writer

34. }

35. }

36. }


7. Ανοίγουμε έναν κειμενογράφο και γράφουμε/τροποποιούμε το παραπάνω πρόγραμμα . Το αποθηκεύουμε ως “ HelloServlet.java” στον κατάλογο “<CATALINA_HOME>\webapps\helloservlet\WEB-INF\src” που δημιουργήσαμε νωρίτερα. Στο λειτουργικό σύστημα που κατεβάσαμε στο εικονικό μηχάνημα σας υπάρχει εγκατεστημένος μόνο ένας πολύ απλός κειμενογράφος, ο οποίος ονομάζεται “Leafpad”. Αυτός είναι προσπελάσιμος από το “Start → Accessories → Leafpad”. Ο λόγος είναι πως προσπαθήσαμε να κρατήσουμε το μέγεθος του αρχείου προς μεταφόρτωση όσο γινόταν μικρότερο. Δείτε στις τελευταίες παραγράφους για το πως θα εγκατασταθεί επιπλέον λογισμικό στον λειτουργικό σύστημα του εικονικού υπολογιστή, συμπεριλαμβανομένων πιο εξελιγμένων κειμενογράφων.

8. Για να μεταφράσουμε το πρόγραμμα χρειάζεται να χρησιμοποιηθεί η παράμετρος –d για να οριστεί συγκεκριμένο φάκελο που θα τοποθετηθεί η κλάση που παράγεται. Δώστε την εντολή: javac -d ../classes HelloServlet.java

Ρύθμιση του Java servlet για δημοσίευση - "web.xml"

Πριν να είναι έτοιμο το πρόγραμμά μας για δημοσίευση μέσω του εξυπηρετητή Tomcat θα πρέπει να τον ενημερώσουμε ώστε να γνωρίζει ποιο είναι το όνομα της εφαρμογής που δημιουργήσαμε, ώστε να μπορεί ένας χρήστης από το web browser (στην περίπτωσή μας μέσα από την εικονική μηχανή με τη χρήση του firefox) να προσπελαύνει την εφαρμογή μας. Στην περίπτωσή μας θα πρέπει να ρυθμιστεί ο Tomcat να απαντά/δημοσιεύει το πρόγραμμα HelloServlet που μόλις μεταφράσαμε παραπάνω στη διεύθυνση: http://hostname:8080/helloservlet/sayhello (όπου hostname θεωρούμε το localhost)

9. Πρέπει να δημιουργηθεί ένα αρχείο με τον παρακάτω κώδικα και με όνομα "web.xml", και να αποθηκευτεί στο φάκελο "webapps\helloservlet\WEB-INF"

Το πρόγραμμα είναι το παρακάτω:

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app version="3.0"

 xmlns="http://java.sun.com/xml/ns/javaee"

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">


  <servlet>
     <servlet-name>HelloWorldServlet</servlet-name>
     <servlet-class>HelloServlet</servlet-class>
  </servlet>

  <!-- Note: All <servlet> elements MUST be grouped together and
         placed IN FRONT of the <servlet-mapping> elements -->

  <servlet-mapping>
     <servlet-name>HelloWorldServlet</servlet-name>
     <url-pattern>/sayhello</url-pattern>
  </servlet-mapping>

</web-app>

Το αρχείο "web.xml" είναι ένας δείκτης δημοσίευσης της εφαρμογής (web application deployment descriptor). Αντιστοιχεί URL σε μία κλάση Java servlet που δημιουργούμε. Η παραπάνω ρύθμιση ορίζει ένα τίτλο για servlet με όνομα "HelloWorldServlet", το οποίο υλοποιεί η κλάση "HelloServlet.class" (που μόλις μεταγλωττίστηκε), και αντιστοιχείται στη διεύθυνση "/sayhello", όπου "/" είναι ο κεντρικός φάκελος της δική μας webapp με όνομα "helloservlet" (ο φάκελος). Άρα το πλήρες URL για το servlet μας είναι http://localhost:8080/helloservlet/sayhello

Κάθε servlet απαιτεί ένα ζεύγος <servlet> και <servlet-mapping> για την αντιστοίχηση, κάτω από ένα μοναδικό! <servlet-name>. Επιπλέον όλα τα <servlet> πρέπει να παρουσιαστούν ομαδοποιημένα πριν τα <servlet-mapping> (όπως φαίνεται στο XML schema).

Εκτέλεση του Hello-world Servlet

Για να εκτελεστεί ένα servlet θα πρέπει να εκκινηθεί ο Tomcat server. Πρέπει να εκτελεστεί το ακόλουθο (ως root):

10. service tomcat status (για να ελεγθεί αν είναι active (running) ήδη. Aν είναι running περνάμε στο βήμα 11 χωρίς να το εκτελέσουμε.)

11. service tomcat start (για να εκκινηθεί το tomcat)

Θα εμφανίζεται “active running” ως ένδειξη επιτυχούς εκκίνησης του server. Μόλις ξεκινήσει ο server μπορεί να προσπελαστεί όποια σελίδα του ή εφαρμογή του επιθυμούμε χωρίς επιπλέον ενέργειες. Στη διεύθυνση http://localhost:8080/manager/ μπορεί να δει κανείς στο firefox τον κατάλογο των εφαρμογών του Tomcat που είναι διαθέσιμες. Κατόπιν πρέπει να εντοπιστεί το /helloservlet και να παρατηρήσουμε ότι η command start είναι ανενεργή άρα έχει γίνει εκκίνηση του servlet επιτυχώς. Αν χρειαστεί να επανεκκινηθεί ένα servlet επειδή π.χ. κάναμε αλλαγή στον κώδικα java, το κάναμε μετάφραση, θα πρέπει να κάνουμε stop και ξανά start την εφαρμογή από το manager του Tomcat παραπάνω για να δούμε την ανανεωμένη σελίδα μας.

Εικόνα4

12. Στον web browser που έχουμε ξεκινήσει (firefox από το αρχικό μενού) δηλώνουμε την ακόλουθη διεύθυνση (όπως την ορίσαμε στο web.xml αρχείο και θεωρούμε ότι ο Tomcat εκτελείται στο port 8080: http://localhost:8080/helloservlet/sayhello

Για να κάνουμε επανεκκίνηση τον tomcat η εντολή είναι: service tomcat restart

Περισσότερες πληροφορίες για servlet και debugging

Common Error Messages

Πιθανά σφάλματα είναι το "404 File Not Found" και το "500 Internal Server Error".

Μεταφορά Δεδομένων μεταξύ VirtualBox και του Υπολογιστή μας

Στο παράρτημα αυτό παραθέτουμε οδηγίες για την μεταφορά δεδομένων μεταξύ του υπολογιστή και του εικονικού υπολογιστή που έχουμε φτιάξει στο Virtual Box. Θα χρειαστεί για πολλούς σκοπούς, π.χ. αποστολή αρχείων μιας άσκησης.

1) Αν δεν έχουμε εγκαταστήσει τα εργαλεία “Guest Additions” (όπως φαίνεται σε παράγραφο παρακάτω) μπορούμε να χρησιμοποιήσουμε ένα USB stick για την μεταφορά αρχείων μεταξύ του υπολογιστή μας και του εικονικού υπολογιστή.

a. Μεταφορά αρχείων από τον εικονικό στον πραγματικό υπολογιστή.

i.	Όσο είμαστε στον εικονικό υπολογιστή τοποθετούμε ένα USB stick στον υπολογιστή μας.
ii.	Από το μενού του Virtual Box επιλέγουμε “Devices → USB Devices” και επιλέγουμε το USB stick που τοποθετήσαμε στον υπολογιστή μας. Αυτό κάνει ορατό το USB stick στον εικονικό υπολογιστή.
iii.	Ανοίγουμε τον “Διαχειριστή Αρχείων” (File Manager), ακολουθώντας την διαδρομή “Start → Accessories → File Manager PCManFM”.
iv.	Αντιγράφουμε τα αρχεία που θέλουμε στο USB stick.
v.	Αποδεσμευούμε (unmount) το USB stick από το σύστημα αρχείων του εικονικού υπολογιστή. Αυτό επιτυγχάνεται μέσα από τον Διαχειριστή Αρχείων που ανοίξαμε στο προηγούμενο βήμα. Στο αριστερό τμήμα του Διαχειριστή Αρχείων θα πρέπει να βλέπουμε το USB stick και δεξιά του ένα τρίγωνο με μια γραμμή από κάτω (“⩠”). Πατώντας το τρίγωνο, αποδεσμεύουμε το USB stick.
vi.	Βγάζουμε το USB stick από τον υπολογιστή μας και το τοποθετούμε το πάλι. Τώρα μπορούμε να δούμε το USB stick στον πραγματικό υπολογιστή μας.
vii.	Αντιγράφουμε τα αρχεία από το USB stick στον πραγματικό υπολογιστή μας.

b. Μεταφορά αρχείων από τον πραγματικό στον εικονικό υπολογιστή.

i.	Όσο είμαστε στον πραγματικό υπολογιστή τοποθετούμε ένα USB stick στον υπολογιστή μας.
ii.	Αντιγράφουμε τα αρχεία από τον πραγματικό υπολογιστή μας στο USB stick.
iii.	Βγάζουμε το USB stick από τον υπολογιστή μας, μεταφερόμαστε στον εικονικό υπολογιστή και τοποθετούμε πάλι το USB stick.
iv.	Ακολουθούμε τα βήματα ii έως και iv της περίπτωσης a. για να αντιγράψουμε τα αρχεία από το USB stick στον εικονικό υπολογιστή.

2) Αν έχουμε εγκαταστήσει τα εργαλεία “Guest Additions”, τότε μπορούμε να ενεργοποιήσουμε το Clipboard (επιλέγουμε από το μενού του Virtual Box “Devices → Shared Clipboard → Bidirectional”) και αντιγράφουμε αρχεία και δεδομένα μεταξύ πραγματικού και εικονικού υπολογιστή όπως κάνει κάποιος συνήθως (Ctrl+C για αντιγραφή, CTRL+V για επικόλληση).

Εγκατάσταση επιπλέον λογισμικού στο Linux

Παρακάτω παρατίθενται οδηγίες για την εγκατάσταση επιπλέον λογισμικού στο λειτουργικό σύστημα Linux του εικονικού υπολογιστή. Το λογισμικό αυτό δεν έχει προεγκατασταθεί , καθώς έγινε προσπάθεια να διατηρηθεί όσο το δυνατόν μικρότερο το μεγέθος του αρχείου που έπρεπε να κατέβει. Τονίζεται πως η εγκατάσταση αυτού του λογισμικού είναι εντελώς προαιρετική. Μπορεί κανείς να ολοκληρώσει το σκοπό του χωρίς αυτό το επιπλέον λογισμικό.

Προκειμένου να εγκατασταθεί επιπλέον λογισιμικό, θα πρέπει να είναι κάποιος συνδεδεμένος ως διαχειριστής (root). Για να το γίνει αυτό, πρέπει να ανοιχθεί ένα τερματικό (terminal), στη συνέχεια δίνεται η εντολή “su –” και στην συνέχεια ο κωδικός του διαχειριστή (“hadoop2.0”). Για να τερματιστεί η σύνδεση ως διαχειριστής πρέπει να δοθεί στο τερματικό απλά η εντολή “exit”. ΠΡΟΣΟΧΗ: Ο διαχειριστής έχει πλήρη δικαιώματα πάνω σε οποιοδήποτε αρχείο, οποιουδήποτε χρήστη. Θα πρέπει να είναι κάποιος εξαιρετικά προσεκτικός προκειμένου να μην σβήσει κατά λάθος χρήσιμα αρχεία. Η εγκατάσταση επιπλέον λογισμικού γίνεται με την βοήθεια ενός προγράμματος που ονομάζεται “διαχειριστής πακέτων” (package manager). Στην περίπτωση του Fedora 21 το πρόγραμμα αυτό ονομάζεται “yum”. Το πρόγραμμα “yum” είναι υπεύθυνο να εντοπίσει, να κατεβάσει και να εγκαταστήσει τα πακέτα λογισμικού που θα του ζητηθούν. Κατά την διάρκεια εγκατάστασης ελέγχει επίσης αν για την σωστή λειτουργία του πακέτου που εγκαθίστανται απαιτείται η εγκατάσταση επιπλέον πακέτων λογισμικού. Στην συνέχεια παραθέτουμε τις εντολές που θα πρέπει να εκτελέστούν προκειμένου να εγκαταστασθει το επιθυμητό επιπλέον λογισμικό .

1) Εάν χρειαστεί κάποιος φυλλομετρητής (web browser) εντός του λειτουργικού συστήματος του εικονικού υπολογιστή, έχουμε τις εξής δύο επιλογές:

a. Midori

Ο εξ ορισμού φυλλομετρητής του γραφικού περιβάλλοντος LXDE. Μπορεί να εγκατασταθεί με την εντολή:

yum install midori

b. Firefox

Ο γνωστός φυλλομετρητής Firefox διατίθεται και για το λειτουργικό σύστημα Linux. Μπορεί να εγκατασταθεί με την εντολή:

yum install firefox

2) Ένας καλύτερος κειμενογράφος για την συγγραφή προγραμμάτων σε Java είναι ο Geany. Μπορεί να εγκατασταθεί με την εντολή:

yum install geany

Στην συνέχεια τον εκκινούμε ακολουθώντας την διαδρομή “Start → Programming → Geany”.

3) Μια σημαντική προσθήκη που μπορεί να γίνει είναι τα “Guest Additions” του Virtual Box. Τα εργαλεία αυτά προσφέρουν επιπλέον δυνατότητες στον εικονικό υπολογιστή, με κυριότερες την καλύτερη ανάλυση οθόνης και το Clipboard για την αντιγραφή δεδομένων και αρχείων μεταξύ του πραγματικού και του εικονικού υπολογιστή. Για την εγκατάσταση πρέπει να ακολουθηθούν τα παρακάτω βήματα.

a. Εγκατάσταση των προαπαιτούμενων πακέτων στο λειτουργικό σύστημα του εικονικού υπολογιστή. Ανοίγουμε ένα τερματικό (terminal), γίνεται ο χρήστης διαχειριστής (“su –“) και εκτελεί την εντολή:

yum install kernel-devel

b. Επανεκκινούμε (reboot) την Εικονική Μηχανή.

c. Εισερχόμαστε στο σύστημα ως χρήστης “hadoop2.0”, ανοίγουμε ένα τερματικό και γινόμαστε διαχειριστής.

d. Από το μενού του Virtual Box επιλέγουμε “Devices → Insert Guest Additions CD image…”.

e. Πατάμε “OK” στο νέο παράθυρο που θα ανοίξει.

f. Ανοίγει ο Διαχειριστής Αρχείων.

g. Στο τερματικό που ανοίξαμε στο βήμα c, μεταφερόμαστε στον υποκατάλογο που βλέπουμε στον Διαχειριστή Αρχείων. Θα πρέπει να δώσουμε την εντολή (με κατάλληλη προσαρμογή):

cd /run/media/hadoop2.0/VBOXADDITIONS_4.3.20_96996

h. Εκτελούμε την εντολή:

sh ./VBoxLinuxAdditions.run

i. Μόλις τελειώσει η προηγούμενη εντολή (θα χρειαστεί μερικά λεπτά), να επανεκκινηθεί η Εικονική Μηχανή.