As a general rule, for each JAX-RS component class there can be at most one registration — class-based or instance-based — configured at any given moment. Implementations MUST reject any attempts to configure a new registration for a provider class that has been already registered in the given configurable context earlier. Implementations SHOULD also raise a warning to inform the user about the rejected component registration.
config.register(GzipInterceptor.class); // Rejected by runtime.
config.register(new GzipInterceptor()); // Rejected by runtime.
config.register(GzipInterceptor.class, 6500); // Rejected by runtime.
So we need to check whether the same class's instances have already been put into config before hand.
Also to check whether the class/instance has been registered via public boolean isRegistered(Class<?> cls) , we need to check whether the two class is the same other than just isAssignableFrom.