Puoi scaricare il nostro server gRPC schema per iniziare a implementare il tuo server gRPC completo.
Inizia
Crea un progetto Gradle Java (grpc-booking-service), sotto src/main, crea una directory "proto".
Scarica la definizione del servizio di prenotazione e il protocollo per il controllo di integrità, inseriscili in src/main/proto. Questi file definiscono i metodi e i messaggi gRPC per l'API Actions Center e il controllo di integrità.
Aggiorna il file build.gradle, aggiungi dipendenze e il plug-in protobuf per Gradle. L'introduzione e la guida per protobuf-gradle-plugin sono disponibili qui.
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
Esegui questo comando per creare la libreria e generare automaticamente il codice dal plug-in di build protoc:
./gradlew build
Per attivare TLS sul server, in src/main/certificates/ sono richiesti i seguenti file:
- server_cert_chain.pem la catena di certificati del server in formato PEM
- server_private_key.pem, la chiave privata per la catena di certificati del server deve essere la chiave privata PKCS#8
- trusted_client_roots.pem i certificati radice considerati attendibili durante l'autenticazione dei client, puoi scegliere di ottenere questo insieme di certificati radice attendibili da un'autorità come Mozilla oppure installare il set di certificati radice attualmente consigliati da Google Internet Authority G2. In quest'ultimo caso, a volte potresti dover aggiornare manualmente il certificato radice
Recupera il codice campione da questo repository:
git clone https://maps-booking.googlesource.com/java-maps-booking-grpc-server-skeleton
inserisci BookingService.java in src/main/java/ext/maps/booking/partner/v2, inserisci Health.java in src/main/java/grpc/health/v1. In entrambi i file, segui i TODO per completare le implementazioni.
Aggiorna il file gradle.build per specificare la generazione di file eseguibili del server aggiungendo il seguente codice:
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 }
Compila il server:
./gradlew installDist
Esegui il server di prenotazione:
./build/install/grpc-booking-service/bin/booking-service
Struttura finale della directory
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
Altri riferimenti
Per altri strumenti di creazione, visita gRPC-java e scarica l'esempio, controlla grpc-java/examples.
git clone -b v1.9.0 https://github.com/grpc/grpc-java