您可以下载我们的 gRPC 框架服务器 ,以帮助您开始实现完整的 gRPC 服务器。
开始使用
在 src/main 下创建一个 Java 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.在这两个文件中,都按照 TODO 的说明 完成实施。
更新 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