3
我在Jersey中使用DynamicFeature
將容器請求篩選器動態綁定到某些特定的資源方法。除了DynamicFeature
之外,我還有適用於所有資源方法的常規過濾器。但是,我發現這些過濾器的優先級/順序不能按預期工作。例如:爲什麼Jersey不尊重動態綁定過濾器的優先級?
public class MyDynamicFeature implements DynamicFeature {
@Override
public void configure(ResourceInfo resourceInfo, FeatureContext featureContext) {
featureContext.register(MyDynamicFilter.class, 2);
}
}
public class MyDynamicFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext containerRequestContext) throws IOException {
System.out.println("Hey! I am dynamic!");
}
}
public class MyStaticFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext containerRequestContext) throws IOException {
System.out.println("Hey! I am static!");
}
}
在ResourceConfig
,我註冊DynamicFeature
和過濾器具有優先級:
register(MyDynamicFeature.class, 1);
register(MyStaticFilter.class, 3);
理想的情況下,如果請求來自通過過濾器,我期望從日誌中看到:
Hey! I am dynamic!
Hey! I am static!
因爲動態濾波器比靜態的更高的優先級,而是,我看到
Hey! I am static!
Hey! I am dynamic!
所以它看起來像動態綁定的過濾器總是在靜態綁定後結束。爲什麼不尊重我設定的優先事項?