2016-05-22 4 views
3

Ich bin neu bei gRPC und habe dieses Problem: Ich habe eine .proto mit RPC-Service-Definition erstellt. Nach der Kompilierung bekomme ich generierte Quellen: Alle Nachrichten haben eine Klasse, die eine Schnittstelle implementiert. Ein Dienst selbst implementiert jedoch keine Schnittstelle - er wird einfach nicht generiert. Und das ist die Schnittstelle, die ich in meinem Server implementieren soll. Was mache ich falsch? Ich bin mir ziemlich sicher, dass die gRPC-Dokumentation nichts über dieses Problem aussagt.gRPC erzeugt keine Schnittstelle für einen Service, nur eine Serviceklasse

Mein .proto Service:

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; 
} 

Mein Plugin Definition in 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> 
+0

Ich habe keine vollständige Antwort, aber beachten Sie, dass die "Stubs" (Service-Schnittstellen) von einem separaten Protoc-Plugin aus dem anderen Code generiert werden. Es sieht so aus, als würden Sie das Grpc-Plugin in Ihrer Maven-Datei benennen, aber Sie möchten vielleicht untersuchen, ob es aus irgendeinem Grund nicht aufgerufen wird. –

Antwort

0

Haben Sie die Antwort von Plugin-Entwickler.

erste Sache: Ziele sein sollte:

kompilieren Kompilierung benutzerdefinierte

2d und Hauptsache: zwischen den beiden Zielen wiederverwendet wird und somit seinen Inhalt neu geschrieben. Durch das Entfernen dieses Parameters wurde das Problem behoben.


Verwandte Themen