Skeleton di server gRPC per Java

Puoi scaricare lo scheletro del nostro server gRPC che ti aiuterà a iniziare a implementare il tuo server gRPC completo.

Inizia

  1. Crea un progetto gradle Java (grpc-booking-service), nel campo src/main, crea un "proto" .

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

  3. 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
    
  4. Esegui questo comando per creare la libreria e generare automaticamente il codice dalla Plug-in di build Protoc:

      ./gradlew build
    
  5. 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
  6. 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.

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