Je suis en train d'apprendre la création de service web REST. Je me développe donc un programme classique avec des clients et des produits. Mais je me trouve face à un problème étrange. Je travaille avec Eclipse et un serveur GlassFish. Mon projet s'appelle Test07.

J'ai écris plusieurs méthode, dont la méthode suivante. Mon but est d'accéder au web service de la manière "http://localhost:8080/Test07/rest/produits/3"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
@GET
@Path("{id}")
@Produces(MediaType.TEXT_XML)
public String getProduitParIdXML(@PathParam("id") int id) {
	...
}
Jusque là, tout fonctionnait bien.

Puis, j'ai décidé d'ajouter la méthode suivante qui me permettrait d'accéder au web service de la manière "http://localhost:8080/Test07/rest/produits/sport"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
@GET
@Path("{type}")
@Produces(MediaType.TEXT_XML)
public String getProduitParTypeXML(@PathParam("type") String type) {
	...
}
Et j'obtiens alors un pop-up avec le message d'erreur; 'Publishing to GlassFish 4[domain1]...' has encountered a problem. Cannot deploy Test07

Je décide alors de mettre la nouvelle méthode "getProduitParTypeXML()" en commentaire ... mais j'obtiens toujours la même erreur. Si je recrée un projet et que je fais des copies-collés du code en récréant chaque classe 1 par 1, ça marche ... jusqu'au moment où je décommente la fonction "getProduitParTypeXML()". Là, le problème revient à nouveau. On dirait que ça pourrit le projet et je ne sais pas comment revenir à un état stable sans devoir à chaque fois recréer un nouveau projet.

Alors, 2 questions:
1. Que puis-je faire pour réussir à faire fonctionner de nouveau mon web service en mettant la méthode "getProduitParTypeXML()" en commentaire?
2. En REST, est-il interdit d'avoir 2 PathParam de même niveau? L'un en int, l'autre en String? C'est-à-dire que j'aurais aimé avoir un truc du genre "http://localhost:8080/Test07/rest/produits/3" pour obtenir les infos du produit 3 et "http://localhost:8080/Test07/rest/produits/sport" pour obtenir les produits de type sport. Peut-être que je m'y prend mal et que je devrais prévoir un truc du genre "http://localhost:8080/Test07/rest/produits&categorie=sport" ?