3

考虑以下简单的 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 注入?

4

1 回答 1

3

正如这个问题所表达的那样,这可以通过在实现中的@Context 字段注入轻松解决。使这种特殊情况复杂化的是使用 RESTEasy 的“ejb-integration”,它从 JNDI 检索实现。此解决方案(尚)不会对从 EJB 容器检索到的实现执行额外的 REST 注入。随着即将到来的 JEE6/JAXRS 集成,这一切都会变得更容易。

于 2009-11-20T22:12:44.910 回答