Я разобрался с решением этой проблемы.
Проблема заключалась в том, что Джерси ожидает класса перехватчика в конфигурации, который он должен вызывать при выполнении критериев перехвата, и это приводило к тому, что класс RegisterServiceInterceptor был инициализирован дважды.Следовательно, NPE в классе RegisterServiceInterceptor.
Я определил эту конфигурацию в отдельном файле конфигурации как
@Provider
public class ResourceFilteringConfiguration implements DynamicFeature {
@Override
public void configure(ResourceInfo resourceInfo, FeatureContext context) {
if (RegistrationService.class.equals(resourceInfo.getResourceClass())
&& resourceInfo.getResourceMethod().getName().equals("register")) {
context.register(RegisterServiceInterceptor.class);
}
}
}
В строке context.register(RegisterServiceInterceptor.class);
я передавал сам класс RegisterServiceInterceptor, которыйвызывал его инициализацию до того, как была достигнута конфигурация зависимостей (упомянутая в вопросе).Таким образом, этот перехватчик инициализировался дважды, что вызывало эту проблему.Я изменил код файла конфигурации на
@Provider
public class ResourceFilteringConfiguration implements DynamicFeature {
@Inject
private RegisterServiceInterceptor registerServiceInterceptor;
@Override
public void configure(ResourceInfo resourceInfo, FeatureContext context) {
if (RegistrationService.class.equals(resourceInfo.getResourceClass())
&& resourceInfo.getResourceMethod().getName().equals("register")) {
context.register(registerServiceInterceptor);
}
}
}
Как вы, наверное, заметили, я сделал изменение, заключающееся в передаче объекта RegisterServiceInterceptor в конфигурацию, и он начал работать нормально.