Άσκηση Ιούλιος 2024
Επιστροφή Επιστροφή στην αρχική

Server Code (TranslateClass.java)

Δημιουργία Web Service με πίνακα μεταφράσεων και 3 μεθόδους SOAP.

Δημιουργία Server Project (με screenshots)

1

Νέο Project

File → New Project.

Βήμα 1: New Project
Άνοιγμα δημιουργίας νέου project.
2

Java Web → Web Application

Επίλεξε Java Web και Web Application.

Βήμα 2: Java Web / Web Application
Επιλογή τύπου project για Web Service.
3

Όνομα Project

Project Name: TranslatePrj (ή ό,τι χρησιμοποιείς στο μάθημα).

Βήμα 3: Name and Location
Συμπλήρωσε όνομα και location.
4

Server & Settings

Server: GlassFish Server, Java EE: Java EE 7 Web.

Βήμα 4: Server and Settings
Διάλεξε GlassFish και κράτα το context path.
5

Προσθήκη Server Instance

Αν δεν υπάρχει, κάνε Add → GlassFish Server.

Βήμα 5: Add Server Instance
Επιλογή GlassFish Server από τη λίστα.
6

Server Location

Δείξε τον φάκελο εγκατάστασης του GlassFish 4.1.1.

Βήμα 6: Server Location
Installation Location: /home/jimpa/GlassFish_Server1/glassfish.
7

Domain Location

Επίλεξε domain (συνήθως default) και κράτα localhost.

Βήμα 7: Domain Location
Ρυθμίσεις domain και ports.
8

Δημιουργία Package

Δεξί κλικ στο Source Packages → New → Java Package.

Βήμα 8: New Java Package
Άνοιγμα δημιουργίας package.
9

Package Name

Γράψε gr.uniwa.translate.

Βήμα 9: Package name
Ορισμός package name.
10

Νέα Java Class

Στο package: New → Java Class.

Βήμα 10: New Java Class
Δημιουργία της κλάσης του service.
11

Class Name

Class Name: TranslateClass.

Βήμα 11: TranslateClass
Ορισμός ονόματος κλάσης.

Πίνακας Μεταφράσεων

ΕλληνικάΑγγλικάΓαλλικάΑλβανικά
φόρεμαdressrobeveshje
παντελόνιpantspantalonpantallona
πουκάμισοshirtchemisekëmishë
γιλέκοvestgiletjelek
κάλτσεςsockschaussettesçorape
πατάτεςpotatoespatatespatate

Κώδικας 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 κώδικα (με απλά λόγια)

1

Package & Imports

Ορίζουμε το package και εισάγουμε τα JAX-WS annotations ώστε η κλάση/μέθοδοι να “φαίνονται” ως SOAP service.

2

@WebService

Με το @WebService δηλώνουμε ότι η κλάση είναι service και της δίνουμε όνομα που θα εμφανιστεί στο WSDL.

3

Πίνακας μεταφράσεων

Ο πίνακας tm είναι ένα matrix. Στήλη 0 = ελληνικά, 1 = αγγλικά, 2 = γαλλικά, 3 = αλβανικά.

4

Λογική μεθόδων

Κάθε @WebMethod ψάχνει τη λέξη στη στήλη 0. Αν τη βρει, επιστρέφει τη σωστή γλώσσα· αλλιώς επιστρέφει μήνυμα λάθους.

💡 Το operationName είναι το όνομα που βλέπει ο client στο WSDL. Το όνομα της Java μεθόδου μπορεί να είναι διαφορετικό.
📋 Το operationName πρέπει να είναι translateToEnglish/translateToFrench/translateToAlbanian.