J'ai deux classes de ressources simples dans mon application de service Web configurée par Spring. L'une racine (/ rapports) fonctionne correctement en tout chemin après qui retourne une 404. Voici les classes de ressources:Jersey avec Spring donnant toujours 404 pour les sous-ressources
package com.factorlab.ws.reports;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("prototype")
@Path("reports")
public class ReportsResource {
@Autowired
private TestItemResource timelineResource;
@Path("testitem")
public TestItemResource getTimelinResource() {
return timelineResource;
}
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getTestText() {
return "Success!\n";
}
}
et le sous-ressource est ici:
package com.factorlab.ws.reports;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("prototype")
public class TestItemResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Success!\n";
}
}
Je Déployez l'application à Jetty dans une webapp appelée factorlab-ws. curl http://localhost:8080/factorlab-ws/reports
donne du succès. Cependant curl http://localhost:8080/factorlab-ws/reports/testitem
donne un statut 404.
En outre, j'ai mis des points d'arrêt dans chacune des méthodes dans ReportsResouce. getTestText() se bloque bien, mais getTimelineResource() ne le fait pas, ce qui implique qu'il n'entre jamais dans cette méthode.
Que pourrais-je manquer?
Le modèle d'URL de "/" ne fonctionnait pas pour moi; cependant, il était utile d'activer le suivi https://blogs.oracle.com/sandoz/entry/tracing_in_jersey. –