pathparam - post rest java
JAX-RS @PathParam para inyectar en la variable miembro de la clase? (2)
Debido a que la inyección se produce en el momento de creación del objeto, el uso de esta anotación en los campos de clase de recurso y propiedades de bean solo se admite para el ciclo de vida de clase de recurso por solicitud predeterminado. Las clases de recursos que usan otros ciclos de vida solo deben usar esta anotación en los parámetros del método de recursos. - Javadocs JSR-311
Debería poder anotar los campos con @PathParam
siempre que el ciclo de vida de la clase de recurso sea por solicitud. Por defecto, el ciclo de vida de las clases de recursos raíz es por solicitud.
EDITAR: no creo que pueda lograr esto usando EJB. Si elimina la anotación @Stateless
, debería funcionar.
Quiero hacer algo como esto:
@Stateless
@Path("/sensors/{sensorid}/version")
@Consumes({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
@Produces({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
public class SensorVersionRestView extends VersionRestView{
@PathParam("sensorid")
private String sensorid;
@GET
@Path("count")
// so the complete path is i.e.
// domain.com/rs/sensors/111211/version/count
public void getCount() {
// do something with the sensorId....
}
}
Pero lo único que obtengo es null
en tiempo de ejecución (uso Glassfish v3 con Jersey). El compilador y el eclipse nunca mencionan un problema con @PathParam
en la variable de clase de miembro.
¿Qué pasa con mi construcción?
El problema principal es, por qué no quiero usar la ruta completa de cada método en esta clase, que existe otra clase que maneja algunas operaciones de reposo en la capa del sensor (deomain.com/rs/sensors/count ie)
Creo que debes cambiarlo a esto:
@Stateless
@Path("/sensors/{sensorid}/version")
public class SensorVersionRestView extends VersionRestView {
@GET
@Path("count")
@Consumes({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
@Produces({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
// domain.com/rs/sensors/111211/version/count
public void getCount(@PathParam("sensorid") String sensorid) {
// do something with the sensorId....
}
}