ServerServiceDefinition和具体的class有什么关系?
What's the relationship with ServerServiceDefinition and a concrete class?
最近在学习使用grpc,在实例化一个Server class named 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);
在这种情况下,我使用自己的class "MetadataStoreImpl" 来替换"ServerServiceDefinition" 但仍然不知道为什么。此外,如何从 class 服务器获取此 MetadataStoreImpl class 的成员变量的引用?
谁能帮帮我?
如果您的 MetadataStoreImpl
扩展生成的服务存根(例如,MetadataStoreImplBase
),那么它将实现 gRPC 的 BindableService
接口。 ServerBuilder
还有一个 addService
method that accepts a BindableService
instead of a ServerServiceDefinition
. Here 是我们生成的代码实现 bindService
方法的一个例子,它只是构建 returns 一个 ServerServiceDefinition
.
对于你的第二个问题,你可以通过 Server#getServices
获得 ServerServiceDefinitions
的列表,但这不会直接返回你原来的 MetadataStoreImpl
,而是 ServerServiceDefinition
由生成代码的 bindService
方法返回。通常,您不会使用 getServices
,因为您只是在将服务添加到构建器后保留对服务的引用。
您可以在 https://grpc.io/docs/reference/java/generated-code.html 找到 gRPC Java 生成的代码的更多信息。
最近在学习使用grpc,在实例化一个Server class named 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);
在这种情况下,我使用自己的class "MetadataStoreImpl" 来替换"ServerServiceDefinition" 但仍然不知道为什么。此外,如何从 class 服务器获取此 MetadataStoreImpl class 的成员变量的引用? 谁能帮帮我?
如果您的 MetadataStoreImpl
扩展生成的服务存根(例如,MetadataStoreImplBase
),那么它将实现 gRPC 的 BindableService
接口。 ServerBuilder
还有一个 addService
method that accepts a BindableService
instead of a ServerServiceDefinition
. Here 是我们生成的代码实现 bindService
方法的一个例子,它只是构建 returns 一个 ServerServiceDefinition
.
对于你的第二个问题,你可以通过 Server#getServices
获得 ServerServiceDefinitions
的列表,但这不会直接返回你原来的 MetadataStoreImpl
,而是 ServerServiceDefinition
由生成代码的 bindService
方法返回。通常,您不会使用 getServices
,因为您只是在将服务添加到构建器后保留对服务的引用。
您可以在 https://grpc.io/docs/reference/java/generated-code.html 找到 gRPC Java 生成的代码的更多信息。