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