JAXRS界面标记和@Context注射
问题描述:
考虑以下简单的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注射在同一时间?
答
由于这个问题是措辞,这可以很容易地通过在实现中的@Context字段注入来解决。使用RESTEasy的“ejb-integration”可以从JNDI中检索实现,这种情况更为复杂。该解决方案尚未(对)从EJB容器检索的实现上执行额外的REST注入。随着即将推出的JEE6/JAXRS集成,这一切将变得更加容易。