Получить экземпляр Jetty в Dropwizard 2.0.0

У нас есть проект, сделанный в Dropwizard версии 2.0.0-RC, где мы используем REST-конечные точки. После некоторых проблем мы решили использовать gRPC вместо REST. Существует пара сторонних библиотек для подключения gRPC к Dropwizard, но мы считаем, что они немного устарели и непригодны для использования. Итак, мы думаем о внедрении Armeria и их решения GRPC.

Чтобы реализовать это, мне нужен экземпляр Jetty для присоединения GRPC.

Вот как я могу это решить (смесь GRPC и Armeria):

Server server = Server.builder()
  .http(8080)
  .service(GrpcService.builder()...build())
  .serviceUnder("/", JettyService.forServer(jettyServer))
  .build();
server.start().join();

Так что мне нужно jettyServer быть экземпляром Jetty с типом org.eclipse.jetty.server. Остальная часть кода - это способ Armerias встраивать Jetty. Ссылка на встраиваемую пристань.

Как я могу получить экземпляр Jetty?

2 ответа

Решение

Я смог решить эту проблему, используя жизненные циклы Dropwizard для получения сервера.

// variable server is of type org.eclipse.jetty.server.Server
environment.lifecycle().addServerLifecycleListener(new ServerLifecycleListener() {
    @Override
    public void serverStarted(Server server) {
      // ....
    }
});

С помощью экземпляра вы можете использовать Armeria для подключения gRPC

Я смог использовать ссылки, предоставленные в комментариях к другому ответу, и собрать этот PR в проекте Armeria для добавления модуля dropwizard.

https://github.com/line/armeria/pull/2236

В настоящее время он нацелен на 1.3.x, а не на 2.0, но как только появится стабильный выпуск, его потребуется обновить.

Изменить: PR был принят и объединен

Другие вопросы по тегам