Vous pouvez télécharger notre squelette de serveur gRPC pour commencer à mettre en œuvre votre serveur gRPC complet.
Commencer
Créez un projet Gradle Java (grpc-booking-service), sous "src/main", puis créez un répertoire "proto".
Téléchargez la définition du service de réservation et le protocole de vérification de l'état, puis placez-les sous src/main/proto. Ces fichiers définissent les méthodes et les messages gRPC pour l'API Actions Center et la vérification de l'état.
Mettez à jour le fichier build.gradle, ajoutez des dépendances et le plug-in protobuf pour Gradle. Pour consulter l'introduction et le guide du plug-in protobuf-gradle-plugin, cliquez ici.
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
Exécutez la commande suivante pour compiler la bibliothèque et générer automatiquement le code à partir du plug-in de compilation protoc:
./gradlew build
Pour activer le protocole TLS sur le serveur, sous src/main/certificates/, les fichiers suivants sont requis:
- server_cert_chain.pem votre chaîne de certificats de serveur au format PEM
- server_private_key.pem, votre clé privée pour la chaîne de certificats du serveur, doit être la clé privée PKCS#8.
- trusted_client_roots.pem les certificats racines approuvés lors de l'authentification des clients, vous pouvez choisir d'obtenir cet ensemble de certificats racine de confiance auprès d'une autorité telle que Mozilla ou d'installer l'ensemble de certificats racine actuellement recommandés par Google Internet Authority G2. Dans ce dernier cas, vous devrez peut-être mettre à jour manuellement le certificat racine à certains moments
Récupérez l'exemple de code de ce dépôt:
git clone https://maps-booking.googlesource.com/java-maps-booking-grpc-server-skeleton
placez BookingService.java sous src/main/java/ext/maps/booking/partner/v2 et placez Health.java sous src/main/java/grpc/health/v1. Dans les deux fichiers, suivez les instructions de la section TODO pour terminer vos implémentations.
Mettez à jour le fichier gradle.build pour spécifier la génération du fichier exécutable du serveur en ajoutant le code suivant:
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 }
Compilez le serveur:
./gradlew installDist
Exécutez le serveur de réservation:
./build/install/grpc-booking-service/bin/booking-service
Structure finale du répertoire
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
Autres références
Pour les autres outils de compilation, consultez le gRPC-java et téléchargez l'exemple, vérifiez grpc-java/examples.
git clone -b v1.9.0 https://github.com/grpc/grpc-java