在 Dropwizard 2.0.0 中检索 Jetty 实例
Retrieve the Jetty instance in Dropwizard 2.0.0
我们有一个用 Dropwizard 2.0.0-RC 版制作的项目,我们在其中使用 REST 端点。在一些问题之后,我们决定使用 gRPC 而不是使用 REST。有几个第 3 方库可以将 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
成为类型为 org.eclipse.jetty.server
的 Jetty 实例。其余代码是 Armerias 嵌入 Jetty 的方式。 Link to embedding jetty.
如何获取 Jetty 实例?
我能够通过使用 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 被接受并合并
我们有一个用 Dropwizard 2.0.0-RC 版制作的项目,我们在其中使用 REST 端点。在一些问题之后,我们决定使用 gRPC 而不是使用 REST。有几个第 3 方库可以将 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
成为类型为 org.eclipse.jetty.server
的 Jetty 实例。其余代码是 Armerias 嵌入 Jetty 的方式。 Link to embedding jetty.
如何获取 Jetty 实例?
我能够通过使用 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 被接受并合并