Provando a non utilizzare le mappe:
codice:
package beans;


import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement
public class Word {


    private String parola;
    private String definizione;


    public Word(){}


    public Word(String parola, String definizione) {
        this.parola = parola;
        this.definizione = definizione;
    }


    public String getDef() {
        return definizione;
    }


    public void setDef(String definizione) {
        this.definizione = definizione;
    }
}
codice:
package beans;


import java.util.ArrayList;
import java.util.List;


import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement
@XmlAccessorType (XmlAccessType.FIELD)
public class Words {


    @XmlElement(name="words")
    private List<Word> wordslist;
    private static Words instance;


    public void Users() {
        wordslist = new ArrayList<Word>();
    }


    //singleton
    public synchronized static Words getInstance(){
        if(instance==null)
            instance = new Words();
        return instance;
    }


    public synchronized List<Word> getWordslist() {
        return new ArrayList<>(wordslist);
    }


    // public void setWordslist(List<Word> wordslist) {this.wordslist = wordslist;}


    public synchronized void  add(Word w){ wordslist.add(w); }


    /*public User getByName(String name){


        List<User> usersCopy = getUserslist();


        for(User u: usersCopy)
            if(u.getName().toLowerCase().equals(name.toLowerCase()))
                return u;
        return null;
    }*/


}
codice:
package services;




import beans.Word;
import beans.Words;


import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;


@Path("words")
public class WordsService {


    //restituisce la lista di parole
    @GET
    @Produces({"application/json", "application/xml"})
    public Response getWordsList(){


        return Response.ok(Words.getInstance()).build();


    }


    //permette di inserire una parola (nome e definizione)
    @Path("add")
    @POST
    @Consumes({"application/json", "application/xml"})
    public Response addWord(Word w){
        Words.getInstance().add(w);
        return Response.ok().build();
    }




}