The javax.ws.rs.container.DynamicFeature contract is used by the JAX-RS runtime to register providers, such as interceptors and filters, to a particular resource class or method during application deployment.
The following code snippet shows how you can build the DynamicFeature provider. This example applies RequestLoggerFilter to resource methods annotated with @RequestLogger.
import javax.ws.rs.container.DynamicFeature; import javax.ws.rs.container.ResourceInfo; import javax.ws.rs.core.FeatureContext; import javax.ws.rs.ext.Provider; @Provider public class DynamicFeatureRegister implements DynamicFeature { @Override public void configure(ResourceInfo resourceInfo, FeatureContext context) { //This simple example adds RequestLoggerFilter to methods //annotated with @ RequestLogger if (resourceInfo.getResourceMethod().isAnnotationPresent (RequestLogger.class)) { context.register(RequestLoggerFilter.class); } } }
The DynamicFeature interface is executed at deployment time for each resource method. You can register filters or interceptors on the desired resource class or method in the DynamicFeature implementation.