在Dropwizard 2.0.0中检索Jetty实例。

3
我们有一个使用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。其余的代码是使用Armeria嵌入Jetty的方式。如何获取Jetty的实例?请参考链接
2个回答

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。


1
如果有人有类似的目标/目标,请查看Dropwizard的用户手册和最后一个主题“Dropwizard内部”。特定问题在末尾有详细介绍:https://www.dropwizard.io/en/release-1.3.x/manual/internals.html#jetty-lifecycle - undefined
从架构/代码结构的角度来看,最好使用扩展/替换ServerFactory实现。提供的实现在这里:https://github.com/dropwizard/dropwizard/tree/master/dropwizard-core/src/main/java/io/dropwizard/server。以下是另一个项目实现相同目标的方式:https://github.com/msteinhoff/dropwizard-grpc/tree/master/src/main/java/io/dropwizard/grpc/server。 - undefined
你知道在2.0.0版本中是如何处理的吗,@zloster? - undefined
2
这是我进行了一个快速检查的方法。主分支是2.0.x版本,1.3.x版本有自己的分支。比较这两个分支在引导接口方面的变化:https://github.com/dropwizard/dropwizard/commits/master/dropwizard-core/src/main/java/io/dropwizard/server 你会发现那里只有很少且微妙的变化。还请查看一下维基页面:https://github.com/dropwizard/dropwizard/wiki/Upgrade-guide-1.3.x-to-2.0.x 我猜这些变化也会在文档源代码中反映出来的某个时候:https://github.com/dropwizard/dropwizard/tree/master/docs/source/manual - undefined
2
还要注意这个:https://github.com/dropwizard/dropwizard/wiki/Upgrade-guide-1.3.x-to-2.0.x#dropwizard-bill-of-materials-bom 这将是最明显的变化之一(从开发者的角度来看)。 - undefined
1
@zloster 感谢你提供的所有链接。我通过重写ServerFactory成功实现了这个功能。 - undefined

0

我能够使用其他答案评论中提供的链接,并在Armeria项目中添加一个dropwizard模块,完成了这个PR。

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

目前它的目标是1.3.x而不是2.0,但一旦有一个稳定版本存在,就需要升级

编辑:PR已被接受并合并


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接