2009-11-19 100 views
3

考虑以下简单的RESTEasy(JAXRS)服务:JAXRS界面标记和@Context注射

@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注射在同一时间?

回答

3

由于这个问题是措辞,这可以很容易地通过在实现中的@Context字段注入来解决。使用RESTEasy的“ejb-integration”可以从JNDI中检索实现,这种情况更为复杂。该解决方案尚未(对)从EJB容器检索的实现上执行额外的REST注入。随着即将推出的JEE6/JAXRS集成,这一切将变得更加容易。