Puoi scaricare lo scheletro del nostro server gRPC che ti aiuterà a iniziare a implementare il tuo server gRPC completo.
Inizia
Crea un progetto gradle Java (grpc-booking-service), nel campo src/main, crea un "proto" .
Scarica il servizio di prenotazione definizione e il controllo di integrità protocollo, e posizionarli sotto src/main/proto. Questi file definiscono i metodi gRPC messaggi per l'API Actions Center e il controllo di integrità.
Aggiorna il file build.gradle, aggiungi le dipendenze e il plug-in protobuf per Gradle. L'introduzione e la guida per il plug-in protobuf-gradle possono essere 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 dalla Plug-in di build Protoc:
./gradlew build
Per attivare TLS sul server, in src/main/certificates/ viene usato il i seguenti file sono obbligatori:
- server_cert_chain.pem la tua catena di certificati del server in formato PEM
- server_private_key.pem la tua chiave privata per il certificato del server deve essere la chiave privata PKCS#8
- trusted_client_roots.pem: i certificati radice considerati attendibili al momento di autenticare i client, puoi scegliere di ottenere questo insieme fonti attendibili da parte di autorità come Mozilla oppure installa il set dei certificati radice attualmente consigliati dalla Google Internet Authority O2. Nel secondo caso, potresti avere di aggiornare manualmente il certificato radice ogni tanto
Recupera il codice campione da questo repository:
git clone https://maps-booking.googlesource.com/java-maps-booking-grpc-server-skeleton
inserisci BookingService.java sotto src/main/java/ext/maps/booking/partner/v2, inserisci Health.java in src/main/java/grpc/health/v1. In entrambi i file, segui le istruzioni TODO per per completare le implementazioni.
Aggiorna il file gradle.build per specificare la generazione dell'eseguibile 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
Altro riferimento
Per altri strumenti di creazione, visita la gRPC-java e scarica il file esempio, controlla grpc-java/examples.
git clone -b v1.9.0 https://github.com/grpc/grpc-java