gpt4 book ai didi

JAX-RS 接口(interface)标记和@Context 注入(inject)

转载 作者:行者123 更新时间:2023-12-02 00:43:33 25 4
gpt4 key购买 nike

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

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

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

}

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

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

一切正常,除了当我想介绍一些 RESTEasy 的上下文注入(inject)时,即:@Context。天真地考虑以下问题:

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

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

}

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

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

最佳答案

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

关于JAX-RS 接口(interface)标记和@Context 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1765766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com