Server Code (TranslateClass.java)
Δημιουργία Web Service με πίνακα μεταφράσεων και 3 μεθόδους SOAP.
Δημιουργία Server Project (με screenshots)
Νέο Project
File → New Project.
Java Web → Web Application
Επίλεξε Java Web και Web Application.
Όνομα Project
Project Name: TranslatePrj (ή ό,τι χρησιμοποιείς στο μάθημα).
Server & Settings
Server: GlassFish Server, Java EE: Java EE 7 Web.
Προσθήκη Server Instance
Αν δεν υπάρχει, κάνε Add → GlassFish Server.
Server Location
Δείξε τον φάκελο εγκατάστασης του GlassFish 4.1.1.
/home/jimpa/GlassFish_Server1/glassfish.Domain Location
Επίλεξε domain (συνήθως default) και κράτα localhost.
Δημιουργία Package
Δεξί κλικ στο Source Packages → New → Java Package.
Package Name
Γράψε gr.uniwa.translate.
Νέα Java Class
Στο package: New → Java Class.
Class Name
Class Name: TranslateClass.
Πίνακας Μεταφράσεων
| Ελληνικά | Αγγλικά | Γαλλικά | Αλβανικά |
|---|---|---|---|
| φόρεμα | dress | robe | veshje |
| παντελόνι | pants | pantalon | pantallona |
| πουκάμισο | shirt | chemise | këmishë |
| γιλέκο | vest | gilet | jelek |
| κάλτσες | socks | chaussettes | çorape |
| πατάτες | potatoes | patates | patate |
Κώδικας Service
// TranslateClass.java
package gr.uniwa.translate;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;
@WebService(serviceName = "TranslateService")
public class TranslateClass {
// tm[γραμμή][στήλη] = μετάφραση
private static final String[][] tm = {
{"φόρεμα", "dress", "robe", "veshje"},
{"παντελόνι", "pants", "pantalon", "pantallona"},
{"πουκάμισο", "shirt", "chemise", "këmishë"},
{"γιλέκο", "vest", "gilet", "jelek"},
{"κάλτσες", "socks", "chaussettes", "çorape"},
{"πατάτες", "potatoes", "patates", "patate"}
};
@WebMethod(operationName = "translateToEnglish")
public String translateEN(@WebParam(name = "word") String word) {
for (int i = 0; i < tm.length; i++) {
if (tm[i][0].equals(word)) {
return tm[i][1];
}
}
return "Error: word NOT found";
}
@WebMethod(operationName = "translateToFrench")
public String translateFR(@WebParam(name = "word") String word) {
for (int i = 0; i < tm.length; i++) {
if (tm[i][0].equals(word)) {
return tm[i][2];
}
}
return "Error: word NOT found";
}
@WebMethod(operationName = "translateToAlbanian")
public String translateAL(@WebParam(name = "word") String word) {
for (int i = 0; i < tm.length; i++) {
if (tm[i][0].equals(word)) {
return tm[i][3];
}
}
return "Error: word NOT found";
}
}
Ανάλυση Server κώδικα (με απλά λόγια)
Package & Imports
Ορίζουμε το package και εισάγουμε τα JAX-WS annotations ώστε η κλάση/μέθοδοι να “φαίνονται” ως SOAP service.
@WebService
Με το @WebService δηλώνουμε ότι η κλάση είναι service και της δίνουμε όνομα που θα εμφανιστεί στο WSDL.
Πίνακας μεταφράσεων
Ο πίνακας tm είναι ένα matrix. Στήλη 0 = ελληνικά, 1 = αγγλικά, 2 = γαλλικά, 3 = αλβανικά.
Λογική μεθόδων
Κάθε @WebMethod ψάχνει τη λέξη στη στήλη 0. Αν τη βρει, επιστρέφει τη σωστή γλώσσα· αλλιώς επιστρέφει μήνυμα λάθους.
operationName είναι το όνομα που βλέπει ο client στο WSDL. Το όνομα της Java μεθόδου μπορεί να είναι διαφορετικό.