jersey - 如何在 JAX-RS 客户端中使用 CDI

标签 jersey jax-rs cdi embedded-jetty weld

我在 SO 和官方文档上搜索了一段时间,但找不到直接将 CDI 注入(inject) JAX-RS 客户端的方法。

我使用 builder 方法检索客户端,我想注册一个 WriterInterceptor (或任何过滤器之类的组件)使用注入(inject)来检索另一个 bean。

我想使用 CDI 注入(inject)并避免向 HK2 注册每个 bean。

ClientBuilder.newBuilder()
            .register(MyWriter.class)
            .build();

和带有注入(inject)类的 MyWriter。
@Provider
public class MyWriter implements WriterInterceptor {
    private final MyRepo repo;

    @Inject
    public MyWriter(MyRepo repo) {
        this.repo = repo;
    }

    @Override
    public void aroundWriteTo(WriterInterceptorContext context) throws IOException, WebApplicationException {
        context.proceed();
    }
}

public class MyRepo {

}

我正在使用 Jersey 2 和 Weld SE 的嵌入式码头运行。

最佳答案

它可以使用 wield 注入(inject) java se 应用程序。

 @Singleton
public class Application {

private static Logger logger = LoggerFactory.getLogger(Application.class);

    @inject
    private SomeOtherBean injectedBean;

public void run() {
    logger.debug("application initialized");
        injectedBean.doSomething();

}

}

内部主要初始化 Weld
import java.io.IOException;

import org.jboss.weld.environment.se.Weld;
import org.jboss.weld.environment.se.WeldContainer;

public class EntryPoint {

  public static void main(String[] args) throws IOException {

   Weld weld = new Weld();
   WeldContainer container = weld.initialize();
   Application application = container.instance().select(Application.class).get();
   application.run();
   weld.shutdown();

  }
}

看看下面的文档

https://docs.jboss.org/weld/reference/latest/en-US/html/environments.html#_java_se

也在下面教程
https://randling.wordpress.com/2011/08/15/cdi-in-java-se/

关于jersey - 如何在 JAX-RS 客户端中使用 CDI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41011692/

相关文章:

java - 配置 Jersey 时,Spring Boot HandlerInterceptor 没有触发?

java - 使用 JAX-RS 服务获取应用程序路径

java - 是否可以对 Jersey REST 方法施加约束?

java - 使用 Jersey 和 Guice 进行 RESTful 服务的实用建议

java - 处理无正文的 POST

jsf - WELD-001410 : The injection point has non-proxyable dependencies

java - JPA 的 Servlet 字符编码问题

java - CDI 的受限泛型

java - Jersey : response with List<DBObject>

java - Google App Engine Jersey 错误格式 json