gRPC Server Skeleton für Java

Sie können unseren gRPC-Basisserver herunterladen. um Sie bei den ersten Schritten mit der Implementierung Ihres vollständigen gRPC-Servers zu unterstützen.

Jetzt starten

  1. Erstellen Sie ein Java Gradle-Projekt (grpc-booking-service) unter der Spalte src/main, ein „Proto“ zu erstellen -Verzeichnis.

  2. Buchungsservice herunterladen Definition und Systemdiagnosen Protokoll, unter "src/main/proto" platzieren. Diese Dateien definieren die gRPC-Methoden für die Actions Center API und die Systemdiagnose.

  3. Datei build.gradle aktualisieren, Abhängigkeiten und protobuf-Plug-in hinzufügen für Gradle. Die Einführung und 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 protoc Build-Plugin:

      ./gradlew build
    
  5. Um TLS auf dem Server zu aktivieren, verwenden Sie unter src/main/certificates/ das Feld folgende Dateien sind erforderlich:

    • server_cert_chain.pem für Ihre Serverzertifikatskette im PEM-Format
    • server_private_key.pem ist Ihr privater Schlüssel für das Serverzertifikat. muss der private PKCS#8-Schlüssel sein
    • trusted_client_roots.pem: die vertrauenswürdigen Root-Zertifikate bei der Authentifizierung von Clients, können Sie vertrauenswürdigen Wurzeln einer Behörde wie Mozilla oder das set der derzeit von der Google Internet Authority empfohlenen Wurzeln G2 Im letzteren Fall haben Sie möglicherweise um das Root-Zertifikat zeitweise manuell zu 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 die Datei BookingService.java unter src/main/java/ext/maps/booking/partner/v2, platzieren Sie Health.java unter src/main/java/grpc/health/v1. Folgen Sie in beiden Dateien den TODOs, um Implementierung abgeschlossen werden.

  7. Aktualisieren Sie die Datei „gradle.build“, um die Generierung der ausführbaren Datei des Servers anzugeben indem Sie 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