Jakarta ee 如何将CDI依赖注入JAX-RS ClientRequestFilter提供程序
我有一个实现ClientRequestFilter的@Provider。提供程序本身根本没有被发现。当我手动注册它时,就会发现它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
ClientBuilder.newBuilder().register(Somefilter.class);
然而,通过这种方式,CDI不会将依赖项注入到Somefilter中
- AS:WildFly 10
- JAX-RS:Resteasy(内置WildFly)
@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
,我想是这样的。