java - Cargando recursos usando Jersey y la anotación @ApplicationPath
tomcat jax-rs (1)
Estoy tratando de implementar un servicio de recuperación jersey básico para Tomcat7 sin web.xml:
@WebServlet(loadOnStartup=1)
@ApplicationPath("resources")
@Path("/mypath/{name}")
public class MyResource extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
s.add(MyResource.class);
return s;
}
@GET
@Consumes("text/plain")
@Produces("text/plain")
public String getWelcome(@PathParam(value = "name") String name) {
return "Welcome to jax-rs " + name;
}
}
Se me presenta un 404 cuando intento acceder: / miapplication / resources / mypath / sample .
Puedo implementar un servlet usando la anotación @WebServlet
, por lo que esto no tiene nada que ver con la carga de servlets sin web.xml en Tomcat7.
Después de leer la documentación de Jersey, el tiempo de ejecución debería analizar las clases que extienden la Application
y ejecutar getClasses()
, cargando todos los recursos de la raíz.
¿Qué versión de Jersey estás usando? Intente dividir la aplicación y el recurso en dos clases. Definitivamente eliminar @WebServlet
anotación. Es decir, tiene una aplicación de extensión de clase anotada con @ApplicationPath
y otra clase anotada con @Path
.
EDITAR: asegúrese de que jersey-servlet.jar
esté incluido en su archivo WAR.