Możesz pobrać nasz szkielet serwera gRPC ułatwiający rozpoczęcie wdrażania pełnego serwera gRPC.
Rozpocznij
Utwórz projekt Gradle w Javie (usługa grpc-booking-service) w folderze src/main. utworzyć proto, katalogu.
Pobierz usługę rezerwacji definicja i kontroli stanu protokół, możesz je umieścić w elemencie src/main/proto. Definiują one metody gRPC dla interfejsu Actions Center API i kontroli stanu.
Zaktualizuj plik build.gradle, dodaj zależności i wtyczkę protobuf dla Gradle. Wprowadzenie i przewodnik po wtyczce protobuf-gradle znajdziesz tutaj.
apply plugin: 'java' apply plugin: 'com.google.protobuf' repositories { mavenCentral() } // updating the version in our release process. def grpcVersion = '1.8.0' // CURRENT_GRPC_VERSION def nettyTcNativeVersion = '2.0.7.Final' dependencies { compile "com.google.api.grpc:proto-google-common-protos:0.1.9" compile "io.grpc:grpc-netty:${grpcVersion}" compile "io.grpc:grpc-protobuf:${grpcVersion}" compile "io.grpc:grpc-stub:${grpcVersion}" compile "io.netty:netty-tcnative-boringssl-static:${nettyTcNativeVersion}" compile "org.bouncycastle:bcmail-jdk15:1.46" testCompile "io.grpc:grpc-testing:${grpcVersion}" testCompile "junit:junit:4.12" testCompile "org.mockito:mockito-core:1.9.5" } buildscript { repositories { mavenCentral() } dependencies { // ASSUMES GRADLE 2.12 OR HIGHER. Use plugin version 0.7.5 with earlier // gradle versions classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.1' } } protobuf { protoc { artifact = 'com.google.protobuf:protoc:3.4.0' } plugins { grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" } } generateProtoTasks { all()*.plugins { grpc {} } } } // Inform IDEs like IntelliJ IDEA, Eclipse or NetBeans about the generated code. sourceSets { main { java { srcDirs 'build/generated/source/proto/main/grpc' srcDirs 'build/generated/source/proto/main/java' } } } // Generate IntelliJ IDEA's .idea & .iml project files apply plugin: 'idea' // Provide convenience executables for trying out the examples. apply plugin: 'application' startScripts.enabled = false
Uruchom to polecenie, aby utworzyć bibliotekę i automatycznie wygenerować kod na podstawie wtyczka do tworzenia kompilacji protoc:
./gradlew build
Aby włączyć TLS na serwerze, w sekcji src/main/certificates/ wymagane są następujące pliki:
- server_cert_chain.pem łańcuch certyfikatów serwera w formacie PEM.
- server_private_key.pem klucz prywatny certyfikatu serwera. łańcuch, musi być kluczem prywatnym PKCS#8
- trusted_client_roots.pem certyfikaty główne, które są zaufane podczas uwierzytelniania klientów, możesz wybrać opcję uzyskiwania takiego zestawu zaufanych źródeł takich jak Mozilla lub zainstaluj zestaw rdzeni obecnie zalecanych przez urząd internetowy Google G2. W tym drugim przypadku być może trzeba ręczne aktualizowanie certyfikatu głównego
Pobierz przykładowy kod z tego repozytorium:
git clone https://maps-booking.googlesource.com/java-maps-booking-grpc-server-skeleton
umieść plik BookingService.java pod src/main/java/ext/maps/booking/partner/v2, pod nagłówkiem Health.java src/main/java/grpc/health/v1. W obu plikach wykonaj instrukcje TODOs, aby dokończ implementacje.
Zaktualizuj plik gradle.build, aby określić generację pliku wykonywalnego serwera dodając ten kod:
task bookingService(type: CreateStartScripts) { mainClassName = 'ext.maps.booking.partner.v2.BookingService' applicationName = 'booking-service' outputDir = new File(project.buildDir, 'tmp') classpath = jar.outputs.files + project.configurations.runtime } applicationDistribution.into('bin') { from(bookingService) fileMode = 0755 }
Kompilowanie serwera:
./gradlew installDist
Uruchom serwer rezerwacji:
./build/install/grpc-booking-service/bin/booking-service
Ostateczna struktura katalogów
src
|---main
|---certificates
|---server_cert_chain.pem
|---server_private_key.pem
|---trusted_client_roots.pem
|---java
|---ext.maps.booking.partner.v2.BookingService.java
|---grpc.health.v1.Health.java
|---proto
|---booking_service.proto
|---health.proto
|---test
Inne materiały
Inne narzędzia budowlane znajdziesz w gRPC-java i pobierz plik sprawdź grpc-java/examples.
git clone -b v1.9.0 https://github.com/grpc/grpc-java