Skeleton Server gRPC untuk Java

Anda dapat mendownload server gRPC kerangka kami untuk membantu memulai penerapan server gRPC lengkap.

Mulai

  1. Buat project gradle java (grpc-booking-service), di bagian src/main, buat direktori 'proto'.

  2. Download definisi layanan pemesanan dan protokol pemeriksaan kesehatan, tempatkan di src/main/proto. File ini menentukan metode dan pesan gRPC untuk Actions Center API dan Health Check.

  3. Perbarui file build.gradle, tambahkan dependensi dan plugin protobuf untuk Gradle. Pengantar dan panduan untuk plugin protobuf-gradle dapat ditemukan di sini.

        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. Jalankan perintah berikut untuk mem-build library dan membuat kode secara otomatis dari plugin build protoc:

      ./gradlew build
    
  5. Untuk mengaktifkan TLS di server, di bagian src/main/certificates/, file berikut diperlukan:

    • server_cert_chain.pem rantai sertifikat server Anda dalam format PEM
    • server_private_key.pem kunci pribadi Anda untuk rantai sertifikat server, harus berupa kunci pribadi PKCS#8
    • trusted_client_roots.pem root certificate yang dipercaya saat mengautentikasi klien, Anda dapat memilih untuk mendapatkan kumpulan root terpercaya ini dari otoritas seperti Mozilla, atau menginstal kumpulan root yang saat ini direkomendasikan oleh Google Internet Authority G2. Dalam kasus yang terakhir, Anda mungkin harus memperbarui sertifikat root secara manual
  6. Ambil kode contoh dari repo ini:

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

    tempatkan BookingService.java di bagian src/main/java/ext/maps/booking/partner/v2, tempatkan Health.java di bagian src/main/java/grpc/health/v1. Di kedua file, ikuti TODO untuk menyelesaikan implementasi Anda.

  7. Perbarui file gradle.build untuk menentukan pembuatan file yang dapat dieksekusi server dengan menambahkan kode berikut:

    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. Kompilasi server:

    ./gradlew installDist
    
  9. Jalankan server pemesanan:

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

Struktur Direktori Akhir

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

Referensi lainnya