当前位置: 首页 > 知识库问答 >
问题:

如何在JAX遥感客户端使用CDI

阎弘雅
2023-03-14

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

我使用builder方法检索一个客户机,并想注册一个< code>WriterInterceptor(或任何类似过滤器的组件),它使用注入来检索另一个bean。

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

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

和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 {

}

我在一个带有泽西2和焊接SE的嵌入式码头上运行。

共有2个答案

汲昊空
2023-03-14

如果我理解正确的话,这个问题已经被问过并回答过了。简而言之:你必须覆盖H2K绑定器的默认行为,这样它就可以连接到焊接豆管理器。你以后不必向H2K注册每个Bean。

编辑:包含帖子中的所有内容,这样你就不必阅读评论了:

  • 链接的答案是服务器端的,而不是客户端的。
  • 使用标准工具(泽西客户端注入提供程序和焊接桥),这似乎是一个太大的开销/不可能做到
  • 显然,在Dropwizard项目中,他们设法进行了自定义客户端注入。
东门佐
2023-03-14

可以使用wield注入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/

 类似资料:
  • 我正在编写自定义JAX-RS 2.0应用程序(在泽西岛2.3.1下),其中包含一些数据供所有资源使用。 (我也可以使用API的< code > javax . ws . RS . core . application ,描述的结果是相同的) 然后将对象注入资源 然而,打电话的结果是 这让我使用一些丑陋的技巧,如 我对JAX-RS 2.0规范第9.2.1节的理解: 可以使用 注释将应用程序提供的 子

  • 我正在将JAX-RS应用程序从WebSphere 8.0迁移到WebSphere Liberty 8.5.5。 在WebSphere 8.0中,Jackson是由WebSphere提供的。我可以在AppServer\plugins\目录中找到、、和文件。 在新的应用服务器(WebSphere Liberty)中,我得到以下异常:< code > org . code Haus . Jackson

  • 我尝试为我的网站提供文件上传/下载服务,并且尝试使用openstack中的对象存储。问题是,我通过php和openstack PHPSDK做这件事没有问题,但是当我试图通过一些javascript做这件事时,我找不到一个好的sdk或方法。我没有使用node,我有一个php服务器和一个javascript客户端。我想直接从javascript客户端上传或下载文件。我不希望文件通过php服务器传输。我

  • 我正在使用泽西JAX-RS客户端(版本2.0)。我知道它使用Jackson ObjectMapper来生成和解析JSON。我想使用相同的对象为一些java类生成JSON,这样我就可以将它们写入日志。 我知道我可以创建一个新的ObjectMapper实例,但我更喜欢请求泽西客户端给我一个它正在使用的引用。我该怎么做呢?泽西2.0知道Jackson,因为它包含一个JacksonFeature类,该类首

  • 创建okhttp3客户端,使用sni地址访问web服务器,但握手失败,错误消息为“javax.net.ssl.SSLHandShakeException:握手期间远程主机关闭连接”。 有人知道如何在okhttp3客户端代码中使用sni地址吗?

  • 莴苣支持这种开箱即用的群集/分片吗?如果是,如何将其配置为使用客户端散列?