Pregunta

Considere el siguiente RESTEasy sencilla (JAX-RS) Servicio:

@Path("/example-service")
public interface ExampleService {

    @Path("/ping")
    @GET
    public String ping(String message);

}

quiero definir detalles JAXRS en la interfaz en lugar de la clase, así que puede utilizar el marco de cliente agradable, es decir:

ExampleService client = ProxyFactory.create(ExampleService.class, "http://localhost:8080");

Todo funciona bien, excepto cuando quiero introducir algunas de las inyecciones de contexto de RESTEasy, es decir: @Context. Ingenuamente, considere lo siguiente:

@Path("/example-service")
public interface ExampleService {

    @Path("/ping")
    @GET
    public String ping(@Context HttpServletRequest request, String message);

}

Esto, obviamente, no tiene sentido, porque esta inyección @Context es ortogonal y no pertenece a la interfase (por otra parte, incluso si yo puedo pasar de la fealdad de esta interfaz desde la perspectiva del cliente y pasar null, en la actualidad existe un error prevenir esto desde trabajo: RESTEASY-311 )

¿Cómo puedo usar JAXRS interfaz de marcado (y, por tanto, aprovechar el buen marco cliente RESTEasy) y acceder a las inyecciones @Context ortogonales al mismo tiempo?

¿Fue útil?

Solución

A medida que se formula esta pregunta, esto se puede solucionar fácilmente con una inyección de campo @Context en la implementación. Lo que complica esta situación particular, fue el uso de "ejb-integración" de RESTEasy que recupera la aplicación de JNDI. Esta solución no (todavía) realizar inyecciones adicionales REST sobre la aplicación recuperada desde el contenedor EJB. Todo esto será más fácil con la próxima integración JEE6 / JAXRS.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top