首页 > 解决方案 > Quarkus - 扩展包括 3rd 方 ContainerRequestFilter

问题描述

如果我遵循这个,我可以添加一个 ContainerRequestFilter,它会被 Quarkus 拾取并按预期运行。但是,我正在编写一个扩展来利用另一个团队编写的 ContainerRequestFilter。我不确定如何让 Quarkus 使用这个过滤器。我尝试将其添加为 AdditionalBeanBuildItem

@BuildStep
public void producer(BuildProducer<AdditionalBeanBuildItem> additionalBeans) {    
  additionalBeans.produce(AdditionalBeanBuildItem.unremovableOf(3rdPartyFilter.class));
}

但这不起作用,过滤器不会在请求上运行。

标签: javaquarkus

解决方案


你可以看看其他扩展是如何做到这一点的,例如quarkus-smallrye-opentracing它是如何做到的。

基本上,您只需要在runtime应用程序的模块中添加 JAX-RS DynamicFeature。

@Provider
public class QuarkusSmallRyeTracingStandaloneVertxDynamicFeature implements DynamicFeature {

    @Override
    public void configure(ResourceInfo resourceInfo, FeatureContext context) {
        context.register(MyFilter.class);
    }

    public static class MyFilter implements ContainerRequestFilter {
        // whatever
    }
}

推荐阅读