gRPC Server Skeleton für Java

Sie können unseren gRPC-Skeleton-Server herunterladen, um mit der Implementierung Ihres vollständigen gRPC-Servers zu beginnen.

Erste Schritte

  1. Erstellen Sie ein Java Gradle-Projekt (gRPC-booking-service) unter "src/main" und erstellen Sie ein "proto"-Verzeichnis.

  2. Laden Sie die Definition des Buchungsdienstes und das Protokoll für die Systemdiagnose herunter und speichern Sie sie unter „src/main/proto“. Diese Dateien definieren die gRPC-Methoden und -Nachrichten für die Actions Center API und die Systemdiagnose.

  3. Aktualisieren Sie die Datei build.gradle, fügen Sie Abhängigkeiten und das protobuf-Plug-in für Gradle hinzu. Eine Einführung und eine Anleitung für das protobuf-gradle-plugin finden Sie hier.

        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. Führen Sie den folgenden Befehl aus, um die Bibliothek zu erstellen und automatisch Code aus dem protoc-Build-Plug-in zu generieren:

      ./gradlew build
    
  5. Zum Aktivieren von TLS auf dem Server sind unter src/main/certificates/ die folgenden Dateien erforderlich:

    • server_cert_chain.pem: Ihre Serverzertifikatskette im PEM-Format
    • server_private_key.pem, Ihr privater Schlüssel für die Serverzertifikatskette, muss der private PKCS#8-Schlüssel sein
    • trusted_client_roots.pem, das beim Authentifizieren von Clients als vertrauenswürdig eingestuft wird. Sie können diese vertrauenswürdigen Root-Zertifikate von einer Zertifizierungsstelle wie Mozilla beziehen oder den aktuell von der Google Internet Authority G2 empfohlenen Satz von Root-Zertifikaten installieren. In letzterem Fall müssen Sie das Root-Zertifikat möglicherweise manuell aktualisieren,
  6. Rufen Sie den Beispielcode aus diesem Repository ab:

      git clone https://maps-booking.googlesource.com/java-maps-booking-grpc-server-skeleton
    

    Platzieren Sie BookingService.java unter src/main/java/ext/maps/booking/partner/v2 und Health.java unter src/main/java/gRPC/health/v1. Folgen Sie in beiden Dateien den TODOs, um die Implementierungen abzuschließen.

  7. Aktualisieren Sie die Datei gradle.build, um die Generierung der vom Server ausführbaren Datei anzugeben, indem Sie den folgenden Code hinzufügen:

    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. Kompilieren Sie den Server:

    ./gradlew installDist
    
  9. Führen Sie den Buchungsserver aus:

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

Endgültige Verzeichnisstruktur

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

Weitere Referenz