【发布时间】:2016-09-19 07:55:42
【问题描述】:
我是 gRPC 的新手,遇到了这个问题:我创建了一个带有 rpc 服务定义的 .proto。编译后我得到生成的源:所有消息都有一个实现接口的类。然而,服务本身并没有实现任何接口——它根本就没有生成。这就是我应该在我的服务器中实现的接口。我究竟做错了什么?我很确定 gRPC 文档没有说明这个问题。
我的 .proto 服务:
syntax = "proto3";
option java_multiple_files = true;
option java_package = "com.blah.my.rpc.api";
option java_outer_classname = "MyServiceProto";
option objc_class_prefix = "Pb";
package com.blah.my.rpc.api;
service MyService
{
rpc connect(PbEmptyMessage) returns (PbParameterGroup){}
rpc getParams(PbGenList) returns (PbParameterGroup){}
}
message PbEmptyMessage
{
}
message PbGenId
{
string paramName = 1;
string systemName = 2;
string sName = 3;
string sId = 4;
}
message PbParameterGroup
{
bytes sParameters = 2;
fixed64 time = 3;
}
我在 maven 中的插件定义:
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.4.0.Final</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.5.0</version>
<configuration>
<protocArtifact>com.google.protobuf:protoc:3.0.0-beta-2:exe:${os.detected.classifier}
</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:0.14.0:exe:${os.detected.classifier}</pluginArtifact>
<protoSourceRoot>${basedir}/src/main/resources</protoSourceRoot>
<outputDirectory>${basedir}/target/generated-sources</outputDirectory>
</configuration>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
【问题讨论】:
-
我没有完整的答案,但请注意,“存根”(服务接口)是由与其他代码分开的 protoc 插件生成的。看起来您在 maven 文件中命名了 grpc 插件,但您可能想调查它是否由于某种原因没有被调用。
标签: java grpc protocol-buffers