Ensure global interceptors are added to Servlet

Builds on #42 and #1.
This commit is contained in:
Dave Syer
2024-11-11 11:34:31 +00:00
parent c6cbfe1f17
commit b16ec9cf24
3 changed files with 16 additions and 3 deletions

View File

@@ -61,6 +61,14 @@
<groupId>io.grpc</groupId>
<artifactId>grpc-servlet-jakarta</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-tracing-bridge-otel</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@@ -1,3 +1,5 @@
spring.application.name=grpc-tomcat
server.port=9090
server.http2.enabled=true
server.http2.enabled=true
logging.pattern.level=%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]
management.endpoints.web.exposure.include=*

View File

@@ -31,9 +31,11 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.core.Ordered;
import org.springframework.grpc.server.GrpcServiceDiscoverer;
import org.springframework.util.unit.DataSize;
import io.grpc.BindableService;
import io.grpc.ServerServiceDefinition;
import io.grpc.servlet.jakarta.GrpcServlet;
import io.grpc.servlet.jakarta.ServletServerBuilder;
@@ -67,9 +69,10 @@ public class GrpcServerFactoryAutoConfiguration {
@Bean
public ServletRegistrationBean<GrpcServlet> grpcServlet(GrpcServerProperties properties,
List<BindableService> services, ServerBuilderCustomizers serverBuilderCustomizers) {
GrpcServiceDiscoverer discoverer, ServerBuilderCustomizers serverBuilderCustomizers) {
List<ServerServiceDefinition> services = discoverer.findServices();
List<String> paths = services.stream()
.map(service -> "/" + service.bindService().getServiceDescriptor().getName() + "/*")
.map(service -> "/" + service.getServiceDescriptor().getName() + "/*")
.collect(Collectors.toList());
ServletServerBuilder servletServerBuilder = new ServletServerBuilder();
services.forEach(servletServerBuilder::addService);