Squelette de serveur gRPC pour Java

Vous pouvez télécharger notre squelette de serveur gRPC pour vous aider à commencer à implémenter votre serveur gRPC complet.

Premiers pas

  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 en savoir plus sur protobuf-gradle-plugin, consultez cette page.

        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 du code à partir du plug-in de compilation protoc:

      ./gradlew build
    
  5. Pour activer TLS sur le serveur, sous src/main/certificates/, les fichiers suivants sont requis:

    • server_cert_chain.pem : chaîne de certificats de votre 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 racine approuvés lors de l'authentification des clients. Vous pouvez choisir d'obtenir cet ensemble de racines approuvées auprès d'une autorité telle que Mozilla, ou d'installer l'ensemble de racines actuellement recommandé par l'autorité Internet Google G2. Dans ce dernier cas, vous devrez peut-être mettre à jour manuellement le certificat racine de temps en temps.
  6. Récupérer l'exemple de code à partir 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 Health.java sous src/main/java/grpc/health/v1. Dans les deux fichiers, suivez les tâches à faire pour finaliser vos implémentations.

  7. Modifiez le fichier gradle.build pour spécifier la génération de l'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 de répertoire finale

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