examples: fix bound method not same as in service descriptor for HelloJsonServer

Fix the following issue.
HelloJsonServer fails to start:
````
Exception in thread "main" java.lang.IllegalStateException: Bound method for helloworld.Greeter/SayHello not same instance as method in service descriptor
    at io.grpc.ServerServiceDefinition$Builder.build(ServerServiceDefinition.java:156)
    at io.grpc.examples.advanced.HelloJsonServer.bindService(HelloJsonServer.java:131)
    at io.grpc.examples.advanced.HelloJsonServer.start(HelloJsonServer.java:70)
    at io.grpc.examples.advanced.HelloJsonServer.main(HelloJsonServer.java:105)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
````
This commit is contained in:
ZHANG Dapeng 2016-09-15 17:24:28 -07:00 committed by GitHub
parent 48b6c19072
commit 16c07ba434
1 changed files with 16 additions and 15 deletions

View File

@ -67,7 +67,7 @@ public class HelloJsonServer {
private void start() throws IOException { private void start() throws IOException {
server = ServerBuilder.forPort(port) server = ServerBuilder.forPort(port)
.addService(bindService(new GreeterImpl())) .addService(new GreeterImpl())
.build() .build()
.start(); .start();
logger.info("Server started, listening on " + port); logger.info("Server started, listening on " + port);
@ -114,20 +114,21 @@ public class HelloJsonServer {
responseObserver.onNext(reply); responseObserver.onNext(reply);
responseObserver.onCompleted(); responseObserver.onCompleted();
} }
}
private ServerServiceDefinition bindService(final GreeterImplBase serviceImpl) { @Override
return io.grpc.ServerServiceDefinition public ServerServiceDefinition bindService() {
.builder(GreeterGrpc.getServiceDescriptor()) return io.grpc.ServerServiceDefinition
.addMethod(HelloJsonClient.HelloJsonStub.METHOD_SAY_HELLO, .builder(GreeterGrpc.getServiceDescriptor().getName())
asyncUnaryCall( .addMethod(HelloJsonClient.HelloJsonStub.METHOD_SAY_HELLO,
new UnaryMethod<HelloRequest, HelloReply>() { asyncUnaryCall(
@Override new UnaryMethod<HelloRequest, HelloReply>() {
public void invoke( @Override
HelloRequest request, StreamObserver<HelloReply> responseObserver) { public void invoke(
serviceImpl.sayHello(request, responseObserver); HelloRequest request, StreamObserver<HelloReply> responseObserver) {
} sayHello(request, responseObserver);
})) }
.build(); }))
.build();
}
} }
} }