스켈레톤 gRPC 서버를 참조하세요.
시작하기
src/main 아래 자바 Gradle 프로젝트 (grpc-booking-service)를 만듭니다. 'proto'를 생성하여 디렉터리
예약 서비스를 다운로드합니다. 정의 및 상태 확인 프로토콜 src/main/proto 아래에 배치하세요. 이러한 파일은 gRPC 메서드와 Actions Center API와 상태 점검에 대한 메시지가 표시됩니다.
build.gradle 파일을 업데이트하고 종속 항목과 protobuf 플러그인을 추가합니다. 입니다. protobuf-gradle-plugin에 관한 소개 및 가이드는 여기에서 확인할 수 있습니다.
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
다음 명령어를 실행하여 라이브러리를 빌드하고 protoc 빌드 플러그인입니다.
./gradlew build
서버에서 TLS를 사용 설정하려면 src/main/certificates/에서 다음 파일이 필요합니다.
- server_cert_chain.pem: PEM 형식의 서버 인증서 체인
- server_private_key.pem: 서버 인증서용 비공개 키 체인이며 PKCS#8 비공개 키여야 합니다.
- trusted_client_roots.pem은 신뢰할 수 있는 루트 인증서 클라이언트를 인증할 때 이 인증서 모음을 가져오도록 선택할 수 있습니다. 신뢰할 수 있는 루트를 추출하여 Mozilla 또는 현재 Google 인터넷 기관에서 추천하는 루트의 수 G2. 후자의 경우 수동으로 루트 인증서를 업데이트해야 할 수 있습니다
이 저장소에서 샘플 코드를 가져옵니다.
git clone https://maps-booking.googlesource.com/java-maps-booking-grpc-server-skeleton
아래에 BookingService.java를 src/main/java/ext/maps/booking/partner/v2, 아래에 Health.java 배치 src/main/java/grpc/health/v1. 두 파일 모두에서 TODOs를 따라 다음을 수행합니다. 구현을 완료할 수 있습니다
gradle.build 파일을 업데이트하여 서버 실행 파일 생성을 지정합니다. 다음 코드를 추가합니다.
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 }
서버를 컴파일합니다.
./gradlew installDist
예약 서버를 실행합니다.
./build/install/grpc-booking-service/bin/booking-service
최종 디렉터리 구조
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
기타 참조
다른 제작 도구를 보려면 gRPC-java를 사용하고 예는 grpc-java/examples를 확인하세요.
git clone -b v1.9.0 https://github.com/grpc/grpc-java
gRPC Java 전송 보안 (TLS)를 참조하세요.
gRPC API V2입니다.