Skeleton del server gRPC per Java

Puoi scaricare il nostro server gRPC scheletro per iniziare a implementare il server gRPC completo.

Inizia

  1. Crea un progetto Gradle Java (grpc-booking-service), in src/main, crea una directory "proto".

  2. Scarica la definizione del servizio di prenotazione e il protocollo di controllo di integrità e posizionali in src/main/proto. Questi file definiscono i metodi e i messaggi gRPC per l'API Actions Center e il controllo di integrità.

  3. Aggiorna il file build.gradle, aggiungi le 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
    
  4. Esegui il seguente comando per compilare la libreria e generare automaticamente il codice dal plug-in di compilazione protoc:

      ./gradlew build
    
  5. Per attivare TLS sul server, in src/main/certificates/ sono obbligatori i seguenti file:

    • server_cert_chain.pem la catena di certificati del server in formato PEM
    • server_private_key.pem la tua 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 radice attendibili da un'autorità come Mozilla o installare l'insieme di certificati radice attualmente consigliato dall'autorità di internet di Google G2. In quest'ultimo caso, a volte potresti dover aggiornare manualmente il certificato principale
  6. Recupera il codice di esempio 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 e Health.java in src/main/java/grpc/health/v1. In entrambi i file, segui le Attività per completare le implementazioni.

  7. 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
    }
    
  8. Compila il server:

    ./gradlew installDist
    
  9. Esegui il server di prenotazione:

    ./build/install/grpc-booking-service/bin/booking-service
    

Struttura della directory 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

Altro riferimento