JAX-RS接口标记和@Context注入

时间:2009-11-19 19:07:13

标签: jax-rs resteasy

考虑以下简单的RESTEasy(JAX-RS)服务:

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

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

}

我想在接口而不是类上定义JAXRS细节,所以我可以使用漂亮的客户端框架,即:

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

除了我想介绍一些RESTEasy的上下文注入时,一切都运行良好,即:@Context。天真地,考虑以下几点:

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

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

}

这显然没有意义,因为这个@Context注入是正交的并且不属于接口(此外,即使我可以从客户端的角度看到这个接口的丑陋并传递null,目前还有阻止此操作的错误:RESTEASY-311

如何使用接口JAXRS标记(因此利用漂亮的RESTEasy客户端框架)并同时访问正交的@Context注入?

1 个答案:

答案 0 :(得分:3)

正如这个问题的措辞,这可以通过实现中的@Context字段注入轻松解决。使这种特殊情况变得复杂的是使用RESTEasy的“ejb-integration”,它从JNDI中检索实现。此解决方案(尚未)对从EJB容器检索的实现执行其他REST注入。即将推出的JEE6 / JAXRS集成将更加轻松。