Skeleton de serveur gRPC pour Java

Vous pouvez télécharger notre squelette de serveur gRPC pour commencer à mettre en œuvre votre serveur gRPC complet.

Commencer

  1. Créez un projet Gradle Java (grpc-booking-service), sous "src/main", puis créez un répertoire "proto".

  2. 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.

  3. 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
    
  4. 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
    
  5. 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
  6. 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.

  7. 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
    }
    
  8. Compilez le serveur:

    ./gradlew installDist
    
  9. 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