NPE при получении обработчика приложения - PullRequest
0 голосов
/ 15 января 2020

Используя Dropwizard 1.3.17, мы получаем ServiceLocator следующим образом:

ServiceLocator serviceLocator = ((ServletContainer) environment.getJerseyServletContainer()).getApplicationHandler().getServiceLocator();

Когда мы мигрировали в Dropwizard 2, это стало:

ServletContainer servletContainer = (ServletContainer) Objects.requireNonNull(environment.getJerseyServletContainer());
ApplicationHandler applicationHandler = servletContainer.getApplicationHandler();
InjectionManager injectionManager = applicationHandler.getInjectionManager();
ServiceLocator serviceLocator;
if (injectionManager instanceof ImmediateHk2InjectionManager)
{
  serviceLocator = ((ImmediateHk2InjectionManager) injectionManager).getServiceLocator();
}
else if (injectionManager instanceof DelayedHk2InjectionManager)
{
  serviceLocator = ((DelayedHk2InjectionManager) injectionManager).getServiceLocator();
}
else
{
  throw new IllegalStateException("Expecting an HK2 injection manager");
}

Однако ApplicationHandler равен нулю. Есть идеи?

1 Ответ

0 голосов
/ 20 января 2020

Мы реорганизовали наш код, чтобы не полагаться на локатор службы до org.eclipse.jetty.server.Server.start. Кажется, работает.

...