Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Dropwizard 2.0.0中检索Jetty实例_Java_Dropwizard_Armeria - Fatal编程技术网

Java 在Dropwizard 2.0.0中检索Jetty实例

Java 在Dropwizard 2.0.0中检索Jetty实例,java,dropwizard,armeria,Java,Dropwizard,Armeria,我们有一个Dropwizard版本2.0.0-RC中的项目,我们使用REST端点。在一些问题之后,我们决定使用gRPC而不是REST。有几个第三方库可以将gRPC连接到Dropwizard,但我们认为它们有点过时,不可用。因此,我们正在考虑实施Armeria及其GRPC解决方案 为了实现这一点,我需要Jetty实例来连接GRPC 这就是我解决问题的方法(GRPC和Armeria的混合): Server=Server.builder() .http(8080) .service(GrpcServi

我们有一个Dropwizard版本2.0.0-RC中的项目,我们使用REST端点。在一些问题之后,我们决定使用gRPC而不是REST。有几个第三方库可以将gRPC连接到Dropwizard,但我们认为它们有点过时,不可用。因此,我们正在考虑实施Armeria及其GRPC解决方案

为了实现这一点,我需要Jetty实例来连接GRPC

这就是我解决问题的方法(GRPC和Armeria的混合):

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实例?

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

//变量服务器的类型为org.eclipse.jetty.server.server
environment.lifecycle().addServerLifecycleListener(新的ServerLifecycleListener()){
@凌驾
已启动公用void服务器(服务器){
// ....
}
});

通过该实例,您可以使用Armeria连接gRPC

我可以使用其他答案的注释中提供的链接,并将此PR放在Armeria项目中,以添加dropwizard模块

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


编辑:PR已被接受并合并

如果任何人有类似的目标-请查看Dropwizard的用户手册和最后一个主题“Dropwizard内部”。最后讨论了一个特殊的问题:同样从架构/代码结构的角度来看,最好使用扩展/替换ServerFactory实现。这里提供的是:。下面是另一个项目如何实现相同的目标:下面是我如何快速检查的。主分支是2.0.x版本,1.3.x版本有自己的分支。比较这两个分支关于引导接口中的更改:您将看到很少的细微更改。还可以看看维基:我想在某个时候,那里的更改也会反映在文档源中:还要注意:这将是最明显的更改之一(从开发人员的角度)。@zloster感谢所有的链接。我通过重写ServerFactory实现了这一点