Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee 如何将CDI依赖注入JAX-RS ClientRequestFilter提供程序_Jakarta Ee_Jersey_Jax Rs_Cdi - Fatal编程技术网

Jakarta ee 如何将CDI依赖注入JAX-RS ClientRequestFilter提供程序

Jakarta ee 如何将CDI依赖注入JAX-RS ClientRequestFilter提供程序,jakarta-ee,jersey,jax-rs,cdi,Jakarta Ee,Jersey,Jax Rs,Cdi,我有一个实现ClientRequestFilter的@Provider。提供程序本身根本没有被发现。当我手动注册它时,就会发现它 ClientBuilder.newBuilder().register(Somefilter.class); 然而,通过这种方式,CDI不会将依赖项注入到Somefilter中 AS:WildFly 10 JAX-RS:Resteasy(内置WildFly) 我的Somefilter类的代码如下所示 @Provider public class Somefilt

我有一个实现ClientRequestFilter的@Provider。提供程序本身根本没有被发现。当我手动注册它时,就会发现它

ClientBuilder.newBuilder().register(Somefilter.class);
然而,通过这种方式,CDI不会将依赖项注入到Somefilter中

  • AS:WildFly 10
  • JAX-RS:Resteasy(内置WildFly)
我的Somefilter类的代码如下所示

@Provider
public class Somefilter implements ClientRequestFilter {

@Inject
private AccountService accountService;


@Override
public void filter(ClientRequestContext requestContext) throws IOException {
    System.out.println(accountService);

}
}

应用程序还有一个服务器部件,配置为@application annotation,使用一些实现ContainerRequestFilter的类。这些都是由Resteasy甚至CDI注入工程发现的


所以问题是,我如何让客户端api相关的提供程序注入CDI依赖项。

@Provider
实现在服务器端自动发现,但在客户端不会发现

试试这个:

@Inject
private Somefilter someFilter;

ClientBuilder.newBuilder().register(someFilter);

确保将bean定义注释添加到
Somefilter
(例如
@Dependent
)。

确保导入正确的包
javax.enterprise.context
,以声明服务类的
@RequestScoped
范围:

import javax.enterprise.context.RequestScoped;

@Named
@RequestScoped
public class AccountService {

}

我遇到了这个问题,并发现我错误地使用了Faces(JSF)包,它是
javax.Faces.bean.requestScope

是否可以对每个请求实例化过滤器?如果过滤器是
@requestScope
,我想是这样的。