From 78f485d7c040aa70da28fcbc4254eb152b40f928 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Mon, 11 Oct 2021 15:42:15 +0100 Subject: [PATCH] Add reflection service to grpc server User can now inspect service definitions (e.g. with grpcurl). --- spring-cloud-function-grpc/pom.xml | 5 +++++ .../cloud/function/grpc/GrpcServer.java | 13 +++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/spring-cloud-function-grpc/pom.xml b/spring-cloud-function-grpc/pom.xml index 24560b4d2..5a5fde478 100644 --- a/spring-cloud-function-grpc/pom.xml +++ b/spring-cloud-function-grpc/pom.xml @@ -31,6 +31,11 @@ grpc-protobuf ${grpc.version} + + io.grpc + grpc-services + ${grpc.version} + io.grpc grpc-stub diff --git a/spring-cloud-function-grpc/src/main/java/org/springframework/cloud/function/grpc/GrpcServer.java b/spring-cloud-function-grpc/src/main/java/org/springframework/cloud/function/grpc/GrpcServer.java index 974ae32a6..f5924ef9e 100644 --- a/spring-cloud-function-grpc/src/main/java/org/springframework/cloud/function/grpc/GrpcServer.java +++ b/spring-cloud-function-grpc/src/main/java/org/springframework/cloud/function/grpc/GrpcServer.java @@ -19,13 +19,15 @@ package org.springframework.cloud.function.grpc; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.context.SmartLifecycle; +import org.springframework.util.ClassUtils; + import io.grpc.BindableService; import io.grpc.Server; import io.grpc.ServerBuilder; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import org.springframework.context.SmartLifecycle; +import io.grpc.protobuf.services.ProtoReflectionService; /** * @@ -58,6 +60,9 @@ class GrpcServer implements SmartLifecycle { BindableService bindableService = this.grpcMessageServices[i]; serverBuilder.addService(bindableService); } + if (ClassUtils.isPresent("io.grpc.protobuf.services.ProtoReflectionService", null)) { + serverBuilder.addService(ProtoReflectionService.newInstance()); + } this.server = serverBuilder.build(); logger.info("Starting gRPC server");