Java için gRPC Sunucu İskeleti

Tam gRPC sunucunuzu uygulamaya başlamanıza yardımcı olması için skeleton gRPC sunucumuzu indirebilirsiniz.

Başlayın

  1. src/main altında bir "proto" dizini oluşturarak bir Java gradle projesi (grpc-booking-service) oluşturun.

  2. Rezervasyon hizmeti tanımı ve durum denetimi protokolünü indirip src/main/proto altına yerleştirin. Bu dosyalar, Actions Center API ve Durum Denetimi için gRPC yöntemlerini ve mesajlarını tanımlar.

  3. build.gradle dosyasını güncelleyin, Gradle için bağımlılıkları ve protobuf eklentisini ekleyin. Protobuf gradle eklentisiyle ilgili giriş ve kılavuza buradan ulaşabilirsiniz.

        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. Kitaplığı derlemek ve protoc derleme eklentisinden otomatik olarak kod oluşturmak için aşağıdaki komutu çalıştırın:

      ./gradlew build
    
  5. Sunucuda TLS'yi etkinleştirmek için src/main/certificates/ altında aşağıdaki dosyalar gerekir:

    • PEM biçimindeki sunucu sertifikası zinciriniz server_cert_chain.pem
    • Sunucu sertifikası zinciri için özel anahtarınız server_private_key.pem ise PKCS#8 özel anahtarı olmalıdır
    • İstemcilerin kimliği doğrulanırken güvenilen kök sertifikalar trusted_client_roots.pem ise Mozilla gibi bir yetkiliden bu güvenilen kök kümesini almayı veya şu anda Google Internet Authority G2 tarafından önerilen kök gruplarını yükleyebilirsiniz. İkinci durumda, kök sertifika sürece zaman zaman
  6. Bu depodan örnek kodu alın:

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

    BookingService.java'yı src/main/java/ext/maps/booking/partner/v2 altına, BookingService.java dosyasını da src/main/java/ext/maps/booking/partner/v2 altına yerleştirin. Her iki dosyada da uygulamalarınızı tamamlamak için YAPILACAKLAR'daki adımları uygulayın.

  7. Aşağıdaki kodu ekleyerek yürütülebilir sunucu oluşturma işlemini belirtmek için gradle.build dosyasını güncelleyin:

    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. Sunucuyu derleyin:

    ./gradlew installDist
    
  9. Rezervasyon sunucusunu çalıştırın:

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

Son Dizin Yapısı

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

Diğer Referanslar