首页 > 解决方案 > 在 Dropwizard 2.0.0 中检索 Jetty 实例

问题描述

我们有一个在 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 的实例?

标签: javadropwizardarmeria

解决方案


我能够通过使用 Dropwizard 生命周期来获取服务器来解决这个问题。

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

通过实例,您可以使用 Armeria 附加 gRPC


推荐阅读