gpt4 book ai didi

java - ServerServiceDefinition 和具体类有什么关系?

转载 作者:行者123 更新时间:2023-12-02 11:10:39 25 4
gpt4 key购买 nike

我最近在学习使用grpc,在实例化一个名为server的Server类后,对一件事感到困惑:

server = ServerBuilder.forPort(port)
.addService(new MetadataStoreImpl(this.config, port))
.executor(Executors.newFixedThreadPool(numThreads))
.build()
.start();

我阅读了java文档并找到了ServerBuilder.addService:

public abstract T addService(ServerServiceDefinition service);

在这种情况下,我使用自己的类“MetadataStoreImpl”来替换“ServerServiceDefinition”,但仍然不知道为什么。此外,如何从类服务器获取此 MetadataStoreImpl 类的成员变量的引用?有人可以帮助我吗?

最佳答案

如果您的 MetadataStoreImpl 扩展了生成的服务 stub (例如 MetadataStoreImplBase),那么它将实现 gRPC 的 BindableService 接口(interface)。 ServerBuilder 还有另一个 addService接受 BindableService 而不是 ServerServiceDefinition 的方法。 Here是我们生成的代码实现 bindService 方法的示例,该方法仅构建并返回 ServerServiceDefinition

对于第二个问题,您可以通过Server#getServices获取ServerServiceDefinitions列表。 ,但这不会直接返回原始的 MetadataStoreImpl,而是返回由生成代码的 bindService 方法返回的 ServerServiceDefinition。通常,您不会使用 getServices,因为在将服务添加到构建器后您只需保留对服务的引用。

您可以在 https://grpc.io/docs/reference/java/generated-code.html 找到 gRPC Java 生成代码的更多信息。

关于java - ServerServiceDefinition 和具体类有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50649032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com