Получить экземпляр 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 был принят и объединен