You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by li...@apache.org on 2019/11/28 07:47:48 UTC

[dubbo-samples] 02/02: add reactive gRPC samples

This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-samples.git

commit d3dd0a331fdba872c2b1fa2baaa8c5b734fcc1ee
Author: ken.lj <ke...@gmail.com>
AuthorDate: Thu Nov 28 15:47:25 2019 +0800

    add reactive gRPC samples
---
 .../grpc/examples/helloworld/DubboGreeterGrpc.java | 188 +++++++++
 .../io/grpc/examples/helloworld/GreeterGrpc.java   | 307 +++++++++++++++
 .../io/grpc/examples/helloworld/HelloReply.java}   | 295 +++++++-------
 .../examples/helloworld/HelloReplyOrBuilder.java   |  19 +
 .../io/grpc/examples/helloworld/HelloRequest.java} | 295 +++++++-------
 .../examples/helloworld/HelloRequestOrBuilder.java |  19 +
 .../grpc/examples/helloworld/HelloWorldProto.java  |  70 ++++
 .../DubboStreamingGreeterGrpc.java                 | 136 +++++++
 .../examples/manualflowcontrol/HelloReply.java}    | 295 +++++++-------
 .../manualflowcontrol/HelloReplyOrBuilder.java     |  19 +
 .../examples/manualflowcontrol/HelloRequest.java}  | 295 +++++++-------
 .../manualflowcontrol/HelloRequestOrBuilder.java   |  19 +
 .../manualflowcontrol/HelloStreamingProto.java     |  72 ++++
 .../manualflowcontrol/StreamingGreeterGrpc.java    | 285 ++++++++++++++
 .../examples/routeguide/DubboRouteGuideGrpc.java   |  60 ++-
 .../java/io/grpc/examples/routeguide/Feature.java  |   0
 .../grpc/examples/routeguide/FeatureDatabase.java  |   0
 .../routeguide/FeatureDatabaseOrBuilder.java       |   0
 .../grpc/examples/routeguide/FeatureOrBuilder.java |   0
 .../java/io/grpc/examples/routeguide/Point.java    |   0
 .../grpc/examples/routeguide/PointOrBuilder.java   |   0
 .../io/grpc/examples/routeguide/Rectangle.java     |   0
 .../examples/routeguide/RectangleOrBuilder.java    |   0
 .../grpc/examples/routeguide/RouteGuideGrpc.java   |   0
 .../grpc/examples/routeguide/RouteGuideProto.java  |   0
 .../io/grpc/examples/routeguide/RouteNote.java     |   0
 .../examples/routeguide/RouteNoteOrBuilder.java    |   0
 .../io/grpc/examples/routeguide/RouteSummary.java  |   0
 .../examples/routeguide/RouteSummaryOrBuilder.java |   0
 .../{ => dubbo-samples-original}/pom.xml           |  26 +-
 .../apache/dubbo/samples/basic/BasicConsumer.java  |  36 +-
 .../apache/dubbo/samples/basic/BasicProvider.java  |   0
 .../dubbo/samples/basic/EmbeddedZooKeeper.java     |   0
 .../basic/comtomize/MyClientStreamInterceptor.java |   0
 .../basic/comtomize/MyGrpcConfigurator.java        |   0
 .../basic/comtomize/MyServerStreamInterceptor.java |   0
 .../basic/impl/helloworld/GrpcGreeterImpl.java     |   4 +-
 .../basic/impl/routeguide/RouteGuideImpl.java      |   4 +-
 .../basic/impl/routeguide/RouteGuideUtil.java      |   0
 .../src/main/proto/hello_streaming.proto           |   0
 .../src/main/proto/helloworld.proto                |   0
 .../src/main/proto/route_guide.proto               |   0
 ...pc.protocol.grpc.interceptors.ClientInterceptor |   0
 ...rpc.protocol.grpc.interceptors.GrpcConfigurator |   0
 ...pc.protocol.grpc.interceptors.ServerInterceptor |   0
 .../src/main/resources/log4j.properties            |   0
 .../basic/impl/routeguide/route_guide_db.json      |   0
 .../main/resources/spring/dubbo-demo-consumer.xml  |   4 +-
 .../main/resources/spring/dubbo-demo-provider.xml  |   4 +-
 .../io/grpc/examples/helloworld/GreeterGrpc.java   | 307 +++++++++++++++
 .../io/grpc/examples/helloworld/HelloReply.java}   | 295 +++++++-------
 .../examples/helloworld/HelloReplyOrBuilder.java   |  19 +
 .../io/grpc/examples/helloworld/HelloRequest.java} | 295 +++++++-------
 .../examples/helloworld/HelloRequestOrBuilder.java |  19 +
 .../grpc/examples/helloworld/HelloWorldProto.java  |  70 ++++
 .../helloworld/ReactorDubboGreeterGrpc.java        | 176 +++++++++
 .../examples/manualflowcontrol/HelloReply.java}    | 295 +++++++-------
 .../manualflowcontrol/HelloReplyOrBuilder.java     |  19 +
 .../examples/manualflowcontrol/HelloRequest.java}  | 295 +++++++-------
 .../manualflowcontrol/HelloRequestOrBuilder.java   |  19 +
 .../manualflowcontrol/HelloStreamingProto.java     |  72 ++++
 .../ReactorDubboStreamingGreeterGrpc.java          | 150 ++++++++
 .../manualflowcontrol/StreamingGreeterGrpc.java    | 285 ++++++++++++++
 .../java/io/grpc/examples/routeguide/Feature.java  |   0
 .../grpc/examples/routeguide/FeatureDatabase.java  |   0
 .../routeguide/FeatureDatabaseOrBuilder.java       |   0
 .../grpc/examples/routeguide/FeatureOrBuilder.java |   0
 .../java/io/grpc/examples/routeguide/Point.java    |   0
 .../grpc/examples/routeguide/PointOrBuilder.java   |   0
 .../routeguide/ReactorDubboRouteGuideGrpc.java     | 397 +++++++++++++++++++
 .../io/grpc/examples/routeguide/Rectangle.java     |   0
 .../examples/routeguide/RectangleOrBuilder.java    |   0
 .../grpc/examples/routeguide/RouteGuideGrpc.java   |   0
 .../grpc/examples/routeguide/RouteGuideProto.java  |   0
 .../io/grpc/examples/routeguide/RouteNote.java     |   0
 .../examples/routeguide/RouteNoteOrBuilder.java    |   0
 .../io/grpc/examples/routeguide/RouteSummary.java  |   0
 .../examples/routeguide/RouteSummaryOrBuilder.java |   0
 .../{ => dubbo-samples-reactor}/pom.xml            |  33 +-
 .../apache/dubbo/samples/basic/BasicConsumer.java} |  23 +-
 .../apache/dubbo/samples/basic/BasicProvider.java  |   0
 .../dubbo/samples/basic/EmbeddedZooKeeper.java     |   0
 .../basic/impl/helloworld/GrpcGreeterImpl.java     |  21 +-
 .../src/main/proto/hello_streaming.proto           |   0
 .../src/main/proto/helloworld.proto                |   0
 .../src/main/proto/route_guide.proto               |   0
 .../src/main/resources/log4j.properties            |   0
 .../main/resources/spring/dubbo-demo-consumer.xml  |   4 +-
 .../main/resources/spring/dubbo-demo-provider.xml  |   5 +-
 .../io/grpc/examples/helloworld/GreeterGrpc.java   | 307 +++++++++++++++
 .../io/grpc/examples/helloworld/HelloReply.java}   | 295 +++++++-------
 .../examples/helloworld/HelloReplyOrBuilder.java   |  19 +
 .../io/grpc/examples/helloworld/HelloRequest.java} | 295 +++++++-------
 .../examples/helloworld/HelloRequestOrBuilder.java |  19 +
 .../grpc/examples/helloworld/HelloWorldProto.java  |  70 ++++
 .../examples/helloworld/RxDubboGreeterGrpc.java    | 183 +++++++++
 .../examples/manualflowcontrol/HelloReply.java}    | 295 +++++++-------
 .../manualflowcontrol/HelloReplyOrBuilder.java     |  19 +
 .../examples/manualflowcontrol/HelloRequest.java}  | 295 +++++++-------
 .../manualflowcontrol/HelloRequestOrBuilder.java   |  19 +
 .../manualflowcontrol/HelloStreamingProto.java     |  72 ++++
 .../RxDubboStreamingGreeterGrpc.java               | 146 +++++++
 .../manualflowcontrol/StreamingGreeterGrpc.java    | 285 ++++++++++++++
 .../java/io/grpc/examples/routeguide/Feature.java  |   0
 .../grpc/examples/routeguide/FeatureDatabase.java  |   0
 .../routeguide/FeatureDatabaseOrBuilder.java       |   0
 .../grpc/examples/routeguide/FeatureOrBuilder.java |   0
 .../java/io/grpc/examples/routeguide/Point.java    |   0
 .../grpc/examples/routeguide/PointOrBuilder.java   |   0
 .../io/grpc/examples/routeguide/Rectangle.java     |   0
 .../examples/routeguide/RectangleOrBuilder.java    |   0
 .../grpc/examples/routeguide/RouteGuideGrpc.java   |   0
 .../grpc/examples/routeguide/RouteGuideProto.java  |   0
 .../io/grpc/examples/routeguide/RouteNote.java     |   0
 .../examples/routeguide/RouteNoteOrBuilder.java    |   0
 .../io/grpc/examples/routeguide/RouteSummary.java  |   0
 .../examples/routeguide/RouteSummaryOrBuilder.java |   0
 .../examples/routeguide/RxDubboRouteGuideGrpc.java | 427 +++++++++++++++++++++
 .../{ => dubbo-samples-rxjava}/pom.xml             |  33 +-
 .../apache/dubbo/samples/basic/BasicConsumer.java} |  23 +-
 .../apache/dubbo/samples/basic/BasicProvider.java  |   0
 .../dubbo/samples/basic/EmbeddedZooKeeper.java     |   0
 .../basic/comtomize/MyClientStreamInterceptor.java |   0
 .../basic/comtomize/MyGrpcConfigurator.java        |   0
 .../basic/comtomize/MyServerStreamInterceptor.java |   0
 .../basic/impl/helloworld/GrpcGreeterImpl.java     |  21 +-
 .../src/main/proto/hello_streaming.proto           |   0
 .../src/main/proto/helloworld.proto                |   0
 .../src/main/proto/route_guide.proto               |   0
 .../src/main/resources/log4j.properties            |   0
 .../main/resources/spring/dubbo-demo-consumer.xml  |   4 +-
 .../main/resources/spring/dubbo-demo-provider.xml  |   5 +-
 java/dubbo-samples-grpc/pom.xml                    | 279 +-------------
 java/dubbo-samples-protobuf/pom.xml                |  30 +-
 .../org/apache/dubbo/demo/DemoServiceDubbo.java    |  46 +++
 .../org/apache/dubbo/demo/DemoServiceProto.java    |  70 ++++
 .../java/org/apache/dubbo/demo/HelloReply.java}    | 295 +++++++-------
 .../org/apache/dubbo/demo/HelloReplyOrBuilder.java |  19 +
 .../java/org/apache/dubbo/demo/HelloRequest.java}  | 295 +++++++-------
 .../apache/dubbo/demo/HelloRequestOrBuilder.java   |  19 +
 .../org/apache/dubbo/demo/DemoServiceDubbo.java    |  46 +++
 .../org/apache/dubbo/demo/DemoServiceProto.java    |  70 ++++
 .../java/org/apache/dubbo/demo/HelloReply.java}    | 295 +++++++-------
 .../org/apache/dubbo/demo/HelloReplyOrBuilder.java |  19 +
 .../java/org/apache/dubbo/demo/HelloRequest.java}  | 295 +++++++-------
 .../apache/dubbo/demo/HelloRequestOrBuilder.java   |  19 +
 146 files changed, 7184 insertions(+), 2696 deletions(-)

diff --git a/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/DubboGreeterGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/DubboGreeterGrpc.java
new file mode 100644
index 0000000..acfd5b9
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/DubboGreeterGrpc.java
@@ -0,0 +1,188 @@
+package io.grpc.examples.helloworld;
+
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.config.ReferenceConfigBase;
+
+import java.util.concurrent.TimeUnit;
+
+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;
+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;
+
+import static io.grpc.examples.helloworld.GreeterGrpc.getServiceDescriptor;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
+
+@javax.annotation.Generated(
+value = "by DubboGrpc generator",
+comments = "Source: helloworld.proto")
+public final class DubboGreeterGrpc {
+    private DubboGreeterGrpc() {}
+
+    public static class DubboGreeterStub implements IGreeter {
+
+        protected URL url;
+        protected ReferenceConfigBase<?> referenceConfig;
+
+        protected GreeterGrpc.GreeterBlockingStub blockingStub;
+        protected GreeterGrpc.GreeterFutureStub futureStub;
+        protected GreeterGrpc.GreeterStub stub;
+
+        public DubboGreeterStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+            this.url = url;
+            this.referenceConfig = referenceConfig;
+
+            blockingStub = GreeterGrpc.newBlockingStub(channel).build(channel, callOptions);
+            futureStub = GreeterGrpc.newFutureStub(channel).build(channel, callOptions);
+            stub = GreeterGrpc.newStub(channel).build(channel, callOptions);
+        }
+
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+        public io.grpc.examples.helloworld.HelloReply sayHello(io.grpc.examples.helloworld.HelloRequest request) {
+            return blockingStub
+                .withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS)
+                .sayHello(request);
+        }
+
+        public com.google.common.util.concurrent.ListenableFuture<io.grpc.examples.helloworld.HelloReply> sayHelloAsync(io.grpc.examples.helloworld.HelloRequest request) {
+            return futureStub
+                .withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS)
+                .sayHello(request);
+        }
+
+        public void sayHello(io.grpc.examples.helloworld.HelloRequest request, io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply> responseObserver){
+            stub
+                .withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS)
+                .sayHello(request, responseObserver);
+        }
+
+    }
+
+    public static DubboGreeterStub getDubboStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+      return new DubboGreeterStub(channel, callOptions, url, referenceConfig);
+    }
+
+    public interface IGreeter {
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+        default public io.grpc.examples.helloworld.HelloReply sayHello(io.grpc.examples.helloworld.HelloRequest request) {
+           throw new UnsupportedOperationException("No need to override this method, extend XxxImplBase and override all methods it allows.");
+        }
+
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+        default public com.google.common.util.concurrent.ListenableFuture<io.grpc.examples.helloworld.HelloReply> sayHelloAsync(io.grpc.examples.helloworld.HelloRequest request) {
+           throw new UnsupportedOperationException("No need to override this method, extend XxxImplBase and override all methods it allows.");
+        }
+
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+        public void sayHello(io.grpc.examples.helloworld.HelloRequest request, io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply> responseObserver);
+
+    }
+
+    /**
+     * <pre>
+     *  The greeting service definition.
+     * </pre>
+     */
+    public static abstract class GreeterImplBase implements io.grpc.BindableService, IGreeter {
+
+        private IGreeter proxiedImpl;
+
+        public final void setProxiedImpl(IGreeter proxiedImpl) {
+            this.proxiedImpl = proxiedImpl;
+        }
+
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+        @java.lang.Override
+        public final io.grpc.examples.helloworld.HelloReply sayHello(io.grpc.examples.helloworld.HelloRequest request) {
+           throw new UnsupportedOperationException("No need to override this method, extend XxxImplBase and override all methods it allows.");
+        }
+
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+        @java.lang.Override
+        public final com.google.common.util.concurrent.ListenableFuture<io.grpc.examples.helloworld.HelloReply> sayHelloAsync(io.grpc.examples.helloworld.HelloRequest request) {
+           throw new UnsupportedOperationException("No need to override this method, extend XxxImplBase and override all methods it allows.");
+        }
+
+        public void sayHello(io.grpc.examples.helloworld.HelloRequest request,
+            io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply> responseObserver) {
+            asyncUnimplementedUnaryCall(io.grpc.examples.helloworld.GreeterGrpc.getSayHelloMethod(), responseObserver);
+        }
+
+        @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+                      .addMethod(
+                        io.grpc.examples.helloworld.GreeterGrpc.getSayHelloMethod(),
+                        asyncUnaryCall(
+                          new MethodHandlers<
+                             io.grpc.examples.helloworld.HelloRequest,
+                             io.grpc.examples.helloworld.HelloReply>(
+                              proxiedImpl, METHODID_SAY_HELLO)))
+                    .build();
+        }
+    }
+    private static final int METHODID_SAY_HELLO = 0;
+
+    private static final class MethodHandlers<Req, Resp> implements
+            io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+            io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+            io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+            io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+        private final IGreeter serviceImpl;
+        private final int methodId;
+
+        MethodHandlers(IGreeter serviceImpl, int methodId) {
+            this.serviceImpl = serviceImpl;
+            this.methodId = methodId;
+        }
+
+        @java.lang.Override
+        @java.lang.SuppressWarnings("unchecked")
+        public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+            switch (methodId) {
+                case METHODID_SAY_HELLO:
+                    serviceImpl.sayHello((io.grpc.examples.helloworld.HelloRequest) request,
+                        (io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply>) responseObserver);
+                    break;
+                default:
+                    throw new java.lang.AssertionError();
+            }
+        }
+
+        @java.lang.Override
+        @java.lang.SuppressWarnings("unchecked")
+        public io.grpc.stub.StreamObserver<Req> invoke(io.grpc.stub.StreamObserver<Resp> responseObserver) {
+            switch (methodId) {
+                default:
+                    throw new java.lang.AssertionError();
+            }
+        }
+    }
+
+}
diff --git a/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/GreeterGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/GreeterGrpc.java
new file mode 100644
index 0000000..214ac7a
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/GreeterGrpc.java
@@ -0,0 +1,307 @@
+package io.grpc.examples.helloworld;
+
+import static io.grpc.MethodDescriptor.generateFullMethodName;
+import static io.grpc.stub.ClientCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncUnaryCall;
+import static io.grpc.stub.ClientCalls.blockingServerStreamingCall;
+import static io.grpc.stub.ClientCalls.blockingUnaryCall;
+import static io.grpc.stub.ClientCalls.futureUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
+
+/**
+ * <pre>
+ * The greeting service definition.
+ * </pre>
+ */
+@javax.annotation.Generated(
+    value = "by gRPC proto compiler (version 1.19.0)",
+    comments = "Source: helloworld.proto")
+public final class GreeterGrpc {
+
+  private GreeterGrpc() {}
+
+  public static final String SERVICE_NAME = "helloworld.Greeter";
+
+  // Static method descriptors that strictly reflect the proto.
+  private static volatile io.grpc.MethodDescriptor<io.grpc.examples.helloworld.HelloRequest,
+      io.grpc.examples.helloworld.HelloReply> getSayHelloMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "SayHello",
+      requestType = io.grpc.examples.helloworld.HelloRequest.class,
+      responseType = io.grpc.examples.helloworld.HelloReply.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+  public static io.grpc.MethodDescriptor<io.grpc.examples.helloworld.HelloRequest,
+      io.grpc.examples.helloworld.HelloReply> getSayHelloMethod() {
+    io.grpc.MethodDescriptor<io.grpc.examples.helloworld.HelloRequest, io.grpc.examples.helloworld.HelloReply> getSayHelloMethod;
+    if ((getSayHelloMethod = GreeterGrpc.getSayHelloMethod) == null) {
+      synchronized (GreeterGrpc.class) {
+        if ((getSayHelloMethod = GreeterGrpc.getSayHelloMethod) == null) {
+          GreeterGrpc.getSayHelloMethod = getSayHelloMethod = 
+              io.grpc.MethodDescriptor.<io.grpc.examples.helloworld.HelloRequest, io.grpc.examples.helloworld.HelloReply>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+              .setFullMethodName(generateFullMethodName(
+                  "helloworld.Greeter", "SayHello"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  io.grpc.examples.helloworld.HelloRequest.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  io.grpc.examples.helloworld.HelloReply.getDefaultInstance()))
+                  .setSchemaDescriptor(new GreeterMethodDescriptorSupplier("SayHello"))
+                  .build();
+          }
+        }
+     }
+     return getSayHelloMethod;
+  }
+
+  /**
+   * Creates a new async stub that supports all call types for the service
+   */
+  public static GreeterStub newStub(io.grpc.Channel channel) {
+    return new GreeterStub(channel);
+  }
+
+  /**
+   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
+   */
+  public static GreeterBlockingStub newBlockingStub(
+      io.grpc.Channel channel) {
+    return new GreeterBlockingStub(channel);
+  }
+
+  /**
+   * Creates a new ListenableFuture-style stub that supports unary calls on the service
+   */
+  public static GreeterFutureStub newFutureStub(
+      io.grpc.Channel channel) {
+    return new GreeterFutureStub(channel);
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static abstract class GreeterImplBase implements io.grpc.BindableService {
+
+    /**
+     * <pre>
+     * Sends a greeting
+     * </pre>
+     */
+    public void sayHello(io.grpc.examples.helloworld.HelloRequest request,
+        io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply> responseObserver) {
+      asyncUnimplementedUnaryCall(getSayHelloMethod(), responseObserver);
+    }
+
+    @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
+      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+          .addMethod(
+            getSayHelloMethod(),
+            asyncUnaryCall(
+              new MethodHandlers<
+                io.grpc.examples.helloworld.HelloRequest,
+                io.grpc.examples.helloworld.HelloReply>(
+                  this, METHODID_SAY_HELLO)))
+          .build();
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class GreeterStub extends io.grpc.stub.AbstractStub<GreeterStub> {
+    private GreeterStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private GreeterStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected GreeterStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new GreeterStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Sends a greeting
+     * </pre>
+     */
+    public void sayHello(io.grpc.examples.helloworld.HelloRequest request,
+        io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply> responseObserver) {
+      asyncUnaryCall(
+          getChannel().newCall(getSayHelloMethod(), getCallOptions()), request, responseObserver);
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class GreeterBlockingStub extends io.grpc.stub.AbstractStub<GreeterBlockingStub> {
+    private GreeterBlockingStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private GreeterBlockingStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected GreeterBlockingStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new GreeterBlockingStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Sends a greeting
+     * </pre>
+     */
+    public io.grpc.examples.helloworld.HelloReply sayHello(io.grpc.examples.helloworld.HelloRequest request) {
+      return blockingUnaryCall(
+          getChannel(), getSayHelloMethod(), getCallOptions(), request);
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class GreeterFutureStub extends io.grpc.stub.AbstractStub<GreeterFutureStub> {
+    private GreeterFutureStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private GreeterFutureStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected GreeterFutureStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new GreeterFutureStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Sends a greeting
+     * </pre>
+     */
+    public com.google.common.util.concurrent.ListenableFuture<io.grpc.examples.helloworld.HelloReply> sayHello(
+        io.grpc.examples.helloworld.HelloRequest request) {
+      return futureUnaryCall(
+          getChannel().newCall(getSayHelloMethod(), getCallOptions()), request);
+    }
+  }
+
+  private static final int METHODID_SAY_HELLO = 0;
+
+  private static final class MethodHandlers<Req, Resp> implements
+      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+    private final GreeterImplBase serviceImpl;
+    private final int methodId;
+
+    MethodHandlers(GreeterImplBase serviceImpl, int methodId) {
+      this.serviceImpl = serviceImpl;
+      this.methodId = methodId;
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        case METHODID_SAY_HELLO:
+          serviceImpl.sayHello((io.grpc.examples.helloworld.HelloRequest) request,
+              (io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply>) responseObserver);
+          break;
+        default:
+          throw new AssertionError();
+      }
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public io.grpc.stub.StreamObserver<Req> invoke(
+        io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        default:
+          throw new AssertionError();
+      }
+    }
+  }
+
+  private static abstract class GreeterBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+    GreeterBaseDescriptorSupplier() {}
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+      return io.grpc.examples.helloworld.HelloWorldProto.getDescriptor();
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+      return getFileDescriptor().findServiceByName("Greeter");
+    }
+  }
+
+  private static final class GreeterFileDescriptorSupplier
+      extends GreeterBaseDescriptorSupplier {
+    GreeterFileDescriptorSupplier() {}
+  }
+
+  private static final class GreeterMethodDescriptorSupplier
+      extends GreeterBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
+    private final String methodName;
+
+    GreeterMethodDescriptorSupplier(String methodName) {
+      this.methodName = methodName;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+      return getServiceDescriptor().findMethodByName(methodName);
+    }
+  }
+
+  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+
+  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+    io.grpc.ServiceDescriptor result = serviceDescriptor;
+    if (result == null) {
+      synchronized (GreeterGrpc.class) {
+        result = serviceDescriptor;
+        if (result == null) {
+          serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
+              .setSchemaDescriptor(new GreeterFileDescriptorSupplier())
+              .addMethod(getSayHelloMethod())
+              .build();
+        }
+      }
+    }
+    return result;
+  }
+}
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReply.java
similarity index 58%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReply.java
index 3a96ea0..12f90f2 100644
--- a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReply.java
@@ -1,28 +1,26 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: route_guide.proto
+// source: helloworld.proto
 
-package io.grpc.examples.routeguide;
+package io.grpc.examples.helloworld;
 
 /**
  * <pre>
- * Points are represented as latitude-longitude pairs in the E7 representation
- * (degrees multiplied by 10**7 and rounded to the nearest integer).
- * Latitudes should be in the range +/- 90 degrees and longitude should be in
- * the range +/- 180 degrees (inclusive).
+ * The response message containing the greetings
  * </pre>
  *
- * Protobuf type {@code routeguide.Point}
+ * Protobuf type {@code helloworld.HelloReply}
  */
-public  final class Point extends
+public  final class HelloReply extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:routeguide.Point)
-    PointOrBuilder {
+    // @@protoc_insertion_point(message_implements:helloworld.HelloReply)
+    HelloReplyOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use Point.newBuilder() to construct.
-  private Point(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloReply.newBuilder() to construct.
+  private HelloReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private Point() {
+  private HelloReply() {
+    message_ = "";
   }
 
   @java.lang.Override
@@ -30,7 +28,7 @@ private static final long serialVersionUID = 0L;
   getUnknownFields() {
     return this.unknownFields;
   }
-  private Point(
+  private HelloReply(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -49,14 +47,10 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 8: {
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
 
-            latitude_ = input.readInt32();
-            break;
-          }
-          case 16: {
-
-            longitude_ = input.readInt32();
+            message_ = s;
             break;
           }
           default: {
@@ -80,33 +74,49 @@ private static final long serialVersionUID = 0L;
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+    return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+    return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+            io.grpc.examples.helloworld.HelloReply.class, io.grpc.examples.helloworld.HelloReply.Builder.class);
   }
 
-  public static final int LATITUDE_FIELD_NUMBER = 1;
-  private int latitude_;
+  public static final int MESSAGE_FIELD_NUMBER = 1;
+  private volatile java.lang.Object message_;
   /**
-   * <code>int32 latitude = 1;</code>
+   * <code>string message = 1;</code>
    */
-  public int getLatitude() {
-    return latitude_;
+  public java.lang.String getMessage() {
+    java.lang.Object ref = message_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      message_ = s;
+      return s;
+    }
   }
-
-  public static final int LONGITUDE_FIELD_NUMBER = 2;
-  private int longitude_;
   /**
-   * <code>int32 longitude = 2;</code>
+   * <code>string message = 1;</code>
    */
-  public int getLongitude() {
-    return longitude_;
+  public com.google.protobuf.ByteString
+      getMessageBytes() {
+    java.lang.Object ref = message_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      message_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
   }
 
   private byte memoizedIsInitialized = -1;
@@ -123,11 +133,8 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (latitude_ != 0) {
-      output.writeInt32(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      output.writeInt32(2, longitude_);
+    if (!getMessageBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, message_);
     }
     unknownFields.writeTo(output);
   }
@@ -138,13 +145,8 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (latitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(2, longitude_);
+    if (!getMessageBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, message_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -156,15 +158,13 @@ private static final long serialVersionUID = 0L;
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof io.grpc.examples.routeguide.Point)) {
+    if (!(obj instanceof io.grpc.examples.helloworld.HelloReply)) {
       return super.equals(obj);
     }
-    io.grpc.examples.routeguide.Point other = (io.grpc.examples.routeguide.Point) obj;
+    io.grpc.examples.helloworld.HelloReply other = (io.grpc.examples.helloworld.HelloReply) obj;
 
-    if (getLatitude()
-        != other.getLatitude()) return false;
-    if (getLongitude()
-        != other.getLongitude()) return false;
+    if (!getMessage()
+        .equals(other.getMessage())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -176,78 +176,76 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLatitude();
-    hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLongitude();
+    hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
+    hash = (53 * hash) + getMessage().hashCode();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(byte[] data)
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(java.io.InputStream input)
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(java.io.InputStream input)
+  public static io.grpc.examples.helloworld.HelloReply parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseDelimitedFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -260,7 +258,7 @@ private static final long serialVersionUID = 0L;
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(io.grpc.examples.routeguide.Point prototype) {
+  public static Builder newBuilder(io.grpc.examples.helloworld.HelloReply prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -277,32 +275,29 @@ private static final long serialVersionUID = 0L;
   }
   /**
    * <pre>
-   * Points are represented as latitude-longitude pairs in the E7 representation
-   * (degrees multiplied by 10**7 and rounded to the nearest integer).
-   * Latitudes should be in the range +/- 90 degrees and longitude should be in
-   * the range +/- 180 degrees (inclusive).
+   * The response message containing the greetings
    * </pre>
    *
-   * Protobuf type {@code routeguide.Point}
+   * Protobuf type {@code helloworld.HelloReply}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:routeguide.Point)
-      io.grpc.examples.routeguide.PointOrBuilder {
+      // @@protoc_insertion_point(builder_implements:helloworld.HelloReply)
+      io.grpc.examples.helloworld.HelloReplyOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+              io.grpc.examples.helloworld.HelloReply.class, io.grpc.examples.helloworld.HelloReply.Builder.class);
     }
 
-    // Construct using io.grpc.examples.routeguide.Point.newBuilder()
+    // Construct using io.grpc.examples.helloworld.HelloReply.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -320,9 +315,7 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      latitude_ = 0;
-
-      longitude_ = 0;
+      message_ = "";
 
       return this;
     }
@@ -330,17 +323,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_descriptor;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
-      return io.grpc.examples.routeguide.Point.getDefaultInstance();
+    public io.grpc.examples.helloworld.HelloReply getDefaultInstanceForType() {
+      return io.grpc.examples.helloworld.HelloReply.getDefaultInstance();
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point build() {
-      io.grpc.examples.routeguide.Point result = buildPartial();
+    public io.grpc.examples.helloworld.HelloReply build() {
+      io.grpc.examples.helloworld.HelloReply result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -348,10 +341,9 @@ private static final long serialVersionUID = 0L;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point buildPartial() {
-      io.grpc.examples.routeguide.Point result = new io.grpc.examples.routeguide.Point(this);
-      result.latitude_ = latitude_;
-      result.longitude_ = longitude_;
+    public io.grpc.examples.helloworld.HelloReply buildPartial() {
+      io.grpc.examples.helloworld.HelloReply result = new io.grpc.examples.helloworld.HelloReply(this);
+      result.message_ = message_;
       onBuilt();
       return result;
     }
@@ -390,21 +382,19 @@ private static final long serialVersionUID = 0L;
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof io.grpc.examples.routeguide.Point) {
-        return mergeFrom((io.grpc.examples.routeguide.Point)other);
+      if (other instanceof io.grpc.examples.helloworld.HelloReply) {
+        return mergeFrom((io.grpc.examples.helloworld.HelloReply)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(io.grpc.examples.routeguide.Point other) {
-      if (other == io.grpc.examples.routeguide.Point.getDefaultInstance()) return this;
-      if (other.getLatitude() != 0) {
-        setLatitude(other.getLatitude());
-      }
-      if (other.getLongitude() != 0) {
-        setLongitude(other.getLongitude());
+    public Builder mergeFrom(io.grpc.examples.helloworld.HelloReply other) {
+      if (other == io.grpc.examples.helloworld.HelloReply.getDefaultInstance()) return this;
+      if (!other.getMessage().isEmpty()) {
+        message_ = other.message_;
+        onChanged();
       }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
@@ -421,11 +411,11 @@ private static final long serialVersionUID = 0L;
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      io.grpc.examples.routeguide.Point parsedMessage = null;
+      io.grpc.examples.helloworld.HelloReply parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (io.grpc.examples.routeguide.Point) e.getUnfinishedMessage();
+        parsedMessage = (io.grpc.examples.helloworld.HelloReply) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -435,54 +425,71 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private int latitude_ ;
+    private java.lang.Object message_ = "";
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public int getLatitude() {
-      return latitude_;
+    public java.lang.String getMessage() {
+      java.lang.Object ref = message_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        message_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder setLatitude(int value) {
-      
-      latitude_ = value;
-      onChanged();
-      return this;
+    public com.google.protobuf.ByteString
+        getMessageBytes() {
+      java.lang.Object ref = message_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        message_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder clearLatitude() {
-      
-      latitude_ = 0;
+    public Builder setMessage(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      message_ = value;
       onChanged();
       return this;
     }
-
-    private int longitude_ ;
-    /**
-     * <code>int32 longitude = 2;</code>
-     */
-    public int getLongitude() {
-      return longitude_;
-    }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder setLongitude(int value) {
+    public Builder clearMessage() {
       
-      longitude_ = value;
+      message_ = getDefaultInstance().getMessage();
       onChanged();
       return this;
     }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder clearLongitude() {
+    public Builder setMessageBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
       
-      longitude_ = 0;
+      message_ = value;
       onChanged();
       return this;
     }
@@ -499,41 +506,41 @@ private static final long serialVersionUID = 0L;
     }
 
 
-    // @@protoc_insertion_point(builder_scope:routeguide.Point)
+    // @@protoc_insertion_point(builder_scope:helloworld.HelloReply)
   }
 
-  // @@protoc_insertion_point(class_scope:routeguide.Point)
-  private static final io.grpc.examples.routeguide.Point DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:helloworld.HelloReply)
+  private static final io.grpc.examples.helloworld.HelloReply DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new io.grpc.examples.routeguide.Point();
+    DEFAULT_INSTANCE = new io.grpc.examples.helloworld.HelloReply();
   }
 
-  public static io.grpc.examples.routeguide.Point getDefaultInstance() {
+  public static io.grpc.examples.helloworld.HelloReply getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<Point>
-      PARSER = new com.google.protobuf.AbstractParser<Point>() {
+  private static final com.google.protobuf.Parser<HelloReply>
+      PARSER = new com.google.protobuf.AbstractParser<HelloReply>() {
     @java.lang.Override
-    public Point parsePartialFrom(
+    public HelloReply parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new Point(input, extensionRegistry);
+      return new HelloReply(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<Point> parser() {
+  public static com.google.protobuf.Parser<HelloReply> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<Point> getParserForType() {
+  public com.google.protobuf.Parser<HelloReply> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
+  public io.grpc.examples.helloworld.HelloReply getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReplyOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReplyOrBuilder.java
new file mode 100644
index 0000000..eba408e
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReplyOrBuilder.java
@@ -0,0 +1,19 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: helloworld.proto
+
+package io.grpc.examples.helloworld;
+
+public interface HelloReplyOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:helloworld.HelloReply)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string message = 1;</code>
+   */
+  java.lang.String getMessage();
+  /**
+   * <code>string message = 1;</code>
+   */
+  com.google.protobuf.ByteString
+      getMessageBytes();
+}
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequest.java
similarity index 58%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequest.java
index 3a96ea0..720ae9a 100644
--- a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequest.java
@@ -1,28 +1,26 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: route_guide.proto
+// source: helloworld.proto
 
-package io.grpc.examples.routeguide;
+package io.grpc.examples.helloworld;
 
 /**
  * <pre>
- * Points are represented as latitude-longitude pairs in the E7 representation
- * (degrees multiplied by 10**7 and rounded to the nearest integer).
- * Latitudes should be in the range +/- 90 degrees and longitude should be in
- * the range +/- 180 degrees (inclusive).
+ * The request message containing the user's name.
  * </pre>
  *
- * Protobuf type {@code routeguide.Point}
+ * Protobuf type {@code helloworld.HelloRequest}
  */
-public  final class Point extends
+public  final class HelloRequest extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:routeguide.Point)
-    PointOrBuilder {
+    // @@protoc_insertion_point(message_implements:helloworld.HelloRequest)
+    HelloRequestOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use Point.newBuilder() to construct.
-  private Point(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloRequest.newBuilder() to construct.
+  private HelloRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private Point() {
+  private HelloRequest() {
+    name_ = "";
   }
 
   @java.lang.Override
@@ -30,7 +28,7 @@ private static final long serialVersionUID = 0L;
   getUnknownFields() {
     return this.unknownFields;
   }
-  private Point(
+  private HelloRequest(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -49,14 +47,10 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 8: {
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
 
-            latitude_ = input.readInt32();
-            break;
-          }
-          case 16: {
-
-            longitude_ = input.readInt32();
+            name_ = s;
             break;
           }
           default: {
@@ -80,33 +74,49 @@ private static final long serialVersionUID = 0L;
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+    return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+    return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+            io.grpc.examples.helloworld.HelloRequest.class, io.grpc.examples.helloworld.HelloRequest.Builder.class);
   }
 
-  public static final int LATITUDE_FIELD_NUMBER = 1;
-  private int latitude_;
+  public static final int NAME_FIELD_NUMBER = 1;
+  private volatile java.lang.Object name_;
   /**
-   * <code>int32 latitude = 1;</code>
+   * <code>string name = 1;</code>
    */
-  public int getLatitude() {
-    return latitude_;
+  public java.lang.String getName() {
+    java.lang.Object ref = name_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      name_ = s;
+      return s;
+    }
   }
-
-  public static final int LONGITUDE_FIELD_NUMBER = 2;
-  private int longitude_;
   /**
-   * <code>int32 longitude = 2;</code>
+   * <code>string name = 1;</code>
    */
-  public int getLongitude() {
-    return longitude_;
+  public com.google.protobuf.ByteString
+      getNameBytes() {
+    java.lang.Object ref = name_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      name_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
   }
 
   private byte memoizedIsInitialized = -1;
@@ -123,11 +133,8 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (latitude_ != 0) {
-      output.writeInt32(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      output.writeInt32(2, longitude_);
+    if (!getNameBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
     }
     unknownFields.writeTo(output);
   }
@@ -138,13 +145,8 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (latitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(2, longitude_);
+    if (!getNameBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -156,15 +158,13 @@ private static final long serialVersionUID = 0L;
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof io.grpc.examples.routeguide.Point)) {
+    if (!(obj instanceof io.grpc.examples.helloworld.HelloRequest)) {
       return super.equals(obj);
     }
-    io.grpc.examples.routeguide.Point other = (io.grpc.examples.routeguide.Point) obj;
+    io.grpc.examples.helloworld.HelloRequest other = (io.grpc.examples.helloworld.HelloRequest) obj;
 
-    if (getLatitude()
-        != other.getLatitude()) return false;
-    if (getLongitude()
-        != other.getLongitude()) return false;
+    if (!getName()
+        .equals(other.getName())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -176,78 +176,76 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLatitude();
-    hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLongitude();
+    hash = (37 * hash) + NAME_FIELD_NUMBER;
+    hash = (53 * hash) + getName().hashCode();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(byte[] data)
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(java.io.InputStream input)
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(java.io.InputStream input)
+  public static io.grpc.examples.helloworld.HelloRequest parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseDelimitedFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -260,7 +258,7 @@ private static final long serialVersionUID = 0L;
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(io.grpc.examples.routeguide.Point prototype) {
+  public static Builder newBuilder(io.grpc.examples.helloworld.HelloRequest prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -277,32 +275,29 @@ private static final long serialVersionUID = 0L;
   }
   /**
    * <pre>
-   * Points are represented as latitude-longitude pairs in the E7 representation
-   * (degrees multiplied by 10**7 and rounded to the nearest integer).
-   * Latitudes should be in the range +/- 90 degrees and longitude should be in
-   * the range +/- 180 degrees (inclusive).
+   * The request message containing the user's name.
    * </pre>
    *
-   * Protobuf type {@code routeguide.Point}
+   * Protobuf type {@code helloworld.HelloRequest}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:routeguide.Point)
-      io.grpc.examples.routeguide.PointOrBuilder {
+      // @@protoc_insertion_point(builder_implements:helloworld.HelloRequest)
+      io.grpc.examples.helloworld.HelloRequestOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+              io.grpc.examples.helloworld.HelloRequest.class, io.grpc.examples.helloworld.HelloRequest.Builder.class);
     }
 
-    // Construct using io.grpc.examples.routeguide.Point.newBuilder()
+    // Construct using io.grpc.examples.helloworld.HelloRequest.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -320,9 +315,7 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      latitude_ = 0;
-
-      longitude_ = 0;
+      name_ = "";
 
       return this;
     }
@@ -330,17 +323,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_descriptor;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
-      return io.grpc.examples.routeguide.Point.getDefaultInstance();
+    public io.grpc.examples.helloworld.HelloRequest getDefaultInstanceForType() {
+      return io.grpc.examples.helloworld.HelloRequest.getDefaultInstance();
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point build() {
-      io.grpc.examples.routeguide.Point result = buildPartial();
+    public io.grpc.examples.helloworld.HelloRequest build() {
+      io.grpc.examples.helloworld.HelloRequest result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -348,10 +341,9 @@ private static final long serialVersionUID = 0L;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point buildPartial() {
-      io.grpc.examples.routeguide.Point result = new io.grpc.examples.routeguide.Point(this);
-      result.latitude_ = latitude_;
-      result.longitude_ = longitude_;
+    public io.grpc.examples.helloworld.HelloRequest buildPartial() {
+      io.grpc.examples.helloworld.HelloRequest result = new io.grpc.examples.helloworld.HelloRequest(this);
+      result.name_ = name_;
       onBuilt();
       return result;
     }
@@ -390,21 +382,19 @@ private static final long serialVersionUID = 0L;
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof io.grpc.examples.routeguide.Point) {
-        return mergeFrom((io.grpc.examples.routeguide.Point)other);
+      if (other instanceof io.grpc.examples.helloworld.HelloRequest) {
+        return mergeFrom((io.grpc.examples.helloworld.HelloRequest)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(io.grpc.examples.routeguide.Point other) {
-      if (other == io.grpc.examples.routeguide.Point.getDefaultInstance()) return this;
-      if (other.getLatitude() != 0) {
-        setLatitude(other.getLatitude());
-      }
-      if (other.getLongitude() != 0) {
-        setLongitude(other.getLongitude());
+    public Builder mergeFrom(io.grpc.examples.helloworld.HelloRequest other) {
+      if (other == io.grpc.examples.helloworld.HelloRequest.getDefaultInstance()) return this;
+      if (!other.getName().isEmpty()) {
+        name_ = other.name_;
+        onChanged();
       }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
@@ -421,11 +411,11 @@ private static final long serialVersionUID = 0L;
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      io.grpc.examples.routeguide.Point parsedMessage = null;
+      io.grpc.examples.helloworld.HelloRequest parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (io.grpc.examples.routeguide.Point) e.getUnfinishedMessage();
+        parsedMessage = (io.grpc.examples.helloworld.HelloRequest) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -435,54 +425,71 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private int latitude_ ;
+    private java.lang.Object name_ = "";
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public int getLatitude() {
-      return latitude_;
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        name_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder setLatitude(int value) {
-      
-      latitude_ = value;
-      onChanged();
-      return this;
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder clearLatitude() {
-      
-      latitude_ = 0;
+    public Builder setName(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      name_ = value;
       onChanged();
       return this;
     }
-
-    private int longitude_ ;
-    /**
-     * <code>int32 longitude = 2;</code>
-     */
-    public int getLongitude() {
-      return longitude_;
-    }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder setLongitude(int value) {
+    public Builder clearName() {
       
-      longitude_ = value;
+      name_ = getDefaultInstance().getName();
       onChanged();
       return this;
     }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder clearLongitude() {
+    public Builder setNameBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
       
-      longitude_ = 0;
+      name_ = value;
       onChanged();
       return this;
     }
@@ -499,41 +506,41 @@ private static final long serialVersionUID = 0L;
     }
 
 
-    // @@protoc_insertion_point(builder_scope:routeguide.Point)
+    // @@protoc_insertion_point(builder_scope:helloworld.HelloRequest)
   }
 
-  // @@protoc_insertion_point(class_scope:routeguide.Point)
-  private static final io.grpc.examples.routeguide.Point DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:helloworld.HelloRequest)
+  private static final io.grpc.examples.helloworld.HelloRequest DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new io.grpc.examples.routeguide.Point();
+    DEFAULT_INSTANCE = new io.grpc.examples.helloworld.HelloRequest();
   }
 
-  public static io.grpc.examples.routeguide.Point getDefaultInstance() {
+  public static io.grpc.examples.helloworld.HelloRequest getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<Point>
-      PARSER = new com.google.protobuf.AbstractParser<Point>() {
+  private static final com.google.protobuf.Parser<HelloRequest>
+      PARSER = new com.google.protobuf.AbstractParser<HelloRequest>() {
     @java.lang.Override
-    public Point parsePartialFrom(
+    public HelloRequest parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new Point(input, extensionRegistry);
+      return new HelloRequest(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<Point> parser() {
+  public static com.google.protobuf.Parser<HelloRequest> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<Point> getParserForType() {
+  public com.google.protobuf.Parser<HelloRequest> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
+  public io.grpc.examples.helloworld.HelloRequest getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequestOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequestOrBuilder.java
new file mode 100644
index 0000000..3568bc9
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequestOrBuilder.java
@@ -0,0 +1,19 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: helloworld.proto
+
+package io.grpc.examples.helloworld;
+
+public interface HelloRequestOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:helloworld.HelloRequest)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string name = 1;</code>
+   */
+  java.lang.String getName();
+  /**
+   * <code>string name = 1;</code>
+   */
+  com.google.protobuf.ByteString
+      getNameBytes();
+}
diff --git a/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloWorldProto.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloWorldProto.java
new file mode 100644
index 0000000..96527e6
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloWorldProto.java
@@ -0,0 +1,70 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: helloworld.proto
+
+package io.grpc.examples.helloworld;
+
+public final class HelloWorldProto {
+  private HelloWorldProto() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registerAllExtensions(
+        (com.google.protobuf.ExtensionRegistryLite) registry);
+  }
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_helloworld_HelloRequest_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_helloworld_HelloRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_helloworld_HelloReply_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_helloworld_HelloReply_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static  com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\020helloworld.proto\022\nhelloworld\"\034\n\014HelloR" +
+      "equest\022\014\n\004name\030\001 \001(\t\"\035\n\nHelloReply\022\017\n\007me" +
+      "ssage\030\001 \001(\t2I\n\007Greeter\022>\n\010SayHello\022\030.hel" +
+      "loworld.HelloRequest\032\026.helloworld.HelloR" +
+      "eply\"\000B6\n\033io.grpc.examples.helloworldB\017H" +
+      "elloWorldProtoP\001\242\002\003HLWb\006proto3"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
+          public com.google.protobuf.ExtensionRegistry assignDescriptors(
+              com.google.protobuf.Descriptors.FileDescriptor root) {
+            descriptor = root;
+            return null;
+          }
+        };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        }, assigner);
+    internal_static_helloworld_HelloRequest_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_helloworld_HelloRequest_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_helloworld_HelloRequest_descriptor,
+        new java.lang.String[] { "Name", });
+    internal_static_helloworld_HelloReply_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_helloworld_HelloReply_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_helloworld_HelloReply_descriptor,
+        new java.lang.String[] { "Message", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/DubboStreamingGreeterGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/DubboStreamingGreeterGrpc.java
new file mode 100644
index 0000000..4bbae02
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/DubboStreamingGreeterGrpc.java
@@ -0,0 +1,136 @@
+package io.grpc.examples.manualflowcontrol;
+
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.config.ReferenceConfigBase;
+
+import java.util.concurrent.TimeUnit;
+
+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;
+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;
+
+import static io.grpc.examples.manualflowcontrol.StreamingGreeterGrpc.getServiceDescriptor;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
+
+@javax.annotation.Generated(
+value = "by DubboGrpc generator",
+comments = "Source: hello_streaming.proto")
+public final class DubboStreamingGreeterGrpc {
+    private DubboStreamingGreeterGrpc() {}
+
+    public static class DubboStreamingGreeterStub implements IStreamingGreeter {
+
+        protected URL url;
+        protected ReferenceConfigBase<?> referenceConfig;
+
+        protected StreamingGreeterGrpc.StreamingGreeterBlockingStub blockingStub;
+        protected StreamingGreeterGrpc.StreamingGreeterFutureStub futureStub;
+        protected StreamingGreeterGrpc.StreamingGreeterStub stub;
+
+        public DubboStreamingGreeterStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+            this.url = url;
+            this.referenceConfig = referenceConfig;
+
+            blockingStub = StreamingGreeterGrpc.newBlockingStub(channel).build(channel, callOptions);
+            futureStub = StreamingGreeterGrpc.newFutureStub(channel).build(channel, callOptions);
+            stub = StreamingGreeterGrpc.newStub(channel).build(channel, callOptions);
+        }
+
+        /**
+         * <pre>
+         *  Streams a many greetings
+         * </pre>
+         */
+        public io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloRequest> sayHelloStreaming(io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloReply> responseObserver) {
+            return stub
+                .withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS)
+                .sayHelloStreaming(responseObserver);
+        }
+    }
+
+    public static DubboStreamingGreeterStub getDubboStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+      return new DubboStreamingGreeterStub(channel, callOptions, url, referenceConfig);
+    }
+
+    public interface IStreamingGreeter {
+        /**
+         * <pre>
+         *  Streams a many greetings
+         * </pre>
+         */
+        public io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloRequest> sayHelloStreaming(io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloReply> responseObserver);
+
+    }
+
+    /**
+     * <pre>
+     *  The greeting service definition.
+     * </pre>
+     */
+    public static abstract class StreamingGreeterImplBase implements io.grpc.BindableService, IStreamingGreeter {
+
+        private IStreamingGreeter proxiedImpl;
+
+        public final void setProxiedImpl(IStreamingGreeter proxiedImpl) {
+            this.proxiedImpl = proxiedImpl;
+        }
+
+        public io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloRequest> sayHelloStreaming(
+            io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloReply> responseObserver) {
+            return asyncUnimplementedStreamingCall(io.grpc.examples.manualflowcontrol.StreamingGreeterGrpc.getSayHelloStreamingMethod(), responseObserver);
+        }
+
+        @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
+            return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+                      .addMethod(
+                        io.grpc.examples.manualflowcontrol.StreamingGreeterGrpc.getSayHelloStreamingMethod(),
+                        asyncBidiStreamingCall(
+                          new MethodHandlers<
+                             io.grpc.examples.manualflowcontrol.HelloRequest,
+                             io.grpc.examples.manualflowcontrol.HelloReply>(
+                              proxiedImpl, METHODID_SAY_HELLO_STREAMING)))
+                    .build();
+        }
+    }
+    private static final int METHODID_SAY_HELLO_STREAMING = 0;
+
+    private static final class MethodHandlers<Req, Resp> implements
+            io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+            io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+            io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+            io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+        private final IStreamingGreeter serviceImpl;
+        private final int methodId;
+
+        MethodHandlers(IStreamingGreeter serviceImpl, int methodId) {
+            this.serviceImpl = serviceImpl;
+            this.methodId = methodId;
+        }
+
+        @java.lang.Override
+        @java.lang.SuppressWarnings("unchecked")
+        public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+            switch (methodId) {
+                default:
+                    throw new java.lang.AssertionError();
+            }
+        }
+
+        @java.lang.Override
+        @java.lang.SuppressWarnings("unchecked")
+        public io.grpc.stub.StreamObserver<Req> invoke(io.grpc.stub.StreamObserver<Resp> responseObserver) {
+            switch (methodId) {
+                case METHODID_SAY_HELLO_STREAMING:
+                    return (io.grpc.stub.StreamObserver<Req>) serviceImpl.sayHelloStreaming(
+                        (io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloReply>) responseObserver);
+                default:
+                    throw new java.lang.AssertionError();
+            }
+        }
+    }
+
+}
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloReply.java
similarity index 56%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloReply.java
index 3a96ea0..b9f9d47 100644
--- a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloReply.java
@@ -1,28 +1,26 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: route_guide.proto
+// source: hello_streaming.proto
 
-package io.grpc.examples.routeguide;
+package io.grpc.examples.manualflowcontrol;
 
 /**
  * <pre>
- * Points are represented as latitude-longitude pairs in the E7 representation
- * (degrees multiplied by 10**7 and rounded to the nearest integer).
- * Latitudes should be in the range +/- 90 degrees and longitude should be in
- * the range +/- 180 degrees (inclusive).
+ * The response message containing the greetings
  * </pre>
  *
- * Protobuf type {@code routeguide.Point}
+ * Protobuf type {@code hellostreaming.HelloReply}
  */
-public  final class Point extends
+public  final class HelloReply extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:routeguide.Point)
-    PointOrBuilder {
+    // @@protoc_insertion_point(message_implements:hellostreaming.HelloReply)
+    HelloReplyOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use Point.newBuilder() to construct.
-  private Point(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloReply.newBuilder() to construct.
+  private HelloReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private Point() {
+  private HelloReply() {
+    message_ = "";
   }
 
   @java.lang.Override
@@ -30,7 +28,7 @@ private static final long serialVersionUID = 0L;
   getUnknownFields() {
     return this.unknownFields;
   }
-  private Point(
+  private HelloReply(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -49,14 +47,10 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 8: {
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
 
-            latitude_ = input.readInt32();
-            break;
-          }
-          case 16: {
-
-            longitude_ = input.readInt32();
+            message_ = s;
             break;
           }
           default: {
@@ -80,33 +74,49 @@ private static final long serialVersionUID = 0L;
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+    return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloReply_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+    return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloReply_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+            io.grpc.examples.manualflowcontrol.HelloReply.class, io.grpc.examples.manualflowcontrol.HelloReply.Builder.class);
   }
 
-  public static final int LATITUDE_FIELD_NUMBER = 1;
-  private int latitude_;
+  public static final int MESSAGE_FIELD_NUMBER = 1;
+  private volatile java.lang.Object message_;
   /**
-   * <code>int32 latitude = 1;</code>
+   * <code>string message = 1;</code>
    */
-  public int getLatitude() {
-    return latitude_;
+  public java.lang.String getMessage() {
+    java.lang.Object ref = message_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      message_ = s;
+      return s;
+    }
   }
-
-  public static final int LONGITUDE_FIELD_NUMBER = 2;
-  private int longitude_;
   /**
-   * <code>int32 longitude = 2;</code>
+   * <code>string message = 1;</code>
    */
-  public int getLongitude() {
-    return longitude_;
+  public com.google.protobuf.ByteString
+      getMessageBytes() {
+    java.lang.Object ref = message_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      message_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
   }
 
   private byte memoizedIsInitialized = -1;
@@ -123,11 +133,8 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (latitude_ != 0) {
-      output.writeInt32(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      output.writeInt32(2, longitude_);
+    if (!getMessageBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, message_);
     }
     unknownFields.writeTo(output);
   }
@@ -138,13 +145,8 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (latitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(2, longitude_);
+    if (!getMessageBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, message_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -156,15 +158,13 @@ private static final long serialVersionUID = 0L;
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof io.grpc.examples.routeguide.Point)) {
+    if (!(obj instanceof io.grpc.examples.manualflowcontrol.HelloReply)) {
       return super.equals(obj);
     }
-    io.grpc.examples.routeguide.Point other = (io.grpc.examples.routeguide.Point) obj;
+    io.grpc.examples.manualflowcontrol.HelloReply other = (io.grpc.examples.manualflowcontrol.HelloReply) obj;
 
-    if (getLatitude()
-        != other.getLatitude()) return false;
-    if (getLongitude()
-        != other.getLongitude()) return false;
+    if (!getMessage()
+        .equals(other.getMessage())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -176,78 +176,76 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLatitude();
-    hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLongitude();
+    hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
+    hash = (53 * hash) + getMessage().hashCode();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(byte[] data)
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(java.io.InputStream input)
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(java.io.InputStream input)
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseDelimitedFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -260,7 +258,7 @@ private static final long serialVersionUID = 0L;
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(io.grpc.examples.routeguide.Point prototype) {
+  public static Builder newBuilder(io.grpc.examples.manualflowcontrol.HelloReply prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -277,32 +275,29 @@ private static final long serialVersionUID = 0L;
   }
   /**
    * <pre>
-   * Points are represented as latitude-longitude pairs in the E7 representation
-   * (degrees multiplied by 10**7 and rounded to the nearest integer).
-   * Latitudes should be in the range +/- 90 degrees and longitude should be in
-   * the range +/- 180 degrees (inclusive).
+   * The response message containing the greetings
    * </pre>
    *
-   * Protobuf type {@code routeguide.Point}
+   * Protobuf type {@code hellostreaming.HelloReply}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:routeguide.Point)
-      io.grpc.examples.routeguide.PointOrBuilder {
+      // @@protoc_insertion_point(builder_implements:hellostreaming.HelloReply)
+      io.grpc.examples.manualflowcontrol.HelloReplyOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloReply_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloReply_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+              io.grpc.examples.manualflowcontrol.HelloReply.class, io.grpc.examples.manualflowcontrol.HelloReply.Builder.class);
     }
 
-    // Construct using io.grpc.examples.routeguide.Point.newBuilder()
+    // Construct using io.grpc.examples.manualflowcontrol.HelloReply.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -320,9 +315,7 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      latitude_ = 0;
-
-      longitude_ = 0;
+      message_ = "";
 
       return this;
     }
@@ -330,17 +323,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloReply_descriptor;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
-      return io.grpc.examples.routeguide.Point.getDefaultInstance();
+    public io.grpc.examples.manualflowcontrol.HelloReply getDefaultInstanceForType() {
+      return io.grpc.examples.manualflowcontrol.HelloReply.getDefaultInstance();
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point build() {
-      io.grpc.examples.routeguide.Point result = buildPartial();
+    public io.grpc.examples.manualflowcontrol.HelloReply build() {
+      io.grpc.examples.manualflowcontrol.HelloReply result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -348,10 +341,9 @@ private static final long serialVersionUID = 0L;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point buildPartial() {
-      io.grpc.examples.routeguide.Point result = new io.grpc.examples.routeguide.Point(this);
-      result.latitude_ = latitude_;
-      result.longitude_ = longitude_;
+    public io.grpc.examples.manualflowcontrol.HelloReply buildPartial() {
+      io.grpc.examples.manualflowcontrol.HelloReply result = new io.grpc.examples.manualflowcontrol.HelloReply(this);
+      result.message_ = message_;
       onBuilt();
       return result;
     }
@@ -390,21 +382,19 @@ private static final long serialVersionUID = 0L;
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof io.grpc.examples.routeguide.Point) {
-        return mergeFrom((io.grpc.examples.routeguide.Point)other);
+      if (other instanceof io.grpc.examples.manualflowcontrol.HelloReply) {
+        return mergeFrom((io.grpc.examples.manualflowcontrol.HelloReply)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(io.grpc.examples.routeguide.Point other) {
-      if (other == io.grpc.examples.routeguide.Point.getDefaultInstance()) return this;
-      if (other.getLatitude() != 0) {
-        setLatitude(other.getLatitude());
-      }
-      if (other.getLongitude() != 0) {
-        setLongitude(other.getLongitude());
+    public Builder mergeFrom(io.grpc.examples.manualflowcontrol.HelloReply other) {
+      if (other == io.grpc.examples.manualflowcontrol.HelloReply.getDefaultInstance()) return this;
+      if (!other.getMessage().isEmpty()) {
+        message_ = other.message_;
+        onChanged();
       }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
@@ -421,11 +411,11 @@ private static final long serialVersionUID = 0L;
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      io.grpc.examples.routeguide.Point parsedMessage = null;
+      io.grpc.examples.manualflowcontrol.HelloReply parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (io.grpc.examples.routeguide.Point) e.getUnfinishedMessage();
+        parsedMessage = (io.grpc.examples.manualflowcontrol.HelloReply) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -435,54 +425,71 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private int latitude_ ;
+    private java.lang.Object message_ = "";
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public int getLatitude() {
-      return latitude_;
+    public java.lang.String getMessage() {
+      java.lang.Object ref = message_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        message_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder setLatitude(int value) {
-      
-      latitude_ = value;
-      onChanged();
-      return this;
+    public com.google.protobuf.ByteString
+        getMessageBytes() {
+      java.lang.Object ref = message_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        message_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder clearLatitude() {
-      
-      latitude_ = 0;
+    public Builder setMessage(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      message_ = value;
       onChanged();
       return this;
     }
-
-    private int longitude_ ;
-    /**
-     * <code>int32 longitude = 2;</code>
-     */
-    public int getLongitude() {
-      return longitude_;
-    }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder setLongitude(int value) {
+    public Builder clearMessage() {
       
-      longitude_ = value;
+      message_ = getDefaultInstance().getMessage();
       onChanged();
       return this;
     }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder clearLongitude() {
+    public Builder setMessageBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
       
-      longitude_ = 0;
+      message_ = value;
       onChanged();
       return this;
     }
@@ -499,41 +506,41 @@ private static final long serialVersionUID = 0L;
     }
 
 
-    // @@protoc_insertion_point(builder_scope:routeguide.Point)
+    // @@protoc_insertion_point(builder_scope:hellostreaming.HelloReply)
   }
 
-  // @@protoc_insertion_point(class_scope:routeguide.Point)
-  private static final io.grpc.examples.routeguide.Point DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:hellostreaming.HelloReply)
+  private static final io.grpc.examples.manualflowcontrol.HelloReply DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new io.grpc.examples.routeguide.Point();
+    DEFAULT_INSTANCE = new io.grpc.examples.manualflowcontrol.HelloReply();
   }
 
-  public static io.grpc.examples.routeguide.Point getDefaultInstance() {
+  public static io.grpc.examples.manualflowcontrol.HelloReply getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<Point>
-      PARSER = new com.google.protobuf.AbstractParser<Point>() {
+  private static final com.google.protobuf.Parser<HelloReply>
+      PARSER = new com.google.protobuf.AbstractParser<HelloReply>() {
     @java.lang.Override
-    public Point parsePartialFrom(
+    public HelloReply parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new Point(input, extensionRegistry);
+      return new HelloReply(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<Point> parser() {
+  public static com.google.protobuf.Parser<HelloReply> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<Point> getParserForType() {
+  public com.google.protobuf.Parser<HelloReply> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
+  public io.grpc.examples.manualflowcontrol.HelloReply getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloReplyOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloReplyOrBuilder.java
new file mode 100644
index 0000000..3cad1c5
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloReplyOrBuilder.java
@@ -0,0 +1,19 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: hello_streaming.proto
+
+package io.grpc.examples.manualflowcontrol;
+
+public interface HelloReplyOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:hellostreaming.HelloReply)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string message = 1;</code>
+   */
+  java.lang.String getMessage();
+  /**
+   * <code>string message = 1;</code>
+   */
+  com.google.protobuf.ByteString
+      getMessageBytes();
+}
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloRequest.java
similarity index 56%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloRequest.java
index 3a96ea0..647b5dd 100644
--- a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloRequest.java
@@ -1,28 +1,26 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: route_guide.proto
+// source: hello_streaming.proto
 
-package io.grpc.examples.routeguide;
+package io.grpc.examples.manualflowcontrol;
 
 /**
  * <pre>
- * Points are represented as latitude-longitude pairs in the E7 representation
- * (degrees multiplied by 10**7 and rounded to the nearest integer).
- * Latitudes should be in the range +/- 90 degrees and longitude should be in
- * the range +/- 180 degrees (inclusive).
+ * The request message containing the user's name.
  * </pre>
  *
- * Protobuf type {@code routeguide.Point}
+ * Protobuf type {@code hellostreaming.HelloRequest}
  */
-public  final class Point extends
+public  final class HelloRequest extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:routeguide.Point)
-    PointOrBuilder {
+    // @@protoc_insertion_point(message_implements:hellostreaming.HelloRequest)
+    HelloRequestOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use Point.newBuilder() to construct.
-  private Point(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloRequest.newBuilder() to construct.
+  private HelloRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private Point() {
+  private HelloRequest() {
+    name_ = "";
   }
 
   @java.lang.Override
@@ -30,7 +28,7 @@ private static final long serialVersionUID = 0L;
   getUnknownFields() {
     return this.unknownFields;
   }
-  private Point(
+  private HelloRequest(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -49,14 +47,10 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 8: {
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
 
-            latitude_ = input.readInt32();
-            break;
-          }
-          case 16: {
-
-            longitude_ = input.readInt32();
+            name_ = s;
             break;
           }
           default: {
@@ -80,33 +74,49 @@ private static final long serialVersionUID = 0L;
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+    return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloRequest_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+    return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloRequest_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+            io.grpc.examples.manualflowcontrol.HelloRequest.class, io.grpc.examples.manualflowcontrol.HelloRequest.Builder.class);
   }
 
-  public static final int LATITUDE_FIELD_NUMBER = 1;
-  private int latitude_;
+  public static final int NAME_FIELD_NUMBER = 1;
+  private volatile java.lang.Object name_;
   /**
-   * <code>int32 latitude = 1;</code>
+   * <code>string name = 1;</code>
    */
-  public int getLatitude() {
-    return latitude_;
+  public java.lang.String getName() {
+    java.lang.Object ref = name_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      name_ = s;
+      return s;
+    }
   }
-
-  public static final int LONGITUDE_FIELD_NUMBER = 2;
-  private int longitude_;
   /**
-   * <code>int32 longitude = 2;</code>
+   * <code>string name = 1;</code>
    */
-  public int getLongitude() {
-    return longitude_;
+  public com.google.protobuf.ByteString
+      getNameBytes() {
+    java.lang.Object ref = name_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      name_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
   }
 
   private byte memoizedIsInitialized = -1;
@@ -123,11 +133,8 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (latitude_ != 0) {
-      output.writeInt32(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      output.writeInt32(2, longitude_);
+    if (!getNameBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
     }
     unknownFields.writeTo(output);
   }
@@ -138,13 +145,8 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (latitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(2, longitude_);
+    if (!getNameBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -156,15 +158,13 @@ private static final long serialVersionUID = 0L;
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof io.grpc.examples.routeguide.Point)) {
+    if (!(obj instanceof io.grpc.examples.manualflowcontrol.HelloRequest)) {
       return super.equals(obj);
     }
-    io.grpc.examples.routeguide.Point other = (io.grpc.examples.routeguide.Point) obj;
+    io.grpc.examples.manualflowcontrol.HelloRequest other = (io.grpc.examples.manualflowcontrol.HelloRequest) obj;
 
-    if (getLatitude()
-        != other.getLatitude()) return false;
-    if (getLongitude()
-        != other.getLongitude()) return false;
+    if (!getName()
+        .equals(other.getName())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -176,78 +176,76 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLatitude();
-    hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLongitude();
+    hash = (37 * hash) + NAME_FIELD_NUMBER;
+    hash = (53 * hash) + getName().hashCode();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(byte[] data)
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(java.io.InputStream input)
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(java.io.InputStream input)
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseDelimitedFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -260,7 +258,7 @@ private static final long serialVersionUID = 0L;
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(io.grpc.examples.routeguide.Point prototype) {
+  public static Builder newBuilder(io.grpc.examples.manualflowcontrol.HelloRequest prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -277,32 +275,29 @@ private static final long serialVersionUID = 0L;
   }
   /**
    * <pre>
-   * Points are represented as latitude-longitude pairs in the E7 representation
-   * (degrees multiplied by 10**7 and rounded to the nearest integer).
-   * Latitudes should be in the range +/- 90 degrees and longitude should be in
-   * the range +/- 180 degrees (inclusive).
+   * The request message containing the user's name.
    * </pre>
    *
-   * Protobuf type {@code routeguide.Point}
+   * Protobuf type {@code hellostreaming.HelloRequest}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:routeguide.Point)
-      io.grpc.examples.routeguide.PointOrBuilder {
+      // @@protoc_insertion_point(builder_implements:hellostreaming.HelloRequest)
+      io.grpc.examples.manualflowcontrol.HelloRequestOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloRequest_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+              io.grpc.examples.manualflowcontrol.HelloRequest.class, io.grpc.examples.manualflowcontrol.HelloRequest.Builder.class);
     }
 
-    // Construct using io.grpc.examples.routeguide.Point.newBuilder()
+    // Construct using io.grpc.examples.manualflowcontrol.HelloRequest.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -320,9 +315,7 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      latitude_ = 0;
-
-      longitude_ = 0;
+      name_ = "";
 
       return this;
     }
@@ -330,17 +323,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloRequest_descriptor;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
-      return io.grpc.examples.routeguide.Point.getDefaultInstance();
+    public io.grpc.examples.manualflowcontrol.HelloRequest getDefaultInstanceForType() {
+      return io.grpc.examples.manualflowcontrol.HelloRequest.getDefaultInstance();
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point build() {
-      io.grpc.examples.routeguide.Point result = buildPartial();
+    public io.grpc.examples.manualflowcontrol.HelloRequest build() {
+      io.grpc.examples.manualflowcontrol.HelloRequest result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -348,10 +341,9 @@ private static final long serialVersionUID = 0L;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point buildPartial() {
-      io.grpc.examples.routeguide.Point result = new io.grpc.examples.routeguide.Point(this);
-      result.latitude_ = latitude_;
-      result.longitude_ = longitude_;
+    public io.grpc.examples.manualflowcontrol.HelloRequest buildPartial() {
+      io.grpc.examples.manualflowcontrol.HelloRequest result = new io.grpc.examples.manualflowcontrol.HelloRequest(this);
+      result.name_ = name_;
       onBuilt();
       return result;
     }
@@ -390,21 +382,19 @@ private static final long serialVersionUID = 0L;
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof io.grpc.examples.routeguide.Point) {
-        return mergeFrom((io.grpc.examples.routeguide.Point)other);
+      if (other instanceof io.grpc.examples.manualflowcontrol.HelloRequest) {
+        return mergeFrom((io.grpc.examples.manualflowcontrol.HelloRequest)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(io.grpc.examples.routeguide.Point other) {
-      if (other == io.grpc.examples.routeguide.Point.getDefaultInstance()) return this;
-      if (other.getLatitude() != 0) {
-        setLatitude(other.getLatitude());
-      }
-      if (other.getLongitude() != 0) {
-        setLongitude(other.getLongitude());
+    public Builder mergeFrom(io.grpc.examples.manualflowcontrol.HelloRequest other) {
+      if (other == io.grpc.examples.manualflowcontrol.HelloRequest.getDefaultInstance()) return this;
+      if (!other.getName().isEmpty()) {
+        name_ = other.name_;
+        onChanged();
       }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
@@ -421,11 +411,11 @@ private static final long serialVersionUID = 0L;
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      io.grpc.examples.routeguide.Point parsedMessage = null;
+      io.grpc.examples.manualflowcontrol.HelloRequest parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (io.grpc.examples.routeguide.Point) e.getUnfinishedMessage();
+        parsedMessage = (io.grpc.examples.manualflowcontrol.HelloRequest) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -435,54 +425,71 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private int latitude_ ;
+    private java.lang.Object name_ = "";
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public int getLatitude() {
-      return latitude_;
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        name_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder setLatitude(int value) {
-      
-      latitude_ = value;
-      onChanged();
-      return this;
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder clearLatitude() {
-      
-      latitude_ = 0;
+    public Builder setName(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      name_ = value;
       onChanged();
       return this;
     }
-
-    private int longitude_ ;
-    /**
-     * <code>int32 longitude = 2;</code>
-     */
-    public int getLongitude() {
-      return longitude_;
-    }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder setLongitude(int value) {
+    public Builder clearName() {
       
-      longitude_ = value;
+      name_ = getDefaultInstance().getName();
       onChanged();
       return this;
     }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder clearLongitude() {
+    public Builder setNameBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
       
-      longitude_ = 0;
+      name_ = value;
       onChanged();
       return this;
     }
@@ -499,41 +506,41 @@ private static final long serialVersionUID = 0L;
     }
 
 
-    // @@protoc_insertion_point(builder_scope:routeguide.Point)
+    // @@protoc_insertion_point(builder_scope:hellostreaming.HelloRequest)
   }
 
-  // @@protoc_insertion_point(class_scope:routeguide.Point)
-  private static final io.grpc.examples.routeguide.Point DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:hellostreaming.HelloRequest)
+  private static final io.grpc.examples.manualflowcontrol.HelloRequest DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new io.grpc.examples.routeguide.Point();
+    DEFAULT_INSTANCE = new io.grpc.examples.manualflowcontrol.HelloRequest();
   }
 
-  public static io.grpc.examples.routeguide.Point getDefaultInstance() {
+  public static io.grpc.examples.manualflowcontrol.HelloRequest getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<Point>
-      PARSER = new com.google.protobuf.AbstractParser<Point>() {
+  private static final com.google.protobuf.Parser<HelloRequest>
+      PARSER = new com.google.protobuf.AbstractParser<HelloRequest>() {
     @java.lang.Override
-    public Point parsePartialFrom(
+    public HelloRequest parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new Point(input, extensionRegistry);
+      return new HelloRequest(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<Point> parser() {
+  public static com.google.protobuf.Parser<HelloRequest> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<Point> getParserForType() {
+  public com.google.protobuf.Parser<HelloRequest> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
+  public io.grpc.examples.manualflowcontrol.HelloRequest getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloRequestOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloRequestOrBuilder.java
new file mode 100644
index 0000000..0468be6
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloRequestOrBuilder.java
@@ -0,0 +1,19 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: hello_streaming.proto
+
+package io.grpc.examples.manualflowcontrol;
+
+public interface HelloRequestOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:hellostreaming.HelloRequest)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string name = 1;</code>
+   */
+  java.lang.String getName();
+  /**
+   * <code>string name = 1;</code>
+   */
+  com.google.protobuf.ByteString
+      getNameBytes();
+}
diff --git a/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloStreamingProto.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloStreamingProto.java
new file mode 100644
index 0000000..d83200c
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloStreamingProto.java
@@ -0,0 +1,72 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: hello_streaming.proto
+
+package io.grpc.examples.manualflowcontrol;
+
+public final class HelloStreamingProto {
+  private HelloStreamingProto() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registerAllExtensions(
+        (com.google.protobuf.ExtensionRegistryLite) registry);
+  }
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_hellostreaming_HelloRequest_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_hellostreaming_HelloRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_hellostreaming_HelloReply_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_hellostreaming_HelloReply_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static  com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\025hello_streaming.proto\022\016hellostreaming\"" +
+      "\034\n\014HelloRequest\022\014\n\004name\030\001 \001(\t\"\035\n\nHelloRe" +
+      "ply\022\017\n\007message\030\001 \001(\t2g\n\020StreamingGreeter" +
+      "\022S\n\021SayHelloStreaming\022\034.hellostreaming.H" +
+      "elloRequest\032\032.hellostreaming.HelloReply\"" +
+      "\000(\0010\001BB\n\"io.grpc.examples.manualflowcont" +
+      "rolB\023HelloStreamingProtoP\001\242\002\004HLWSb\006proto" +
+      "3"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
+          public com.google.protobuf.ExtensionRegistry assignDescriptors(
+              com.google.protobuf.Descriptors.FileDescriptor root) {
+            descriptor = root;
+            return null;
+          }
+        };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        }, assigner);
+    internal_static_hellostreaming_HelloRequest_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_hellostreaming_HelloRequest_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_hellostreaming_HelloRequest_descriptor,
+        new java.lang.String[] { "Name", });
+    internal_static_hellostreaming_HelloReply_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_hellostreaming_HelloReply_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_hellostreaming_HelloReply_descriptor,
+        new java.lang.String[] { "Message", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/StreamingGreeterGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/StreamingGreeterGrpc.java
new file mode 100644
index 0000000..91f650b
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/StreamingGreeterGrpc.java
@@ -0,0 +1,285 @@
+package io.grpc.examples.manualflowcontrol;
+
+import static io.grpc.MethodDescriptor.generateFullMethodName;
+import static io.grpc.stub.ClientCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncUnaryCall;
+import static io.grpc.stub.ClientCalls.blockingServerStreamingCall;
+import static io.grpc.stub.ClientCalls.blockingUnaryCall;
+import static io.grpc.stub.ClientCalls.futureUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
+
+/**
+ * <pre>
+ * The greeting service definition.
+ * </pre>
+ */
+@javax.annotation.Generated(
+    value = "by gRPC proto compiler (version 1.19.0)",
+    comments = "Source: hello_streaming.proto")
+public final class StreamingGreeterGrpc {
+
+  private StreamingGreeterGrpc() {}
+
+  public static final String SERVICE_NAME = "hellostreaming.StreamingGreeter";
+
+  // Static method descriptors that strictly reflect the proto.
+  private static volatile io.grpc.MethodDescriptor<io.grpc.examples.manualflowcontrol.HelloRequest,
+      io.grpc.examples.manualflowcontrol.HelloReply> getSayHelloStreamingMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "SayHelloStreaming",
+      requestType = io.grpc.examples.manualflowcontrol.HelloRequest.class,
+      responseType = io.grpc.examples.manualflowcontrol.HelloReply.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING)
+  public static io.grpc.MethodDescriptor<io.grpc.examples.manualflowcontrol.HelloRequest,
+      io.grpc.examples.manualflowcontrol.HelloReply> getSayHelloStreamingMethod() {
+    io.grpc.MethodDescriptor<io.grpc.examples.manualflowcontrol.HelloRequest, io.grpc.examples.manualflowcontrol.HelloReply> getSayHelloStreamingMethod;
+    if ((getSayHelloStreamingMethod = StreamingGreeterGrpc.getSayHelloStreamingMethod) == null) {
+      synchronized (StreamingGreeterGrpc.class) {
+        if ((getSayHelloStreamingMethod = StreamingGreeterGrpc.getSayHelloStreamingMethod) == null) {
+          StreamingGreeterGrpc.getSayHelloStreamingMethod = getSayHelloStreamingMethod = 
+              io.grpc.MethodDescriptor.<io.grpc.examples.manualflowcontrol.HelloRequest, io.grpc.examples.manualflowcontrol.HelloReply>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING)
+              .setFullMethodName(generateFullMethodName(
+                  "hellostreaming.StreamingGreeter", "SayHelloStreaming"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  io.grpc.examples.manualflowcontrol.HelloRequest.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  io.grpc.examples.manualflowcontrol.HelloReply.getDefaultInstance()))
+                  .setSchemaDescriptor(new StreamingGreeterMethodDescriptorSupplier("SayHelloStreaming"))
+                  .build();
+          }
+        }
+     }
+     return getSayHelloStreamingMethod;
+  }
+
+  /**
+   * Creates a new async stub that supports all call types for the service
+   */
+  public static StreamingGreeterStub newStub(io.grpc.Channel channel) {
+    return new StreamingGreeterStub(channel);
+  }
+
+  /**
+   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
+   */
+  public static StreamingGreeterBlockingStub newBlockingStub(
+      io.grpc.Channel channel) {
+    return new StreamingGreeterBlockingStub(channel);
+  }
+
+  /**
+   * Creates a new ListenableFuture-style stub that supports unary calls on the service
+   */
+  public static StreamingGreeterFutureStub newFutureStub(
+      io.grpc.Channel channel) {
+    return new StreamingGreeterFutureStub(channel);
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static abstract class StreamingGreeterImplBase implements io.grpc.BindableService {
+
+    /**
+     * <pre>
+     * Streams a many greetings
+     * </pre>
+     */
+    public io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloRequest> sayHelloStreaming(
+        io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloReply> responseObserver) {
+      return asyncUnimplementedStreamingCall(getSayHelloStreamingMethod(), responseObserver);
+    }
+
+    @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
+      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+          .addMethod(
+            getSayHelloStreamingMethod(),
+            asyncBidiStreamingCall(
+              new MethodHandlers<
+                io.grpc.examples.manualflowcontrol.HelloRequest,
+                io.grpc.examples.manualflowcontrol.HelloReply>(
+                  this, METHODID_SAY_HELLO_STREAMING)))
+          .build();
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class StreamingGreeterStub extends io.grpc.stub.AbstractStub<StreamingGreeterStub> {
+    private StreamingGreeterStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private StreamingGreeterStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected StreamingGreeterStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new StreamingGreeterStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Streams a many greetings
+     * </pre>
+     */
+    public io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloRequest> sayHelloStreaming(
+        io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloReply> responseObserver) {
+      return asyncBidiStreamingCall(
+          getChannel().newCall(getSayHelloStreamingMethod(), getCallOptions()), responseObserver);
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class StreamingGreeterBlockingStub extends io.grpc.stub.AbstractStub<StreamingGreeterBlockingStub> {
+    private StreamingGreeterBlockingStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private StreamingGreeterBlockingStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected StreamingGreeterBlockingStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new StreamingGreeterBlockingStub(channel, callOptions);
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class StreamingGreeterFutureStub extends io.grpc.stub.AbstractStub<StreamingGreeterFutureStub> {
+    private StreamingGreeterFutureStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private StreamingGreeterFutureStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected StreamingGreeterFutureStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new StreamingGreeterFutureStub(channel, callOptions);
+    }
+  }
+
+  private static final int METHODID_SAY_HELLO_STREAMING = 0;
+
+  private static final class MethodHandlers<Req, Resp> implements
+      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+    private final StreamingGreeterImplBase serviceImpl;
+    private final int methodId;
+
+    MethodHandlers(StreamingGreeterImplBase serviceImpl, int methodId) {
+      this.serviceImpl = serviceImpl;
+      this.methodId = methodId;
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        default:
+          throw new AssertionError();
+      }
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public io.grpc.stub.StreamObserver<Req> invoke(
+        io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        case METHODID_SAY_HELLO_STREAMING:
+          return (io.grpc.stub.StreamObserver<Req>) serviceImpl.sayHelloStreaming(
+              (io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloReply>) responseObserver);
+        default:
+          throw new AssertionError();
+      }
+    }
+  }
+
+  private static abstract class StreamingGreeterBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+    StreamingGreeterBaseDescriptorSupplier() {}
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.getDescriptor();
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+      return getFileDescriptor().findServiceByName("StreamingGreeter");
+    }
+  }
+
+  private static final class StreamingGreeterFileDescriptorSupplier
+      extends StreamingGreeterBaseDescriptorSupplier {
+    StreamingGreeterFileDescriptorSupplier() {}
+  }
+
+  private static final class StreamingGreeterMethodDescriptorSupplier
+      extends StreamingGreeterBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
+    private final String methodName;
+
+    StreamingGreeterMethodDescriptorSupplier(String methodName) {
+      this.methodName = methodName;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+      return getServiceDescriptor().findMethodByName(methodName);
+    }
+  }
+
+  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+
+  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+    io.grpc.ServiceDescriptor result = serviceDescriptor;
+    if (result == null) {
+      synchronized (StreamingGreeterGrpc.class) {
+        result = serviceDescriptor;
+        if (result == null) {
+          serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
+              .setSchemaDescriptor(new StreamingGreeterFileDescriptorSupplier())
+              .addMethod(getSayHelloStreamingMethod())
+              .build();
+        }
+      }
+    }
+    return result;
+  }
+}
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/DubboRouteGuideGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/DubboRouteGuideGrpc.java
similarity index 86%
rename from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/DubboRouteGuideGrpc.java
rename to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/DubboRouteGuideGrpc.java
index 373bfc3..76702cb 100644
--- a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/DubboRouteGuideGrpc.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/DubboRouteGuideGrpc.java
@@ -1,5 +1,13 @@
 package io.grpc.examples.routeguide;
 
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.config.ReferenceConfigBase;
+
+import java.util.concurrent.TimeUnit;
+
+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;
+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;
+
 import static io.grpc.examples.routeguide.RouteGuideGrpc.getServiceDescriptor;
 import static io.grpc.stub.ServerCalls.asyncUnaryCall;
 import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
@@ -16,14 +24,20 @@ public final class DubboRouteGuideGrpc {
 
     public static class DubboRouteGuideStub implements IRouteGuide {
 
+        protected URL url;
+        protected ReferenceConfigBase<?> referenceConfig;
+
         protected RouteGuideGrpc.RouteGuideBlockingStub blockingStub;
         protected RouteGuideGrpc.RouteGuideFutureStub futureStub;
         protected RouteGuideGrpc.RouteGuideStub stub;
 
-        public DubboRouteGuideStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-           blockingStub = RouteGuideGrpc.newBlockingStub(channel).build(channel, callOptions);
-           futureStub = RouteGuideGrpc.newFutureStub(channel).build(channel, callOptions);
-           stub = RouteGuideGrpc.newStub(channel).build(channel, callOptions);
+        public DubboRouteGuideStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+            this.url = url;
+            this.referenceConfig = referenceConfig;
+
+            blockingStub = RouteGuideGrpc.newBlockingStub(channel).build(channel, callOptions);
+            futureStub = RouteGuideGrpc.newFutureStub(channel).build(channel, callOptions);
+            stub = RouteGuideGrpc.newStub(channel).build(channel, callOptions);
         }
 
         /**
@@ -37,15 +51,21 @@ public final class DubboRouteGuideGrpc {
          * </pre>
          */
         public io.grpc.examples.routeguide.Feature getFeature(io.grpc.examples.routeguide.Point request) {
-            return blockingStub.getFeature(request);
+            return blockingStub
+                .withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS)
+                .getFeature(request);
         }
 
         public com.google.common.util.concurrent.ListenableFuture<io.grpc.examples.routeguide.Feature> getFeatureAsync(io.grpc.examples.routeguide.Point request) {
-            return futureStub.getFeature(request);
+            return futureStub
+                .withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS)
+                .getFeature(request);
         }
 
         public void getFeature(io.grpc.examples.routeguide.Point request, io.grpc.stub.StreamObserver<io.grpc.examples.routeguide.Feature> responseObserver){
-            stub.getFeature(request, responseObserver);
+            stub
+                .withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS)
+                .getFeature(request, responseObserver);
         }
 
         /**
@@ -59,11 +79,15 @@ public final class DubboRouteGuideGrpc {
          * </pre>
          */
         public java.util.Iterator<io.grpc.examples.routeguide.Feature> listFeatures(io.grpc.examples.routeguide.Rectangle request) {
-            return blockingStub.listFeatures(request);
+            return blockingStub
+                .withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS)
+                .listFeatures(request);
         }
 
         public void listFeatures(io.grpc.examples.routeguide.Rectangle request, io.grpc.stub.StreamObserver<io.grpc.examples.routeguide.Feature> responseObserver) {
-            stub.listFeatures(request, responseObserver);
+            stub
+                .withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS)
+                .listFeatures(request, responseObserver);
         }
 
         /**
@@ -75,7 +99,9 @@ public final class DubboRouteGuideGrpc {
          * </pre>
          */
         public io.grpc.stub.StreamObserver<io.grpc.examples.routeguide.Point> recordRoute(io.grpc.stub.StreamObserver<io.grpc.examples.routeguide.RouteSummary> responseObserver) {
-            return stub.recordRoute(responseObserver);
+            return stub
+                .withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS)
+                .recordRoute(responseObserver);
         }
         /**
          * <pre>
@@ -86,12 +112,14 @@ public final class DubboRouteGuideGrpc {
          * </pre>
          */
         public io.grpc.stub.StreamObserver<io.grpc.examples.routeguide.RouteNote> routeChat(io.grpc.stub.StreamObserver<io.grpc.examples.routeguide.RouteNote> responseObserver) {
-            return stub.routeChat(responseObserver);
+            return stub
+                .withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS)
+                .routeChat(responseObserver);
         }
     }
 
-    public static DubboRouteGuideStub getDubboStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new DubboRouteGuideStub(channel, callOptions);
+    public static DubboRouteGuideStub getDubboStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+      return new DubboRouteGuideStub(channel, callOptions, url, referenceConfig);
     }
 
     public interface IRouteGuide {
@@ -269,21 +297,21 @@ public final class DubboRouteGuideGrpc {
                               proxiedImpl, METHODID_GET_FEATURE)))
                       .addMethod(
                         io.grpc.examples.routeguide.RouteGuideGrpc.getListFeaturesMethod(),
-                        asyncUnaryCall(
+                        asyncServerStreamingCall(
                           new MethodHandlers<
                              io.grpc.examples.routeguide.Rectangle,
                              io.grpc.examples.routeguide.Feature>(
                               proxiedImpl, METHODID_LIST_FEATURES)))
                       .addMethod(
                         io.grpc.examples.routeguide.RouteGuideGrpc.getRecordRouteMethod(),
-                        asyncUnaryCall(
+                        asyncClientStreamingCall(
                           new MethodHandlers<
                              io.grpc.examples.routeguide.Point,
                              io.grpc.examples.routeguide.RouteSummary>(
                               proxiedImpl, METHODID_RECORD_ROUTE)))
                       .addMethod(
                         io.grpc.examples.routeguide.RouteGuideGrpc.getRouteChatMethod(),
-                        asyncUnaryCall(
+                        asyncBidiStreamingCall(
                           new MethodHandlers<
                              io.grpc.examples.routeguide.RouteNote,
                              io.grpc.examples.routeguide.RouteNote>(
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Feature.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Feature.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Feature.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Feature.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabase.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabase.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabase.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabase.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabaseOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabaseOrBuilder.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabaseOrBuilder.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabaseOrBuilder.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureOrBuilder.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureOrBuilder.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureOrBuilder.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/PointOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/PointOrBuilder.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/PointOrBuilder.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/PointOrBuilder.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Rectangle.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Rectangle.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Rectangle.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Rectangle.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RectangleOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RectangleOrBuilder.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RectangleOrBuilder.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RectangleOrBuilder.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideGrpc.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideGrpc.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideGrpc.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideProto.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideProto.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideProto.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideProto.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNote.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNote.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNote.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNote.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNoteOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNoteOrBuilder.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNoteOrBuilder.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNoteOrBuilder.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummary.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummary.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummary.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummary.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummaryOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummaryOrBuilder.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummaryOrBuilder.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummaryOrBuilder.java
diff --git a/java/dubbo-samples-grpc/pom.xml b/java/dubbo-samples-grpc/dubbo-samples-original/pom.xml
similarity index 92%
copy from java/dubbo-samples-grpc/pom.xml
copy to java/dubbo-samples-grpc/dubbo-samples-original/pom.xml
index 9c284e7..59a7324 100644
--- a/java/dubbo-samples-grpc/pom.xml
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/pom.xml
@@ -23,7 +23,7 @@
 
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-samples-grpc</artifactId>
+    <artifactId>dubbo-samples-original-grpc</artifactId>
 
     <properties>
         <source.level>1.8</source.level>
@@ -41,6 +41,8 @@
         <zookeeper.port>2181</zookeeper.port>
         <main-class>org.apache.dubbo.samples.basic.BasicProvider</main-class>
         <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <grpc.version>1.19.0</grpc.version>
+        <dubbo.compiler.version>0.0.1-SNAPSHOT</dubbo.compiler.version>
     </properties>
 
     <dependencies>
@@ -52,22 +54,22 @@
         <dependency>
             <groupId>io.grpc</groupId>
             <artifactId>grpc-netty</artifactId>
-            <version>1.19.0</version>
+            <version>${grpc.version}</version>
         </dependency>
         <dependency>
             <groupId>io.grpc</groupId>
             <artifactId>grpc-netty-shaded</artifactId>
-            <version>1.19.0</version>
+            <version>${grpc.version}</version>
         </dependency>
         <dependency>
             <groupId>io.grpc</groupId>
             <artifactId>grpc-protobuf</artifactId>
-            <version>1.19.0</version>
+            <version>${grpc.version}</version>
         </dependency>
         <dependency>
             <groupId>io.grpc</groupId>
             <artifactId>grpc-stub</artifactId>
-            <version>1.19.0</version>
+            <version>${grpc.version}</version>
         </dependency>
         <dependency>
             <groupId>com.google.protobuf</groupId>
@@ -235,11 +237,19 @@
                 <version>0.5.1</version>
                 <configuration>
                     <protocArtifact>com.google.protobuf:protoc:3.7.1:exe:${os.detected.classifier}</protocArtifact>
-                    <pluginId>dubbo-grpc-java</pluginId>
-                    <pluginArtifact>org.apache.dubbo:protoc-gen-dubbo-java:1.19.0-SNAPSHOT:exe:${os.detected.classifier}</pluginArtifact>
+                    <pluginId>grpc-java</pluginId>
+                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact>
                     <outputDirectory>build/generated/source/proto/main/java</outputDirectory>
                     <clearOutputDirectory>false</clearOutputDirectory>
-                    <pluginParameter>grpc</pluginParameter>
+                    <protocPlugins>
+                        <protocPlugin>
+                            <id>dubbo-grpc</id>
+                            <groupId>org.apache.dubbo</groupId>
+                            <artifactId>dubbo-compiler</artifactId>
+                            <version>${dubbo.compiler.version}</version>
+                            <mainClass>org.apache.dubbo.gen.grpc.DubboGrpcGenerator</mainClass>
+                        </protocPlugin>
+                    </protocPlugins>
                 </configuration>
                 <executions>
                     <execution>
diff --git a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/BasicConsumer.java b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/BasicConsumer.java
similarity index 93%
rename from java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/BasicConsumer.java
rename to java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/BasicConsumer.java
index 537f933..7004d68 100644
--- a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/BasicConsumer.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/BasicConsumer.java
@@ -25,13 +25,13 @@ import com.google.common.annotations.VisibleForTesting;
 import com.google.protobuf.Message;
 import io.grpc.Status;
 import io.grpc.StatusRuntimeException;
-import io.grpc.examples.helloworld.GreeterGrpc;
+import io.grpc.examples.helloworld.DubboGreeterGrpc;
 import io.grpc.examples.helloworld.HelloReply;
 import io.grpc.examples.helloworld.HelloRequest;
 import io.grpc.examples.routeguide.Feature;
 import io.grpc.examples.routeguide.Point;
 import io.grpc.examples.routeguide.Rectangle;
-import io.grpc.examples.routeguide.RouteGuideGrpc;
+import io.grpc.examples.routeguide.DubboRouteGuideGrpc;
 import io.grpc.examples.routeguide.RouteNote;
 import io.grpc.examples.routeguide.RouteSummary;
 import io.grpc.stub.StreamObserver;
@@ -48,7 +48,7 @@ import java.util.logging.Logger;
 
 public class BasicConsumer {
 
-    private static RouteGuideGrpc.IRouteGuide routeGuide;
+    private static DubboRouteGuideGrpc.IRouteGuide routeGuide;
 
     public static void main(String[] args) throws Exception {
         ClassPathXmlApplicationContext context =
@@ -59,21 +59,17 @@ public class BasicConsumer {
          * greeter sample
          */
         System.out.println("-------- Start simple unary call test -------- ");
-        GreeterGrpc.IGreeter greeter = (GreeterGrpc.IGreeter) context.getBean("greeter");
+        DubboGreeterGrpc.IGreeter greeter = (DubboGreeterGrpc.IGreeter) context.getBean("greeter");
 
         HelloReply reply = greeter.sayHello(HelloRequest.newBuilder().setName("world!").build());
         System.out.println("Result: " + reply.getMessage());
-        System.out.println("-------- End simple unary call test -------- \n");
-
-        System.out.print("Type in any word and press `Enter` to run stream sample: ");
-
-        System.in.read();
+        System.out.println("-------- End simple unary call test -------- \n\n\n");
 
         /**
          * route guide sample
          */
         System.out.println("-------- Start stream call test -------- ");
-        RouteGuideGrpc.IRouteGuide routeGuide = (RouteGuideGrpc.IRouteGuide) context.getBean("routeguide");
+        DubboRouteGuideGrpc.IRouteGuide routeGuide = (DubboRouteGuideGrpc.IRouteGuide) context.getBean("routeguide");
         RouteGuideClient streamClient = new RouteGuideClient(routeGuide);
         try {
             List<Feature> features;
@@ -86,14 +82,14 @@ public class BasicConsumer {
             // Looking for a valid feature
             streamClient.getFeature(409146138, -746188906);
 
-            // Feature missing.
-            streamClient.getFeature(0, 0);
-
-            // Looking for features between 40, -75 and 42, -73.
-            streamClient.listFeatures(400000000, -750000000, 420000000, -730000000);
-
-            // Record a few randomly selected points from the features file.
-            streamClient.recordRoute(features, 10);
+//            // Feature missing.
+//            streamClient.getFeature(0, 0);
+//
+//            // Looking for features between 40, -75 and 42, -73.
+//            streamClient.listFeatures(400000000, -750000000, 420000000, -730000000);
+//
+//            // Record a few randomly selected points from the features file.
+//            streamClient.recordRoute(features, 10);
 
             // Send and receive some notes.
             CountDownLatch finishLatch = streamClient.routeChat();
@@ -117,12 +113,12 @@ public class BasicConsumer {
         private Random random = new Random();
         private TestHelper testHelper;
 
-        private RouteGuideGrpc.IRouteGuide routeGuide;
+        private DubboRouteGuideGrpc.IRouteGuide routeGuide;
 
         /**
          * Construct client for accessing RouteGuide server using the existing channel.
          */
-        public RouteGuideClient(RouteGuideGrpc.IRouteGuide routeGuide) {
+        public RouteGuideClient(DubboRouteGuideGrpc.IRouteGuide routeGuide) {
             this.routeGuide = routeGuide;
         }
 
diff --git a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java
diff --git a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/EmbeddedZooKeeper.java b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/EmbeddedZooKeeper.java
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/EmbeddedZooKeeper.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/EmbeddedZooKeeper.java
diff --git a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/comtomize/MyClientStreamInterceptor.java b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/comtomize/MyClientStreamInterceptor.java
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/comtomize/MyClientStreamInterceptor.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/comtomize/MyClientStreamInterceptor.java
diff --git a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/comtomize/MyGrpcConfigurator.java b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/comtomize/MyGrpcConfigurator.java
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/comtomize/MyGrpcConfigurator.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/comtomize/MyGrpcConfigurator.java
diff --git a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/comtomize/MyServerStreamInterceptor.java b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/comtomize/MyServerStreamInterceptor.java
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/comtomize/MyServerStreamInterceptor.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/comtomize/MyServerStreamInterceptor.java
diff --git a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/impl/helloworld/GrpcGreeterImpl.java b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/impl/helloworld/GrpcGreeterImpl.java
similarity index 91%
copy from java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/impl/helloworld/GrpcGreeterImpl.java
copy to java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/impl/helloworld/GrpcGreeterImpl.java
index 36a0ab9..ac7c576 100644
--- a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/impl/helloworld/GrpcGreeterImpl.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/impl/helloworld/GrpcGreeterImpl.java
@@ -16,12 +16,12 @@
  */
 package org.apache.dubbo.samples.basic.impl.helloworld;
 
-import io.grpc.examples.helloworld.GreeterGrpc;
+import io.grpc.examples.helloworld.DubboGreeterGrpc;
 import io.grpc.examples.helloworld.HelloReply;
 import io.grpc.examples.helloworld.HelloRequest;
 import io.grpc.stub.StreamObserver;
 
-public class GrpcGreeterImpl extends GreeterGrpc.GreeterImplBase {
+public class GrpcGreeterImpl extends DubboGreeterGrpc.GreeterImplBase {
 
     @Override
     public void sayHello(HelloRequest request, StreamObserver<HelloReply> responseObserver) {
diff --git a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/impl/routeguide/RouteGuideImpl.java b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/impl/routeguide/RouteGuideImpl.java
similarity index 98%
rename from java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/impl/routeguide/RouteGuideImpl.java
rename to java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/impl/routeguide/RouteGuideImpl.java
index e4d54b5..f5d0c48 100644
--- a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/impl/routeguide/RouteGuideImpl.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/impl/routeguide/RouteGuideImpl.java
@@ -22,7 +22,7 @@ import org.apache.dubbo.common.logger.LoggerFactory;
 import io.grpc.examples.routeguide.Feature;
 import io.grpc.examples.routeguide.Point;
 import io.grpc.examples.routeguide.Rectangle;
-import io.grpc.examples.routeguide.RouteGuideGrpc;
+import io.grpc.examples.routeguide.DubboRouteGuideGrpc;
 import io.grpc.examples.routeguide.RouteNote;
 import io.grpc.examples.routeguide.RouteSummary;
 import io.grpc.stub.StreamObserver;
@@ -43,7 +43,7 @@ import static java.lang.Math.sqrt;
 import static java.lang.Math.toRadians;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 
-public class RouteGuideImpl extends RouteGuideGrpc.RouteGuideImplBase {
+public class RouteGuideImpl extends DubboRouteGuideGrpc.RouteGuideImplBase {
     private static final Logger logger = LoggerFactory.getLogger(RouteGuideImpl.class);
 
     private final Collection<Feature> features;
diff --git a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/impl/routeguide/RouteGuideUtil.java b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/impl/routeguide/RouteGuideUtil.java
similarity index 100%
rename from java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/impl/routeguide/RouteGuideUtil.java
rename to java/dubbo-samples-grpc/dubbo-samples-original/src/main/java/org/apache/dubbo/samples/basic/impl/routeguide/RouteGuideUtil.java
diff --git a/java/dubbo-samples-grpc/src/main/proto/hello_streaming.proto b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/proto/hello_streaming.proto
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/proto/hello_streaming.proto
copy to java/dubbo-samples-grpc/dubbo-samples-original/src/main/proto/hello_streaming.proto
diff --git a/java/dubbo-samples-grpc/src/main/proto/helloworld.proto b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/proto/helloworld.proto
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/proto/helloworld.proto
copy to java/dubbo-samples-grpc/dubbo-samples-original/src/main/proto/helloworld.proto
diff --git a/java/dubbo-samples-grpc/src/main/proto/route_guide.proto b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/proto/route_guide.proto
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/proto/route_guide.proto
copy to java/dubbo-samples-grpc/dubbo-samples-original/src/main/proto/route_guide.proto
diff --git a/java/dubbo-samples-grpc/src/main/resources/META-INF/services/org.apache.dubbo.rpc.protocol.grpc.interceptors.ClientInterceptor b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/META-INF/services/org.apache.dubbo.rpc.protocol.grpc.interceptors.ClientInterceptor
similarity index 100%
rename from java/dubbo-samples-grpc/src/main/resources/META-INF/services/org.apache.dubbo.rpc.protocol.grpc.interceptors.ClientInterceptor
rename to java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/META-INF/services/org.apache.dubbo.rpc.protocol.grpc.interceptors.ClientInterceptor
diff --git a/java/dubbo-samples-grpc/src/main/resources/META-INF/services/org.apache.dubbo.rpc.protocol.grpc.interceptors.GrpcConfigurator b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/META-INF/services/org.apache.dubbo.rpc.protocol.grpc.interceptors.GrpcConfigurator
similarity index 100%
rename from java/dubbo-samples-grpc/src/main/resources/META-INF/services/org.apache.dubbo.rpc.protocol.grpc.interceptors.GrpcConfigurator
rename to java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/META-INF/services/org.apache.dubbo.rpc.protocol.grpc.interceptors.GrpcConfigurator
diff --git a/java/dubbo-samples-grpc/src/main/resources/META-INF/services/org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerInterceptor b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/META-INF/services/org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerInterceptor
similarity index 100%
rename from java/dubbo-samples-grpc/src/main/resources/META-INF/services/org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerInterceptor
rename to java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/META-INF/services/org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerInterceptor
diff --git a/java/dubbo-samples-grpc/src/main/resources/log4j.properties b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/log4j.properties
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/resources/log4j.properties
copy to java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/log4j.properties
diff --git a/java/dubbo-samples-grpc/src/main/resources/org/apache/dubbo/samples/basic/impl/routeguide/route_guide_db.json b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/org/apache/dubbo/samples/basic/impl/routeguide/route_guide_db.json
similarity index 100%
rename from java/dubbo-samples-grpc/src/main/resources/org/apache/dubbo/samples/basic/impl/routeguide/route_guide_db.json
rename to java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/org/apache/dubbo/samples/basic/impl/routeguide/route_guide_db.json
diff --git a/java/dubbo-samples-grpc/src/main/resources/spring/dubbo-demo-consumer.xml b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/spring/dubbo-demo-consumer.xml
similarity index 94%
copy from java/dubbo-samples-grpc/src/main/resources/spring/dubbo-demo-consumer.xml
copy to java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/spring/dubbo-demo-consumer.xml
index c9b35fd..fb11ecd 100644
--- a/java/dubbo-samples-grpc/src/main/resources/spring/dubbo-demo-consumer.xml
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/spring/dubbo-demo-consumer.xml
@@ -27,8 +27,8 @@
 
     <dubbo:registry address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
 
-    <dubbo:reference id="greeter" interface="io.grpc.examples.helloworld.GreeterGrpc$IGreeter" protocol="grpc"/>
-    <dubbo:reference id="routeguide" interface="io.grpc.examples.routeguide.RouteGuideGrpc$IRouteGuide"
+    <dubbo:reference id="greeter" interface="io.grpc.examples.helloworld.DubboGreeterGrpc$IGreeter" protocol="grpc"/>
+    <dubbo:reference id="routeguide" interface="io.grpc.examples.routeguide.DubboRouteGuideGrpc$IRouteGuide"
                      protocol="grpc"/>
 
 </beans>
diff --git a/java/dubbo-samples-grpc/src/main/resources/spring/dubbo-demo-provider.xml b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/spring/dubbo-demo-provider.xml
similarity index 88%
copy from java/dubbo-samples-grpc/src/main/resources/spring/dubbo-demo-provider.xml
copy to java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/spring/dubbo-demo-provider.xml
index ebabd4b..b734ac0 100644
--- a/java/dubbo-samples-grpc/src/main/resources/spring/dubbo-demo-provider.xml
+++ b/java/dubbo-samples-grpc/dubbo-samples-original/src/main/resources/spring/dubbo-demo-provider.xml
@@ -30,9 +30,9 @@
     <dubbo:registry address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
 
     <bean id="greeter" class="org.apache.dubbo.samples.basic.impl.helloworld.GrpcGreeterImpl"/>
-    <dubbo:service interface="io.grpc.examples.helloworld.GreeterGrpc$IGreeter" ref="greeter" protocol="grpc"/>
+    <dubbo:service interface="io.grpc.examples.helloworld.DubboGreeterGrpc$IGreeter" ref="greeter" protocol="grpc"/>
 
     <bean id="routeguide" class="org.apache.dubbo.samples.basic.impl.routeguide.RouteGuideImpl"/>
-    <dubbo:service interface="io.grpc.examples.routeguide.RouteGuideGrpc$IRouteGuide" ref="routeguide" protocol="grpc"/>
+    <dubbo:service interface="io.grpc.examples.routeguide.DubboRouteGuideGrpc$IRouteGuide" ref="routeguide" protocol="grpc"/>
 
 </beans>
diff --git a/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/GreeterGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/GreeterGrpc.java
new file mode 100644
index 0000000..214ac7a
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/GreeterGrpc.java
@@ -0,0 +1,307 @@
+package io.grpc.examples.helloworld;
+
+import static io.grpc.MethodDescriptor.generateFullMethodName;
+import static io.grpc.stub.ClientCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncUnaryCall;
+import static io.grpc.stub.ClientCalls.blockingServerStreamingCall;
+import static io.grpc.stub.ClientCalls.blockingUnaryCall;
+import static io.grpc.stub.ClientCalls.futureUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
+
+/**
+ * <pre>
+ * The greeting service definition.
+ * </pre>
+ */
+@javax.annotation.Generated(
+    value = "by gRPC proto compiler (version 1.19.0)",
+    comments = "Source: helloworld.proto")
+public final class GreeterGrpc {
+
+  private GreeterGrpc() {}
+
+  public static final String SERVICE_NAME = "helloworld.Greeter";
+
+  // Static method descriptors that strictly reflect the proto.
+  private static volatile io.grpc.MethodDescriptor<io.grpc.examples.helloworld.HelloRequest,
+      io.grpc.examples.helloworld.HelloReply> getSayHelloMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "SayHello",
+      requestType = io.grpc.examples.helloworld.HelloRequest.class,
+      responseType = io.grpc.examples.helloworld.HelloReply.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+  public static io.grpc.MethodDescriptor<io.grpc.examples.helloworld.HelloRequest,
+      io.grpc.examples.helloworld.HelloReply> getSayHelloMethod() {
+    io.grpc.MethodDescriptor<io.grpc.examples.helloworld.HelloRequest, io.grpc.examples.helloworld.HelloReply> getSayHelloMethod;
+    if ((getSayHelloMethod = GreeterGrpc.getSayHelloMethod) == null) {
+      synchronized (GreeterGrpc.class) {
+        if ((getSayHelloMethod = GreeterGrpc.getSayHelloMethod) == null) {
+          GreeterGrpc.getSayHelloMethod = getSayHelloMethod = 
+              io.grpc.MethodDescriptor.<io.grpc.examples.helloworld.HelloRequest, io.grpc.examples.helloworld.HelloReply>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+              .setFullMethodName(generateFullMethodName(
+                  "helloworld.Greeter", "SayHello"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  io.grpc.examples.helloworld.HelloRequest.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  io.grpc.examples.helloworld.HelloReply.getDefaultInstance()))
+                  .setSchemaDescriptor(new GreeterMethodDescriptorSupplier("SayHello"))
+                  .build();
+          }
+        }
+     }
+     return getSayHelloMethod;
+  }
+
+  /**
+   * Creates a new async stub that supports all call types for the service
+   */
+  public static GreeterStub newStub(io.grpc.Channel channel) {
+    return new GreeterStub(channel);
+  }
+
+  /**
+   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
+   */
+  public static GreeterBlockingStub newBlockingStub(
+      io.grpc.Channel channel) {
+    return new GreeterBlockingStub(channel);
+  }
+
+  /**
+   * Creates a new ListenableFuture-style stub that supports unary calls on the service
+   */
+  public static GreeterFutureStub newFutureStub(
+      io.grpc.Channel channel) {
+    return new GreeterFutureStub(channel);
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static abstract class GreeterImplBase implements io.grpc.BindableService {
+
+    /**
+     * <pre>
+     * Sends a greeting
+     * </pre>
+     */
+    public void sayHello(io.grpc.examples.helloworld.HelloRequest request,
+        io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply> responseObserver) {
+      asyncUnimplementedUnaryCall(getSayHelloMethod(), responseObserver);
+    }
+
+    @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
+      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+          .addMethod(
+            getSayHelloMethod(),
+            asyncUnaryCall(
+              new MethodHandlers<
+                io.grpc.examples.helloworld.HelloRequest,
+                io.grpc.examples.helloworld.HelloReply>(
+                  this, METHODID_SAY_HELLO)))
+          .build();
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class GreeterStub extends io.grpc.stub.AbstractStub<GreeterStub> {
+    private GreeterStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private GreeterStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected GreeterStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new GreeterStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Sends a greeting
+     * </pre>
+     */
+    public void sayHello(io.grpc.examples.helloworld.HelloRequest request,
+        io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply> responseObserver) {
+      asyncUnaryCall(
+          getChannel().newCall(getSayHelloMethod(), getCallOptions()), request, responseObserver);
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class GreeterBlockingStub extends io.grpc.stub.AbstractStub<GreeterBlockingStub> {
+    private GreeterBlockingStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private GreeterBlockingStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected GreeterBlockingStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new GreeterBlockingStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Sends a greeting
+     * </pre>
+     */
+    public io.grpc.examples.helloworld.HelloReply sayHello(io.grpc.examples.helloworld.HelloRequest request) {
+      return blockingUnaryCall(
+          getChannel(), getSayHelloMethod(), getCallOptions(), request);
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class GreeterFutureStub extends io.grpc.stub.AbstractStub<GreeterFutureStub> {
+    private GreeterFutureStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private GreeterFutureStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected GreeterFutureStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new GreeterFutureStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Sends a greeting
+     * </pre>
+     */
+    public com.google.common.util.concurrent.ListenableFuture<io.grpc.examples.helloworld.HelloReply> sayHello(
+        io.grpc.examples.helloworld.HelloRequest request) {
+      return futureUnaryCall(
+          getChannel().newCall(getSayHelloMethod(), getCallOptions()), request);
+    }
+  }
+
+  private static final int METHODID_SAY_HELLO = 0;
+
+  private static final class MethodHandlers<Req, Resp> implements
+      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+    private final GreeterImplBase serviceImpl;
+    private final int methodId;
+
+    MethodHandlers(GreeterImplBase serviceImpl, int methodId) {
+      this.serviceImpl = serviceImpl;
+      this.methodId = methodId;
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        case METHODID_SAY_HELLO:
+          serviceImpl.sayHello((io.grpc.examples.helloworld.HelloRequest) request,
+              (io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply>) responseObserver);
+          break;
+        default:
+          throw new AssertionError();
+      }
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public io.grpc.stub.StreamObserver<Req> invoke(
+        io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        default:
+          throw new AssertionError();
+      }
+    }
+  }
+
+  private static abstract class GreeterBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+    GreeterBaseDescriptorSupplier() {}
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+      return io.grpc.examples.helloworld.HelloWorldProto.getDescriptor();
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+      return getFileDescriptor().findServiceByName("Greeter");
+    }
+  }
+
+  private static final class GreeterFileDescriptorSupplier
+      extends GreeterBaseDescriptorSupplier {
+    GreeterFileDescriptorSupplier() {}
+  }
+
+  private static final class GreeterMethodDescriptorSupplier
+      extends GreeterBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
+    private final String methodName;
+
+    GreeterMethodDescriptorSupplier(String methodName) {
+      this.methodName = methodName;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+      return getServiceDescriptor().findMethodByName(methodName);
+    }
+  }
+
+  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+
+  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+    io.grpc.ServiceDescriptor result = serviceDescriptor;
+    if (result == null) {
+      synchronized (GreeterGrpc.class) {
+        result = serviceDescriptor;
+        if (result == null) {
+          serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
+              .setSchemaDescriptor(new GreeterFileDescriptorSupplier())
+              .addMethod(getSayHelloMethod())
+              .build();
+        }
+      }
+    }
+    return result;
+  }
+}
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReply.java
similarity index 58%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReply.java
index 3a96ea0..12f90f2 100644
--- a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReply.java
@@ -1,28 +1,26 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: route_guide.proto
+// source: helloworld.proto
 
-package io.grpc.examples.routeguide;
+package io.grpc.examples.helloworld;
 
 /**
  * <pre>
- * Points are represented as latitude-longitude pairs in the E7 representation
- * (degrees multiplied by 10**7 and rounded to the nearest integer).
- * Latitudes should be in the range +/- 90 degrees and longitude should be in
- * the range +/- 180 degrees (inclusive).
+ * The response message containing the greetings
  * </pre>
  *
- * Protobuf type {@code routeguide.Point}
+ * Protobuf type {@code helloworld.HelloReply}
  */
-public  final class Point extends
+public  final class HelloReply extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:routeguide.Point)
-    PointOrBuilder {
+    // @@protoc_insertion_point(message_implements:helloworld.HelloReply)
+    HelloReplyOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use Point.newBuilder() to construct.
-  private Point(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloReply.newBuilder() to construct.
+  private HelloReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private Point() {
+  private HelloReply() {
+    message_ = "";
   }
 
   @java.lang.Override
@@ -30,7 +28,7 @@ private static final long serialVersionUID = 0L;
   getUnknownFields() {
     return this.unknownFields;
   }
-  private Point(
+  private HelloReply(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -49,14 +47,10 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 8: {
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
 
-            latitude_ = input.readInt32();
-            break;
-          }
-          case 16: {
-
-            longitude_ = input.readInt32();
+            message_ = s;
             break;
           }
           default: {
@@ -80,33 +74,49 @@ private static final long serialVersionUID = 0L;
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+    return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+    return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+            io.grpc.examples.helloworld.HelloReply.class, io.grpc.examples.helloworld.HelloReply.Builder.class);
   }
 
-  public static final int LATITUDE_FIELD_NUMBER = 1;
-  private int latitude_;
+  public static final int MESSAGE_FIELD_NUMBER = 1;
+  private volatile java.lang.Object message_;
   /**
-   * <code>int32 latitude = 1;</code>
+   * <code>string message = 1;</code>
    */
-  public int getLatitude() {
-    return latitude_;
+  public java.lang.String getMessage() {
+    java.lang.Object ref = message_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      message_ = s;
+      return s;
+    }
   }
-
-  public static final int LONGITUDE_FIELD_NUMBER = 2;
-  private int longitude_;
   /**
-   * <code>int32 longitude = 2;</code>
+   * <code>string message = 1;</code>
    */
-  public int getLongitude() {
-    return longitude_;
+  public com.google.protobuf.ByteString
+      getMessageBytes() {
+    java.lang.Object ref = message_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      message_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
   }
 
   private byte memoizedIsInitialized = -1;
@@ -123,11 +133,8 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (latitude_ != 0) {
-      output.writeInt32(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      output.writeInt32(2, longitude_);
+    if (!getMessageBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, message_);
     }
     unknownFields.writeTo(output);
   }
@@ -138,13 +145,8 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (latitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(2, longitude_);
+    if (!getMessageBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, message_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -156,15 +158,13 @@ private static final long serialVersionUID = 0L;
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof io.grpc.examples.routeguide.Point)) {
+    if (!(obj instanceof io.grpc.examples.helloworld.HelloReply)) {
       return super.equals(obj);
     }
-    io.grpc.examples.routeguide.Point other = (io.grpc.examples.routeguide.Point) obj;
+    io.grpc.examples.helloworld.HelloReply other = (io.grpc.examples.helloworld.HelloReply) obj;
 
-    if (getLatitude()
-        != other.getLatitude()) return false;
-    if (getLongitude()
-        != other.getLongitude()) return false;
+    if (!getMessage()
+        .equals(other.getMessage())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -176,78 +176,76 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLatitude();
-    hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLongitude();
+    hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
+    hash = (53 * hash) + getMessage().hashCode();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(byte[] data)
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(java.io.InputStream input)
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(java.io.InputStream input)
+  public static io.grpc.examples.helloworld.HelloReply parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseDelimitedFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -260,7 +258,7 @@ private static final long serialVersionUID = 0L;
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(io.grpc.examples.routeguide.Point prototype) {
+  public static Builder newBuilder(io.grpc.examples.helloworld.HelloReply prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -277,32 +275,29 @@ private static final long serialVersionUID = 0L;
   }
   /**
    * <pre>
-   * Points are represented as latitude-longitude pairs in the E7 representation
-   * (degrees multiplied by 10**7 and rounded to the nearest integer).
-   * Latitudes should be in the range +/- 90 degrees and longitude should be in
-   * the range +/- 180 degrees (inclusive).
+   * The response message containing the greetings
    * </pre>
    *
-   * Protobuf type {@code routeguide.Point}
+   * Protobuf type {@code helloworld.HelloReply}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:routeguide.Point)
-      io.grpc.examples.routeguide.PointOrBuilder {
+      // @@protoc_insertion_point(builder_implements:helloworld.HelloReply)
+      io.grpc.examples.helloworld.HelloReplyOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+              io.grpc.examples.helloworld.HelloReply.class, io.grpc.examples.helloworld.HelloReply.Builder.class);
     }
 
-    // Construct using io.grpc.examples.routeguide.Point.newBuilder()
+    // Construct using io.grpc.examples.helloworld.HelloReply.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -320,9 +315,7 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      latitude_ = 0;
-
-      longitude_ = 0;
+      message_ = "";
 
       return this;
     }
@@ -330,17 +323,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_descriptor;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
-      return io.grpc.examples.routeguide.Point.getDefaultInstance();
+    public io.grpc.examples.helloworld.HelloReply getDefaultInstanceForType() {
+      return io.grpc.examples.helloworld.HelloReply.getDefaultInstance();
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point build() {
-      io.grpc.examples.routeguide.Point result = buildPartial();
+    public io.grpc.examples.helloworld.HelloReply build() {
+      io.grpc.examples.helloworld.HelloReply result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -348,10 +341,9 @@ private static final long serialVersionUID = 0L;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point buildPartial() {
-      io.grpc.examples.routeguide.Point result = new io.grpc.examples.routeguide.Point(this);
-      result.latitude_ = latitude_;
-      result.longitude_ = longitude_;
+    public io.grpc.examples.helloworld.HelloReply buildPartial() {
+      io.grpc.examples.helloworld.HelloReply result = new io.grpc.examples.helloworld.HelloReply(this);
+      result.message_ = message_;
       onBuilt();
       return result;
     }
@@ -390,21 +382,19 @@ private static final long serialVersionUID = 0L;
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof io.grpc.examples.routeguide.Point) {
-        return mergeFrom((io.grpc.examples.routeguide.Point)other);
+      if (other instanceof io.grpc.examples.helloworld.HelloReply) {
+        return mergeFrom((io.grpc.examples.helloworld.HelloReply)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(io.grpc.examples.routeguide.Point other) {
-      if (other == io.grpc.examples.routeguide.Point.getDefaultInstance()) return this;
-      if (other.getLatitude() != 0) {
-        setLatitude(other.getLatitude());
-      }
-      if (other.getLongitude() != 0) {
-        setLongitude(other.getLongitude());
+    public Builder mergeFrom(io.grpc.examples.helloworld.HelloReply other) {
+      if (other == io.grpc.examples.helloworld.HelloReply.getDefaultInstance()) return this;
+      if (!other.getMessage().isEmpty()) {
+        message_ = other.message_;
+        onChanged();
       }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
@@ -421,11 +411,11 @@ private static final long serialVersionUID = 0L;
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      io.grpc.examples.routeguide.Point parsedMessage = null;
+      io.grpc.examples.helloworld.HelloReply parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (io.grpc.examples.routeguide.Point) e.getUnfinishedMessage();
+        parsedMessage = (io.grpc.examples.helloworld.HelloReply) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -435,54 +425,71 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private int latitude_ ;
+    private java.lang.Object message_ = "";
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public int getLatitude() {
-      return latitude_;
+    public java.lang.String getMessage() {
+      java.lang.Object ref = message_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        message_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder setLatitude(int value) {
-      
-      latitude_ = value;
-      onChanged();
-      return this;
+    public com.google.protobuf.ByteString
+        getMessageBytes() {
+      java.lang.Object ref = message_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        message_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder clearLatitude() {
-      
-      latitude_ = 0;
+    public Builder setMessage(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      message_ = value;
       onChanged();
       return this;
     }
-
-    private int longitude_ ;
-    /**
-     * <code>int32 longitude = 2;</code>
-     */
-    public int getLongitude() {
-      return longitude_;
-    }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder setLongitude(int value) {
+    public Builder clearMessage() {
       
-      longitude_ = value;
+      message_ = getDefaultInstance().getMessage();
       onChanged();
       return this;
     }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder clearLongitude() {
+    public Builder setMessageBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
       
-      longitude_ = 0;
+      message_ = value;
       onChanged();
       return this;
     }
@@ -499,41 +506,41 @@ private static final long serialVersionUID = 0L;
     }
 
 
-    // @@protoc_insertion_point(builder_scope:routeguide.Point)
+    // @@protoc_insertion_point(builder_scope:helloworld.HelloReply)
   }
 
-  // @@protoc_insertion_point(class_scope:routeguide.Point)
-  private static final io.grpc.examples.routeguide.Point DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:helloworld.HelloReply)
+  private static final io.grpc.examples.helloworld.HelloReply DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new io.grpc.examples.routeguide.Point();
+    DEFAULT_INSTANCE = new io.grpc.examples.helloworld.HelloReply();
   }
 
-  public static io.grpc.examples.routeguide.Point getDefaultInstance() {
+  public static io.grpc.examples.helloworld.HelloReply getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<Point>
-      PARSER = new com.google.protobuf.AbstractParser<Point>() {
+  private static final com.google.protobuf.Parser<HelloReply>
+      PARSER = new com.google.protobuf.AbstractParser<HelloReply>() {
     @java.lang.Override
-    public Point parsePartialFrom(
+    public HelloReply parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new Point(input, extensionRegistry);
+      return new HelloReply(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<Point> parser() {
+  public static com.google.protobuf.Parser<HelloReply> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<Point> getParserForType() {
+  public com.google.protobuf.Parser<HelloReply> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
+  public io.grpc.examples.helloworld.HelloReply getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReplyOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReplyOrBuilder.java
new file mode 100644
index 0000000..eba408e
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReplyOrBuilder.java
@@ -0,0 +1,19 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: helloworld.proto
+
+package io.grpc.examples.helloworld;
+
+public interface HelloReplyOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:helloworld.HelloReply)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string message = 1;</code>
+   */
+  java.lang.String getMessage();
+  /**
+   * <code>string message = 1;</code>
+   */
+  com.google.protobuf.ByteString
+      getMessageBytes();
+}
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequest.java
similarity index 58%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequest.java
index 3a96ea0..720ae9a 100644
--- a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequest.java
@@ -1,28 +1,26 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: route_guide.proto
+// source: helloworld.proto
 
-package io.grpc.examples.routeguide;
+package io.grpc.examples.helloworld;
 
 /**
  * <pre>
- * Points are represented as latitude-longitude pairs in the E7 representation
- * (degrees multiplied by 10**7 and rounded to the nearest integer).
- * Latitudes should be in the range +/- 90 degrees and longitude should be in
- * the range +/- 180 degrees (inclusive).
+ * The request message containing the user's name.
  * </pre>
  *
- * Protobuf type {@code routeguide.Point}
+ * Protobuf type {@code helloworld.HelloRequest}
  */
-public  final class Point extends
+public  final class HelloRequest extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:routeguide.Point)
-    PointOrBuilder {
+    // @@protoc_insertion_point(message_implements:helloworld.HelloRequest)
+    HelloRequestOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use Point.newBuilder() to construct.
-  private Point(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloRequest.newBuilder() to construct.
+  private HelloRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private Point() {
+  private HelloRequest() {
+    name_ = "";
   }
 
   @java.lang.Override
@@ -30,7 +28,7 @@ private static final long serialVersionUID = 0L;
   getUnknownFields() {
     return this.unknownFields;
   }
-  private Point(
+  private HelloRequest(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -49,14 +47,10 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 8: {
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
 
-            latitude_ = input.readInt32();
-            break;
-          }
-          case 16: {
-
-            longitude_ = input.readInt32();
+            name_ = s;
             break;
           }
           default: {
@@ -80,33 +74,49 @@ private static final long serialVersionUID = 0L;
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+    return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+    return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+            io.grpc.examples.helloworld.HelloRequest.class, io.grpc.examples.helloworld.HelloRequest.Builder.class);
   }
 
-  public static final int LATITUDE_FIELD_NUMBER = 1;
-  private int latitude_;
+  public static final int NAME_FIELD_NUMBER = 1;
+  private volatile java.lang.Object name_;
   /**
-   * <code>int32 latitude = 1;</code>
+   * <code>string name = 1;</code>
    */
-  public int getLatitude() {
-    return latitude_;
+  public java.lang.String getName() {
+    java.lang.Object ref = name_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      name_ = s;
+      return s;
+    }
   }
-
-  public static final int LONGITUDE_FIELD_NUMBER = 2;
-  private int longitude_;
   /**
-   * <code>int32 longitude = 2;</code>
+   * <code>string name = 1;</code>
    */
-  public int getLongitude() {
-    return longitude_;
+  public com.google.protobuf.ByteString
+      getNameBytes() {
+    java.lang.Object ref = name_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      name_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
   }
 
   private byte memoizedIsInitialized = -1;
@@ -123,11 +133,8 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (latitude_ != 0) {
-      output.writeInt32(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      output.writeInt32(2, longitude_);
+    if (!getNameBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
     }
     unknownFields.writeTo(output);
   }
@@ -138,13 +145,8 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (latitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(2, longitude_);
+    if (!getNameBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -156,15 +158,13 @@ private static final long serialVersionUID = 0L;
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof io.grpc.examples.routeguide.Point)) {
+    if (!(obj instanceof io.grpc.examples.helloworld.HelloRequest)) {
       return super.equals(obj);
     }
-    io.grpc.examples.routeguide.Point other = (io.grpc.examples.routeguide.Point) obj;
+    io.grpc.examples.helloworld.HelloRequest other = (io.grpc.examples.helloworld.HelloRequest) obj;
 
-    if (getLatitude()
-        != other.getLatitude()) return false;
-    if (getLongitude()
-        != other.getLongitude()) return false;
+    if (!getName()
+        .equals(other.getName())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -176,78 +176,76 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLatitude();
-    hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLongitude();
+    hash = (37 * hash) + NAME_FIELD_NUMBER;
+    hash = (53 * hash) + getName().hashCode();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(byte[] data)
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(java.io.InputStream input)
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(java.io.InputStream input)
+  public static io.grpc.examples.helloworld.HelloRequest parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseDelimitedFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -260,7 +258,7 @@ private static final long serialVersionUID = 0L;
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(io.grpc.examples.routeguide.Point prototype) {
+  public static Builder newBuilder(io.grpc.examples.helloworld.HelloRequest prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -277,32 +275,29 @@ private static final long serialVersionUID = 0L;
   }
   /**
    * <pre>
-   * Points are represented as latitude-longitude pairs in the E7 representation
-   * (degrees multiplied by 10**7 and rounded to the nearest integer).
-   * Latitudes should be in the range +/- 90 degrees and longitude should be in
-   * the range +/- 180 degrees (inclusive).
+   * The request message containing the user's name.
    * </pre>
    *
-   * Protobuf type {@code routeguide.Point}
+   * Protobuf type {@code helloworld.HelloRequest}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:routeguide.Point)
-      io.grpc.examples.routeguide.PointOrBuilder {
+      // @@protoc_insertion_point(builder_implements:helloworld.HelloRequest)
+      io.grpc.examples.helloworld.HelloRequestOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+              io.grpc.examples.helloworld.HelloRequest.class, io.grpc.examples.helloworld.HelloRequest.Builder.class);
     }
 
-    // Construct using io.grpc.examples.routeguide.Point.newBuilder()
+    // Construct using io.grpc.examples.helloworld.HelloRequest.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -320,9 +315,7 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      latitude_ = 0;
-
-      longitude_ = 0;
+      name_ = "";
 
       return this;
     }
@@ -330,17 +323,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_descriptor;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
-      return io.grpc.examples.routeguide.Point.getDefaultInstance();
+    public io.grpc.examples.helloworld.HelloRequest getDefaultInstanceForType() {
+      return io.grpc.examples.helloworld.HelloRequest.getDefaultInstance();
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point build() {
-      io.grpc.examples.routeguide.Point result = buildPartial();
+    public io.grpc.examples.helloworld.HelloRequest build() {
+      io.grpc.examples.helloworld.HelloRequest result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -348,10 +341,9 @@ private static final long serialVersionUID = 0L;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point buildPartial() {
-      io.grpc.examples.routeguide.Point result = new io.grpc.examples.routeguide.Point(this);
-      result.latitude_ = latitude_;
-      result.longitude_ = longitude_;
+    public io.grpc.examples.helloworld.HelloRequest buildPartial() {
+      io.grpc.examples.helloworld.HelloRequest result = new io.grpc.examples.helloworld.HelloRequest(this);
+      result.name_ = name_;
       onBuilt();
       return result;
     }
@@ -390,21 +382,19 @@ private static final long serialVersionUID = 0L;
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof io.grpc.examples.routeguide.Point) {
-        return mergeFrom((io.grpc.examples.routeguide.Point)other);
+      if (other instanceof io.grpc.examples.helloworld.HelloRequest) {
+        return mergeFrom((io.grpc.examples.helloworld.HelloRequest)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(io.grpc.examples.routeguide.Point other) {
-      if (other == io.grpc.examples.routeguide.Point.getDefaultInstance()) return this;
-      if (other.getLatitude() != 0) {
-        setLatitude(other.getLatitude());
-      }
-      if (other.getLongitude() != 0) {
-        setLongitude(other.getLongitude());
+    public Builder mergeFrom(io.grpc.examples.helloworld.HelloRequest other) {
+      if (other == io.grpc.examples.helloworld.HelloRequest.getDefaultInstance()) return this;
+      if (!other.getName().isEmpty()) {
+        name_ = other.name_;
+        onChanged();
       }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
@@ -421,11 +411,11 @@ private static final long serialVersionUID = 0L;
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      io.grpc.examples.routeguide.Point parsedMessage = null;
+      io.grpc.examples.helloworld.HelloRequest parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (io.grpc.examples.routeguide.Point) e.getUnfinishedMessage();
+        parsedMessage = (io.grpc.examples.helloworld.HelloRequest) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -435,54 +425,71 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private int latitude_ ;
+    private java.lang.Object name_ = "";
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public int getLatitude() {
-      return latitude_;
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        name_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder setLatitude(int value) {
-      
-      latitude_ = value;
-      onChanged();
-      return this;
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder clearLatitude() {
-      
-      latitude_ = 0;
+    public Builder setName(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      name_ = value;
       onChanged();
       return this;
     }
-
-    private int longitude_ ;
-    /**
-     * <code>int32 longitude = 2;</code>
-     */
-    public int getLongitude() {
-      return longitude_;
-    }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder setLongitude(int value) {
+    public Builder clearName() {
       
-      longitude_ = value;
+      name_ = getDefaultInstance().getName();
       onChanged();
       return this;
     }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder clearLongitude() {
+    public Builder setNameBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
       
-      longitude_ = 0;
+      name_ = value;
       onChanged();
       return this;
     }
@@ -499,41 +506,41 @@ private static final long serialVersionUID = 0L;
     }
 
 
-    // @@protoc_insertion_point(builder_scope:routeguide.Point)
+    // @@protoc_insertion_point(builder_scope:helloworld.HelloRequest)
   }
 
-  // @@protoc_insertion_point(class_scope:routeguide.Point)
-  private static final io.grpc.examples.routeguide.Point DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:helloworld.HelloRequest)
+  private static final io.grpc.examples.helloworld.HelloRequest DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new io.grpc.examples.routeguide.Point();
+    DEFAULT_INSTANCE = new io.grpc.examples.helloworld.HelloRequest();
   }
 
-  public static io.grpc.examples.routeguide.Point getDefaultInstance() {
+  public static io.grpc.examples.helloworld.HelloRequest getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<Point>
-      PARSER = new com.google.protobuf.AbstractParser<Point>() {
+  private static final com.google.protobuf.Parser<HelloRequest>
+      PARSER = new com.google.protobuf.AbstractParser<HelloRequest>() {
     @java.lang.Override
-    public Point parsePartialFrom(
+    public HelloRequest parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new Point(input, extensionRegistry);
+      return new HelloRequest(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<Point> parser() {
+  public static com.google.protobuf.Parser<HelloRequest> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<Point> getParserForType() {
+  public com.google.protobuf.Parser<HelloRequest> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
+  public io.grpc.examples.helloworld.HelloRequest getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequestOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequestOrBuilder.java
new file mode 100644
index 0000000..3568bc9
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequestOrBuilder.java
@@ -0,0 +1,19 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: helloworld.proto
+
+package io.grpc.examples.helloworld;
+
+public interface HelloRequestOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:helloworld.HelloRequest)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string name = 1;</code>
+   */
+  java.lang.String getName();
+  /**
+   * <code>string name = 1;</code>
+   */
+  com.google.protobuf.ByteString
+      getNameBytes();
+}
diff --git a/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloWorldProto.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloWorldProto.java
new file mode 100644
index 0000000..96527e6
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloWorldProto.java
@@ -0,0 +1,70 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: helloworld.proto
+
+package io.grpc.examples.helloworld;
+
+public final class HelloWorldProto {
+  private HelloWorldProto() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registerAllExtensions(
+        (com.google.protobuf.ExtensionRegistryLite) registry);
+  }
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_helloworld_HelloRequest_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_helloworld_HelloRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_helloworld_HelloReply_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_helloworld_HelloReply_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static  com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\020helloworld.proto\022\nhelloworld\"\034\n\014HelloR" +
+      "equest\022\014\n\004name\030\001 \001(\t\"\035\n\nHelloReply\022\017\n\007me" +
+      "ssage\030\001 \001(\t2I\n\007Greeter\022>\n\010SayHello\022\030.hel" +
+      "loworld.HelloRequest\032\026.helloworld.HelloR" +
+      "eply\"\000B6\n\033io.grpc.examples.helloworldB\017H" +
+      "elloWorldProtoP\001\242\002\003HLWb\006proto3"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
+          public com.google.protobuf.ExtensionRegistry assignDescriptors(
+              com.google.protobuf.Descriptors.FileDescriptor root) {
+            descriptor = root;
+            return null;
+          }
+        };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        }, assigner);
+    internal_static_helloworld_HelloRequest_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_helloworld_HelloRequest_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_helloworld_HelloRequest_descriptor,
+        new java.lang.String[] { "Name", });
+    internal_static_helloworld_HelloReply_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_helloworld_HelloReply_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_helloworld_HelloReply_descriptor,
+        new java.lang.String[] { "Message", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/ReactorDubboGreeterGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/ReactorDubboGreeterGrpc.java
new file mode 100644
index 0000000..03f2a7e
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/helloworld/ReactorDubboGreeterGrpc.java
@@ -0,0 +1,176 @@
+    package io.grpc.examples.helloworld;
+
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.config.ReferenceConfigBase;
+
+import java.util.concurrent.TimeUnit;
+
+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;
+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;
+
+import static io.grpc.examples.helloworld.GreeterGrpc.getServiceDescriptor;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+
+
+@javax.annotation.Generated(
+value = "by ReactorDubboGrpc generator",
+comments = "Source: helloworld.proto")
+public final class ReactorDubboGreeterGrpc {
+private ReactorDubboGreeterGrpc() {}
+
+public static ReactorDubboGreeterStub getDubboStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+return new ReactorDubboGreeterStub(channel, callOptions, url, referenceConfig);
+}
+
+    /**
+     * <pre>
+     *  The greeting service definition.
+     * </pre>
+     */
+public static final class ReactorDubboGreeterStub implements IReactorGreeter {
+
+protected URL url;
+protected ReferenceConfigBase<?> referenceConfig;
+
+protected GreeterGrpc.GreeterStub stub;
+
+public ReactorDubboGreeterStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+this.url = url;
+this.referenceConfig = referenceConfig;
+stub = GreeterGrpc.newStub(channel).build(channel, callOptions);
+}
+
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+    public reactor.core.publisher.Mono<io.grpc.examples.helloworld.HelloReply> sayHello(reactor.core.publisher.Mono<io.grpc.examples.helloworld.HelloRequest> reactorRequest) {
+    GreeterGrpc.GreeterStub localStub = stub.withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS);
+    return com.salesforce.reactorgrpc.stub.ClientCalls.oneToOne(reactorRequest, localStub::sayHello);
+    }
+
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+    public reactor.core.publisher.Mono<io.grpc.examples.helloworld.HelloReply> sayHello(io.grpc.examples.helloworld.HelloRequest reactorRequest) {
+    GreeterGrpc.GreeterStub localStub = stub.withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS);
+    return com.salesforce.reactorgrpc.stub.ClientCalls.oneToOne(reactor.core.publisher.Mono.just(reactorRequest), localStub::sayHello);
+    }
+
+}
+
+public interface IReactorGreeter {
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+    public reactor.core.publisher.Mono<io.grpc.examples.helloworld.HelloReply> sayHello(reactor.core.publisher.Mono<io.grpc.examples.helloworld.HelloRequest> reactorRequest);
+
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+    public reactor.core.publisher.Mono<io.grpc.examples.helloworld.HelloReply> sayHello(io.grpc.examples.helloworld.HelloRequest reactorRequest);
+
+}
+
+    /**
+     * <pre>
+     *  The greeting service definition.
+     * </pre>
+     */
+public static abstract class GreeterImplBase implements IReactorGreeter, io.grpc.BindableService {
+
+private IReactorGreeter proxiedImpl;
+
+public final void setProxiedImpl(IReactorGreeter proxiedImpl) {
+this.proxiedImpl = proxiedImpl;
+}
+
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+    public final reactor.core.publisher.Mono<io.grpc.examples.helloworld.HelloReply> sayHello(io.grpc.examples.helloworld.HelloRequest reactorRequest) {
+    throw new UnsupportedOperationException("No need to override this method, extend XxxImplBase and override all methods it allows.");
+    }
+
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+    public reactor.core.publisher.Mono<io.grpc.examples.helloworld.HelloReply> sayHello(reactor.core.publisher.Mono<io.grpc.examples.helloworld.HelloRequest> request) {
+    throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+    }
+
+@java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
+return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+    .addMethod(
+    io.grpc.examples.helloworld.GreeterGrpc.getSayHelloMethod(),
+    asyncUnaryCall(
+    new MethodHandlers<
+    io.grpc.examples.helloworld.HelloRequest,
+    io.grpc.examples.helloworld.HelloReply>(
+    proxiedImpl, METHODID_SAY_HELLO)))
+.build();
+}
+}
+
+    private static final int METHODID_SAY_HELLO = 0;
+
+private static final class MethodHandlers
+<Req, Resp> implements
+io.grpc.stub.ServerCalls.UnaryMethod
+<Req, Resp>,
+io.grpc.stub.ServerCalls.ServerStreamingMethod
+<Req, Resp>,
+io.grpc.stub.ServerCalls.ClientStreamingMethod
+<Req, Resp>,
+io.grpc.stub.ServerCalls.BidiStreamingMethod
+<Req, Resp> {
+private final IReactorGreeter serviceImpl;
+private final int methodId;
+
+MethodHandlers(IReactorGreeter serviceImpl, int methodId) {
+this.serviceImpl = serviceImpl;
+this.methodId = methodId;
+}
+
+@java.lang.Override
+@java.lang.SuppressWarnings("unchecked")
+public void invoke(Req request, io.grpc.stub.StreamObserver
+<Resp> responseObserver) {
+    switch (methodId) {
+            case METHODID_SAY_HELLO:
+            com.salesforce.reactorgrpc.stub.ServerCalls.oneToOne((io.grpc.examples.helloworld.HelloRequest) request,
+            (io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply>) responseObserver,
+            serviceImpl::sayHello);
+            break;
+    default:
+    throw new java.lang.AssertionError();
+    }
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public io.grpc.stub.StreamObserver
+    <Req> invoke(io.grpc.stub.StreamObserver
+        <Resp> responseObserver) {
+            switch (methodId) {
+            default:
+            throw new java.lang.AssertionError();
+            }
+            }
+            }
+
+            }
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloReply.java
similarity index 56%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloReply.java
index 3a96ea0..b9f9d47 100644
--- a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloReply.java
@@ -1,28 +1,26 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: route_guide.proto
+// source: hello_streaming.proto
 
-package io.grpc.examples.routeguide;
+package io.grpc.examples.manualflowcontrol;
 
 /**
  * <pre>
- * Points are represented as latitude-longitude pairs in the E7 representation
- * (degrees multiplied by 10**7 and rounded to the nearest integer).
- * Latitudes should be in the range +/- 90 degrees and longitude should be in
- * the range +/- 180 degrees (inclusive).
+ * The response message containing the greetings
  * </pre>
  *
- * Protobuf type {@code routeguide.Point}
+ * Protobuf type {@code hellostreaming.HelloReply}
  */
-public  final class Point extends
+public  final class HelloReply extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:routeguide.Point)
-    PointOrBuilder {
+    // @@protoc_insertion_point(message_implements:hellostreaming.HelloReply)
+    HelloReplyOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use Point.newBuilder() to construct.
-  private Point(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloReply.newBuilder() to construct.
+  private HelloReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private Point() {
+  private HelloReply() {
+    message_ = "";
   }
 
   @java.lang.Override
@@ -30,7 +28,7 @@ private static final long serialVersionUID = 0L;
   getUnknownFields() {
     return this.unknownFields;
   }
-  private Point(
+  private HelloReply(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -49,14 +47,10 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 8: {
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
 
-            latitude_ = input.readInt32();
-            break;
-          }
-          case 16: {
-
-            longitude_ = input.readInt32();
+            message_ = s;
             break;
           }
           default: {
@@ -80,33 +74,49 @@ private static final long serialVersionUID = 0L;
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+    return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloReply_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+    return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloReply_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+            io.grpc.examples.manualflowcontrol.HelloReply.class, io.grpc.examples.manualflowcontrol.HelloReply.Builder.class);
   }
 
-  public static final int LATITUDE_FIELD_NUMBER = 1;
-  private int latitude_;
+  public static final int MESSAGE_FIELD_NUMBER = 1;
+  private volatile java.lang.Object message_;
   /**
-   * <code>int32 latitude = 1;</code>
+   * <code>string message = 1;</code>
    */
-  public int getLatitude() {
-    return latitude_;
+  public java.lang.String getMessage() {
+    java.lang.Object ref = message_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      message_ = s;
+      return s;
+    }
   }
-
-  public static final int LONGITUDE_FIELD_NUMBER = 2;
-  private int longitude_;
   /**
-   * <code>int32 longitude = 2;</code>
+   * <code>string message = 1;</code>
    */
-  public int getLongitude() {
-    return longitude_;
+  public com.google.protobuf.ByteString
+      getMessageBytes() {
+    java.lang.Object ref = message_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      message_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
   }
 
   private byte memoizedIsInitialized = -1;
@@ -123,11 +133,8 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (latitude_ != 0) {
-      output.writeInt32(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      output.writeInt32(2, longitude_);
+    if (!getMessageBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, message_);
     }
     unknownFields.writeTo(output);
   }
@@ -138,13 +145,8 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (latitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(2, longitude_);
+    if (!getMessageBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, message_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -156,15 +158,13 @@ private static final long serialVersionUID = 0L;
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof io.grpc.examples.routeguide.Point)) {
+    if (!(obj instanceof io.grpc.examples.manualflowcontrol.HelloReply)) {
       return super.equals(obj);
     }
-    io.grpc.examples.routeguide.Point other = (io.grpc.examples.routeguide.Point) obj;
+    io.grpc.examples.manualflowcontrol.HelloReply other = (io.grpc.examples.manualflowcontrol.HelloReply) obj;
 
-    if (getLatitude()
-        != other.getLatitude()) return false;
-    if (getLongitude()
-        != other.getLongitude()) return false;
+    if (!getMessage()
+        .equals(other.getMessage())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -176,78 +176,76 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLatitude();
-    hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLongitude();
+    hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
+    hash = (53 * hash) + getMessage().hashCode();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(byte[] data)
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(java.io.InputStream input)
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(java.io.InputStream input)
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseDelimitedFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -260,7 +258,7 @@ private static final long serialVersionUID = 0L;
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(io.grpc.examples.routeguide.Point prototype) {
+  public static Builder newBuilder(io.grpc.examples.manualflowcontrol.HelloReply prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -277,32 +275,29 @@ private static final long serialVersionUID = 0L;
   }
   /**
    * <pre>
-   * Points are represented as latitude-longitude pairs in the E7 representation
-   * (degrees multiplied by 10**7 and rounded to the nearest integer).
-   * Latitudes should be in the range +/- 90 degrees and longitude should be in
-   * the range +/- 180 degrees (inclusive).
+   * The response message containing the greetings
    * </pre>
    *
-   * Protobuf type {@code routeguide.Point}
+   * Protobuf type {@code hellostreaming.HelloReply}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:routeguide.Point)
-      io.grpc.examples.routeguide.PointOrBuilder {
+      // @@protoc_insertion_point(builder_implements:hellostreaming.HelloReply)
+      io.grpc.examples.manualflowcontrol.HelloReplyOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloReply_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloReply_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+              io.grpc.examples.manualflowcontrol.HelloReply.class, io.grpc.examples.manualflowcontrol.HelloReply.Builder.class);
     }
 
-    // Construct using io.grpc.examples.routeguide.Point.newBuilder()
+    // Construct using io.grpc.examples.manualflowcontrol.HelloReply.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -320,9 +315,7 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      latitude_ = 0;
-
-      longitude_ = 0;
+      message_ = "";
 
       return this;
     }
@@ -330,17 +323,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloReply_descriptor;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
-      return io.grpc.examples.routeguide.Point.getDefaultInstance();
+    public io.grpc.examples.manualflowcontrol.HelloReply getDefaultInstanceForType() {
+      return io.grpc.examples.manualflowcontrol.HelloReply.getDefaultInstance();
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point build() {
-      io.grpc.examples.routeguide.Point result = buildPartial();
+    public io.grpc.examples.manualflowcontrol.HelloReply build() {
+      io.grpc.examples.manualflowcontrol.HelloReply result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -348,10 +341,9 @@ private static final long serialVersionUID = 0L;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point buildPartial() {
-      io.grpc.examples.routeguide.Point result = new io.grpc.examples.routeguide.Point(this);
-      result.latitude_ = latitude_;
-      result.longitude_ = longitude_;
+    public io.grpc.examples.manualflowcontrol.HelloReply buildPartial() {
+      io.grpc.examples.manualflowcontrol.HelloReply result = new io.grpc.examples.manualflowcontrol.HelloReply(this);
+      result.message_ = message_;
       onBuilt();
       return result;
     }
@@ -390,21 +382,19 @@ private static final long serialVersionUID = 0L;
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof io.grpc.examples.routeguide.Point) {
-        return mergeFrom((io.grpc.examples.routeguide.Point)other);
+      if (other instanceof io.grpc.examples.manualflowcontrol.HelloReply) {
+        return mergeFrom((io.grpc.examples.manualflowcontrol.HelloReply)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(io.grpc.examples.routeguide.Point other) {
-      if (other == io.grpc.examples.routeguide.Point.getDefaultInstance()) return this;
-      if (other.getLatitude() != 0) {
-        setLatitude(other.getLatitude());
-      }
-      if (other.getLongitude() != 0) {
-        setLongitude(other.getLongitude());
+    public Builder mergeFrom(io.grpc.examples.manualflowcontrol.HelloReply other) {
+      if (other == io.grpc.examples.manualflowcontrol.HelloReply.getDefaultInstance()) return this;
+      if (!other.getMessage().isEmpty()) {
+        message_ = other.message_;
+        onChanged();
       }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
@@ -421,11 +411,11 @@ private static final long serialVersionUID = 0L;
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      io.grpc.examples.routeguide.Point parsedMessage = null;
+      io.grpc.examples.manualflowcontrol.HelloReply parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (io.grpc.examples.routeguide.Point) e.getUnfinishedMessage();
+        parsedMessage = (io.grpc.examples.manualflowcontrol.HelloReply) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -435,54 +425,71 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private int latitude_ ;
+    private java.lang.Object message_ = "";
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public int getLatitude() {
-      return latitude_;
+    public java.lang.String getMessage() {
+      java.lang.Object ref = message_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        message_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder setLatitude(int value) {
-      
-      latitude_ = value;
-      onChanged();
-      return this;
+    public com.google.protobuf.ByteString
+        getMessageBytes() {
+      java.lang.Object ref = message_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        message_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder clearLatitude() {
-      
-      latitude_ = 0;
+    public Builder setMessage(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      message_ = value;
       onChanged();
       return this;
     }
-
-    private int longitude_ ;
-    /**
-     * <code>int32 longitude = 2;</code>
-     */
-    public int getLongitude() {
-      return longitude_;
-    }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder setLongitude(int value) {
+    public Builder clearMessage() {
       
-      longitude_ = value;
+      message_ = getDefaultInstance().getMessage();
       onChanged();
       return this;
     }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder clearLongitude() {
+    public Builder setMessageBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
       
-      longitude_ = 0;
+      message_ = value;
       onChanged();
       return this;
     }
@@ -499,41 +506,41 @@ private static final long serialVersionUID = 0L;
     }
 
 
-    // @@protoc_insertion_point(builder_scope:routeguide.Point)
+    // @@protoc_insertion_point(builder_scope:hellostreaming.HelloReply)
   }
 
-  // @@protoc_insertion_point(class_scope:routeguide.Point)
-  private static final io.grpc.examples.routeguide.Point DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:hellostreaming.HelloReply)
+  private static final io.grpc.examples.manualflowcontrol.HelloReply DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new io.grpc.examples.routeguide.Point();
+    DEFAULT_INSTANCE = new io.grpc.examples.manualflowcontrol.HelloReply();
   }
 
-  public static io.grpc.examples.routeguide.Point getDefaultInstance() {
+  public static io.grpc.examples.manualflowcontrol.HelloReply getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<Point>
-      PARSER = new com.google.protobuf.AbstractParser<Point>() {
+  private static final com.google.protobuf.Parser<HelloReply>
+      PARSER = new com.google.protobuf.AbstractParser<HelloReply>() {
     @java.lang.Override
-    public Point parsePartialFrom(
+    public HelloReply parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new Point(input, extensionRegistry);
+      return new HelloReply(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<Point> parser() {
+  public static com.google.protobuf.Parser<HelloReply> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<Point> getParserForType() {
+  public com.google.protobuf.Parser<HelloReply> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
+  public io.grpc.examples.manualflowcontrol.HelloReply getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloReplyOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloReplyOrBuilder.java
new file mode 100644
index 0000000..3cad1c5
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloReplyOrBuilder.java
@@ -0,0 +1,19 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: hello_streaming.proto
+
+package io.grpc.examples.manualflowcontrol;
+
+public interface HelloReplyOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:hellostreaming.HelloReply)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string message = 1;</code>
+   */
+  java.lang.String getMessage();
+  /**
+   * <code>string message = 1;</code>
+   */
+  com.google.protobuf.ByteString
+      getMessageBytes();
+}
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloRequest.java
similarity index 56%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloRequest.java
index 3a96ea0..647b5dd 100644
--- a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloRequest.java
@@ -1,28 +1,26 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: route_guide.proto
+// source: hello_streaming.proto
 
-package io.grpc.examples.routeguide;
+package io.grpc.examples.manualflowcontrol;
 
 /**
  * <pre>
- * Points are represented as latitude-longitude pairs in the E7 representation
- * (degrees multiplied by 10**7 and rounded to the nearest integer).
- * Latitudes should be in the range +/- 90 degrees and longitude should be in
- * the range +/- 180 degrees (inclusive).
+ * The request message containing the user's name.
  * </pre>
  *
- * Protobuf type {@code routeguide.Point}
+ * Protobuf type {@code hellostreaming.HelloRequest}
  */
-public  final class Point extends
+public  final class HelloRequest extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:routeguide.Point)
-    PointOrBuilder {
+    // @@protoc_insertion_point(message_implements:hellostreaming.HelloRequest)
+    HelloRequestOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use Point.newBuilder() to construct.
-  private Point(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloRequest.newBuilder() to construct.
+  private HelloRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private Point() {
+  private HelloRequest() {
+    name_ = "";
   }
 
   @java.lang.Override
@@ -30,7 +28,7 @@ private static final long serialVersionUID = 0L;
   getUnknownFields() {
     return this.unknownFields;
   }
-  private Point(
+  private HelloRequest(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -49,14 +47,10 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 8: {
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
 
-            latitude_ = input.readInt32();
-            break;
-          }
-          case 16: {
-
-            longitude_ = input.readInt32();
+            name_ = s;
             break;
           }
           default: {
@@ -80,33 +74,49 @@ private static final long serialVersionUID = 0L;
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+    return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloRequest_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+    return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloRequest_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+            io.grpc.examples.manualflowcontrol.HelloRequest.class, io.grpc.examples.manualflowcontrol.HelloRequest.Builder.class);
   }
 
-  public static final int LATITUDE_FIELD_NUMBER = 1;
-  private int latitude_;
+  public static final int NAME_FIELD_NUMBER = 1;
+  private volatile java.lang.Object name_;
   /**
-   * <code>int32 latitude = 1;</code>
+   * <code>string name = 1;</code>
    */
-  public int getLatitude() {
-    return latitude_;
+  public java.lang.String getName() {
+    java.lang.Object ref = name_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      name_ = s;
+      return s;
+    }
   }
-
-  public static final int LONGITUDE_FIELD_NUMBER = 2;
-  private int longitude_;
   /**
-   * <code>int32 longitude = 2;</code>
+   * <code>string name = 1;</code>
    */
-  public int getLongitude() {
-    return longitude_;
+  public com.google.protobuf.ByteString
+      getNameBytes() {
+    java.lang.Object ref = name_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      name_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
   }
 
   private byte memoizedIsInitialized = -1;
@@ -123,11 +133,8 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (latitude_ != 0) {
-      output.writeInt32(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      output.writeInt32(2, longitude_);
+    if (!getNameBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
     }
     unknownFields.writeTo(output);
   }
@@ -138,13 +145,8 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (latitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(2, longitude_);
+    if (!getNameBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -156,15 +158,13 @@ private static final long serialVersionUID = 0L;
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof io.grpc.examples.routeguide.Point)) {
+    if (!(obj instanceof io.grpc.examples.manualflowcontrol.HelloRequest)) {
       return super.equals(obj);
     }
-    io.grpc.examples.routeguide.Point other = (io.grpc.examples.routeguide.Point) obj;
+    io.grpc.examples.manualflowcontrol.HelloRequest other = (io.grpc.examples.manualflowcontrol.HelloRequest) obj;
 
-    if (getLatitude()
-        != other.getLatitude()) return false;
-    if (getLongitude()
-        != other.getLongitude()) return false;
+    if (!getName()
+        .equals(other.getName())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -176,78 +176,76 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLatitude();
-    hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLongitude();
+    hash = (37 * hash) + NAME_FIELD_NUMBER;
+    hash = (53 * hash) + getName().hashCode();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(byte[] data)
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(java.io.InputStream input)
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(java.io.InputStream input)
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseDelimitedFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.manualflowcontrol.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -260,7 +258,7 @@ private static final long serialVersionUID = 0L;
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(io.grpc.examples.routeguide.Point prototype) {
+  public static Builder newBuilder(io.grpc.examples.manualflowcontrol.HelloRequest prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -277,32 +275,29 @@ private static final long serialVersionUID = 0L;
   }
   /**
    * <pre>
-   * Points are represented as latitude-longitude pairs in the E7 representation
-   * (degrees multiplied by 10**7 and rounded to the nearest integer).
-   * Latitudes should be in the range +/- 90 degrees and longitude should be in
-   * the range +/- 180 degrees (inclusive).
+   * The request message containing the user's name.
    * </pre>
    *
-   * Protobuf type {@code routeguide.Point}
+   * Protobuf type {@code hellostreaming.HelloRequest}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:routeguide.Point)
-      io.grpc.examples.routeguide.PointOrBuilder {
+      // @@protoc_insertion_point(builder_implements:hellostreaming.HelloRequest)
+      io.grpc.examples.manualflowcontrol.HelloRequestOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloRequest_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+              io.grpc.examples.manualflowcontrol.HelloRequest.class, io.grpc.examples.manualflowcontrol.HelloRequest.Builder.class);
     }
 
-    // Construct using io.grpc.examples.routeguide.Point.newBuilder()
+    // Construct using io.grpc.examples.manualflowcontrol.HelloRequest.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -320,9 +315,7 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      latitude_ = 0;
-
-      longitude_ = 0;
+      name_ = "";
 
       return this;
     }
@@ -330,17 +323,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.internal_static_hellostreaming_HelloRequest_descriptor;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
-      return io.grpc.examples.routeguide.Point.getDefaultInstance();
+    public io.grpc.examples.manualflowcontrol.HelloRequest getDefaultInstanceForType() {
+      return io.grpc.examples.manualflowcontrol.HelloRequest.getDefaultInstance();
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point build() {
-      io.grpc.examples.routeguide.Point result = buildPartial();
+    public io.grpc.examples.manualflowcontrol.HelloRequest build() {
+      io.grpc.examples.manualflowcontrol.HelloRequest result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -348,10 +341,9 @@ private static final long serialVersionUID = 0L;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point buildPartial() {
-      io.grpc.examples.routeguide.Point result = new io.grpc.examples.routeguide.Point(this);
-      result.latitude_ = latitude_;
-      result.longitude_ = longitude_;
+    public io.grpc.examples.manualflowcontrol.HelloRequest buildPartial() {
+      io.grpc.examples.manualflowcontrol.HelloRequest result = new io.grpc.examples.manualflowcontrol.HelloRequest(this);
+      result.name_ = name_;
       onBuilt();
       return result;
     }
@@ -390,21 +382,19 @@ private static final long serialVersionUID = 0L;
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof io.grpc.examples.routeguide.Point) {
-        return mergeFrom((io.grpc.examples.routeguide.Point)other);
+      if (other instanceof io.grpc.examples.manualflowcontrol.HelloRequest) {
+        return mergeFrom((io.grpc.examples.manualflowcontrol.HelloRequest)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(io.grpc.examples.routeguide.Point other) {
-      if (other == io.grpc.examples.routeguide.Point.getDefaultInstance()) return this;
-      if (other.getLatitude() != 0) {
-        setLatitude(other.getLatitude());
-      }
-      if (other.getLongitude() != 0) {
-        setLongitude(other.getLongitude());
+    public Builder mergeFrom(io.grpc.examples.manualflowcontrol.HelloRequest other) {
+      if (other == io.grpc.examples.manualflowcontrol.HelloRequest.getDefaultInstance()) return this;
+      if (!other.getName().isEmpty()) {
+        name_ = other.name_;
+        onChanged();
       }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
@@ -421,11 +411,11 @@ private static final long serialVersionUID = 0L;
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      io.grpc.examples.routeguide.Point parsedMessage = null;
+      io.grpc.examples.manualflowcontrol.HelloRequest parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (io.grpc.examples.routeguide.Point) e.getUnfinishedMessage();
+        parsedMessage = (io.grpc.examples.manualflowcontrol.HelloRequest) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -435,54 +425,71 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private int latitude_ ;
+    private java.lang.Object name_ = "";
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public int getLatitude() {
-      return latitude_;
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        name_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder setLatitude(int value) {
-      
-      latitude_ = value;
-      onChanged();
-      return this;
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder clearLatitude() {
-      
-      latitude_ = 0;
+    public Builder setName(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      name_ = value;
       onChanged();
       return this;
     }
-
-    private int longitude_ ;
-    /**
-     * <code>int32 longitude = 2;</code>
-     */
-    public int getLongitude() {
-      return longitude_;
-    }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder setLongitude(int value) {
+    public Builder clearName() {
       
-      longitude_ = value;
+      name_ = getDefaultInstance().getName();
       onChanged();
       return this;
     }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder clearLongitude() {
+    public Builder setNameBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
       
-      longitude_ = 0;
+      name_ = value;
       onChanged();
       return this;
     }
@@ -499,41 +506,41 @@ private static final long serialVersionUID = 0L;
     }
 
 
-    // @@protoc_insertion_point(builder_scope:routeguide.Point)
+    // @@protoc_insertion_point(builder_scope:hellostreaming.HelloRequest)
   }
 
-  // @@protoc_insertion_point(class_scope:routeguide.Point)
-  private static final io.grpc.examples.routeguide.Point DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:hellostreaming.HelloRequest)
+  private static final io.grpc.examples.manualflowcontrol.HelloRequest DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new io.grpc.examples.routeguide.Point();
+    DEFAULT_INSTANCE = new io.grpc.examples.manualflowcontrol.HelloRequest();
   }
 
-  public static io.grpc.examples.routeguide.Point getDefaultInstance() {
+  public static io.grpc.examples.manualflowcontrol.HelloRequest getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<Point>
-      PARSER = new com.google.protobuf.AbstractParser<Point>() {
+  private static final com.google.protobuf.Parser<HelloRequest>
+      PARSER = new com.google.protobuf.AbstractParser<HelloRequest>() {
     @java.lang.Override
-    public Point parsePartialFrom(
+    public HelloRequest parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new Point(input, extensionRegistry);
+      return new HelloRequest(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<Point> parser() {
+  public static com.google.protobuf.Parser<HelloRequest> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<Point> getParserForType() {
+  public com.google.protobuf.Parser<HelloRequest> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
+  public io.grpc.examples.manualflowcontrol.HelloRequest getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloRequestOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloRequestOrBuilder.java
new file mode 100644
index 0000000..0468be6
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloRequestOrBuilder.java
@@ -0,0 +1,19 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: hello_streaming.proto
+
+package io.grpc.examples.manualflowcontrol;
+
+public interface HelloRequestOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:hellostreaming.HelloRequest)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string name = 1;</code>
+   */
+  java.lang.String getName();
+  /**
+   * <code>string name = 1;</code>
+   */
+  com.google.protobuf.ByteString
+      getNameBytes();
+}
diff --git a/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloStreamingProto.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloStreamingProto.java
new file mode 100644
index 0000000..d83200c
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/HelloStreamingProto.java
@@ -0,0 +1,72 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: hello_streaming.proto
+
+package io.grpc.examples.manualflowcontrol;
+
+public final class HelloStreamingProto {
+  private HelloStreamingProto() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registerAllExtensions(
+        (com.google.protobuf.ExtensionRegistryLite) registry);
+  }
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_hellostreaming_HelloRequest_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_hellostreaming_HelloRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_hellostreaming_HelloReply_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_hellostreaming_HelloReply_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static  com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\025hello_streaming.proto\022\016hellostreaming\"" +
+      "\034\n\014HelloRequest\022\014\n\004name\030\001 \001(\t\"\035\n\nHelloRe" +
+      "ply\022\017\n\007message\030\001 \001(\t2g\n\020StreamingGreeter" +
+      "\022S\n\021SayHelloStreaming\022\034.hellostreaming.H" +
+      "elloRequest\032\032.hellostreaming.HelloReply\"" +
+      "\000(\0010\001BB\n\"io.grpc.examples.manualflowcont" +
+      "rolB\023HelloStreamingProtoP\001\242\002\004HLWSb\006proto" +
+      "3"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
+          public com.google.protobuf.ExtensionRegistry assignDescriptors(
+              com.google.protobuf.Descriptors.FileDescriptor root) {
+            descriptor = root;
+            return null;
+          }
+        };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        }, assigner);
+    internal_static_hellostreaming_HelloRequest_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_hellostreaming_HelloRequest_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_hellostreaming_HelloRequest_descriptor,
+        new java.lang.String[] { "Name", });
+    internal_static_hellostreaming_HelloReply_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_hellostreaming_HelloReply_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_hellostreaming_HelloReply_descriptor,
+        new java.lang.String[] { "Message", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/ReactorDubboStreamingGreeterGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/ReactorDubboStreamingGreeterGrpc.java
new file mode 100644
index 0000000..473b6d1
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/ReactorDubboStreamingGreeterGrpc.java
@@ -0,0 +1,150 @@
+    package io.grpc.examples.manualflowcontrol;
+
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.config.ReferenceConfigBase;
+
+import java.util.concurrent.TimeUnit;
+
+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;
+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;
+
+import static io.grpc.examples.manualflowcontrol.StreamingGreeterGrpc.getServiceDescriptor;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+
+
+@javax.annotation.Generated(
+value = "by ReactorDubboGrpc generator",
+comments = "Source: hello_streaming.proto")
+public final class ReactorDubboStreamingGreeterGrpc {
+private ReactorDubboStreamingGreeterGrpc() {}
+
+public static ReactorDubboStreamingGreeterStub getDubboStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+return new ReactorDubboStreamingGreeterStub(channel, callOptions, url, referenceConfig);
+}
+
+    /**
+     * <pre>
+     *  The greeting service definition.
+     * </pre>
+     */
+public static final class ReactorDubboStreamingGreeterStub implements IReactorStreamingGreeter {
+
+protected URL url;
+protected ReferenceConfigBase<?> referenceConfig;
+
+protected StreamingGreeterGrpc.StreamingGreeterStub stub;
+
+public ReactorDubboStreamingGreeterStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+this.url = url;
+this.referenceConfig = referenceConfig;
+stub = StreamingGreeterGrpc.newStub(channel).build(channel, callOptions);
+}
+
+        /**
+         * <pre>
+         *  Streams a many greetings
+         * </pre>
+         */
+    public reactor.core.publisher.Flux<io.grpc.examples.manualflowcontrol.HelloReply> sayHelloStreaming(reactor.core.publisher.Flux<io.grpc.examples.manualflowcontrol.HelloRequest> reactorRequest) {
+    StreamingGreeterGrpc.StreamingGreeterStub localStub = stub.withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS);
+    return com.salesforce.reactorgrpc.stub.ClientCalls.manyToMany(reactorRequest, localStub::sayHelloStreaming);
+    }
+
+}
+
+public interface IReactorStreamingGreeter {
+        /**
+         * <pre>
+         *  Streams a many greetings
+         * </pre>
+         */
+    public reactor.core.publisher.Flux<io.grpc.examples.manualflowcontrol.HelloReply> sayHelloStreaming(reactor.core.publisher.Flux<io.grpc.examples.manualflowcontrol.HelloRequest> reactorRequest);
+
+}
+
+    /**
+     * <pre>
+     *  The greeting service definition.
+     * </pre>
+     */
+public static abstract class StreamingGreeterImplBase implements IReactorStreamingGreeter, io.grpc.BindableService {
+
+private IReactorStreamingGreeter proxiedImpl;
+
+public final void setProxiedImpl(IReactorStreamingGreeter proxiedImpl) {
+this.proxiedImpl = proxiedImpl;
+}
+
+        /**
+         * <pre>
+         *  Streams a many greetings
+         * </pre>
+         */
+    public reactor.core.publisher.Flux<io.grpc.examples.manualflowcontrol.HelloReply> sayHelloStreaming(reactor.core.publisher.Flux<io.grpc.examples.manualflowcontrol.HelloRequest> request) {
+    throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+    }
+
+@java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
+return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+    .addMethod(
+    io.grpc.examples.manualflowcontrol.StreamingGreeterGrpc.getSayHelloStreamingMethod(),
+    asyncBidiStreamingCall(
+    new MethodHandlers<
+    io.grpc.examples.manualflowcontrol.HelloRequest,
+    io.grpc.examples.manualflowcontrol.HelloReply>(
+    proxiedImpl, METHODID_SAY_HELLO_STREAMING)))
+.build();
+}
+}
+
+    private static final int METHODID_SAY_HELLO_STREAMING = 0;
+
+private static final class MethodHandlers
+<Req, Resp> implements
+io.grpc.stub.ServerCalls.UnaryMethod
+<Req, Resp>,
+io.grpc.stub.ServerCalls.ServerStreamingMethod
+<Req, Resp>,
+io.grpc.stub.ServerCalls.ClientStreamingMethod
+<Req, Resp>,
+io.grpc.stub.ServerCalls.BidiStreamingMethod
+<Req, Resp> {
+private final IReactorStreamingGreeter serviceImpl;
+private final int methodId;
+
+MethodHandlers(IReactorStreamingGreeter serviceImpl, int methodId) {
+this.serviceImpl = serviceImpl;
+this.methodId = methodId;
+}
+
+@java.lang.Override
+@java.lang.SuppressWarnings("unchecked")
+public void invoke(Req request, io.grpc.stub.StreamObserver
+<Resp> responseObserver) {
+    switch (methodId) {
+    default:
+    throw new java.lang.AssertionError();
+    }
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public io.grpc.stub.StreamObserver
+    <Req> invoke(io.grpc.stub.StreamObserver
+        <Resp> responseObserver) {
+            switch (methodId) {
+                    case METHODID_SAY_HELLO_STREAMING:
+                    return (io.grpc.stub.StreamObserver
+                <Req>) com.salesforce.reactorgrpc.stub.ServerCalls.manyToMany(
+                    (io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloReply>) responseObserver,
+                    serviceImpl::sayHelloStreaming);
+            default:
+            throw new java.lang.AssertionError();
+            }
+            }
+            }
+
+            }
diff --git a/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/StreamingGreeterGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/StreamingGreeterGrpc.java
new file mode 100644
index 0000000..91f650b
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/manualflowcontrol/StreamingGreeterGrpc.java
@@ -0,0 +1,285 @@
+package io.grpc.examples.manualflowcontrol;
+
+import static io.grpc.MethodDescriptor.generateFullMethodName;
+import static io.grpc.stub.ClientCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncUnaryCall;
+import static io.grpc.stub.ClientCalls.blockingServerStreamingCall;
+import static io.grpc.stub.ClientCalls.blockingUnaryCall;
+import static io.grpc.stub.ClientCalls.futureUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
+
+/**
+ * <pre>
+ * The greeting service definition.
+ * </pre>
+ */
+@javax.annotation.Generated(
+    value = "by gRPC proto compiler (version 1.19.0)",
+    comments = "Source: hello_streaming.proto")
+public final class StreamingGreeterGrpc {
+
+  private StreamingGreeterGrpc() {}
+
+  public static final String SERVICE_NAME = "hellostreaming.StreamingGreeter";
+
+  // Static method descriptors that strictly reflect the proto.
+  private static volatile io.grpc.MethodDescriptor<io.grpc.examples.manualflowcontrol.HelloRequest,
+      io.grpc.examples.manualflowcontrol.HelloReply> getSayHelloStreamingMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "SayHelloStreaming",
+      requestType = io.grpc.examples.manualflowcontrol.HelloRequest.class,
+      responseType = io.grpc.examples.manualflowcontrol.HelloReply.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING)
+  public static io.grpc.MethodDescriptor<io.grpc.examples.manualflowcontrol.HelloRequest,
+      io.grpc.examples.manualflowcontrol.HelloReply> getSayHelloStreamingMethod() {
+    io.grpc.MethodDescriptor<io.grpc.examples.manualflowcontrol.HelloRequest, io.grpc.examples.manualflowcontrol.HelloReply> getSayHelloStreamingMethod;
+    if ((getSayHelloStreamingMethod = StreamingGreeterGrpc.getSayHelloStreamingMethod) == null) {
+      synchronized (StreamingGreeterGrpc.class) {
+        if ((getSayHelloStreamingMethod = StreamingGreeterGrpc.getSayHelloStreamingMethod) == null) {
+          StreamingGreeterGrpc.getSayHelloStreamingMethod = getSayHelloStreamingMethod = 
+              io.grpc.MethodDescriptor.<io.grpc.examples.manualflowcontrol.HelloRequest, io.grpc.examples.manualflowcontrol.HelloReply>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING)
+              .setFullMethodName(generateFullMethodName(
+                  "hellostreaming.StreamingGreeter", "SayHelloStreaming"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  io.grpc.examples.manualflowcontrol.HelloRequest.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  io.grpc.examples.manualflowcontrol.HelloReply.getDefaultInstance()))
+                  .setSchemaDescriptor(new StreamingGreeterMethodDescriptorSupplier("SayHelloStreaming"))
+                  .build();
+          }
+        }
+     }
+     return getSayHelloStreamingMethod;
+  }
+
+  /**
+   * Creates a new async stub that supports all call types for the service
+   */
+  public static StreamingGreeterStub newStub(io.grpc.Channel channel) {
+    return new StreamingGreeterStub(channel);
+  }
+
+  /**
+   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
+   */
+  public static StreamingGreeterBlockingStub newBlockingStub(
+      io.grpc.Channel channel) {
+    return new StreamingGreeterBlockingStub(channel);
+  }
+
+  /**
+   * Creates a new ListenableFuture-style stub that supports unary calls on the service
+   */
+  public static StreamingGreeterFutureStub newFutureStub(
+      io.grpc.Channel channel) {
+    return new StreamingGreeterFutureStub(channel);
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static abstract class StreamingGreeterImplBase implements io.grpc.BindableService {
+
+    /**
+     * <pre>
+     * Streams a many greetings
+     * </pre>
+     */
+    public io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloRequest> sayHelloStreaming(
+        io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloReply> responseObserver) {
+      return asyncUnimplementedStreamingCall(getSayHelloStreamingMethod(), responseObserver);
+    }
+
+    @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
+      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+          .addMethod(
+            getSayHelloStreamingMethod(),
+            asyncBidiStreamingCall(
+              new MethodHandlers<
+                io.grpc.examples.manualflowcontrol.HelloRequest,
+                io.grpc.examples.manualflowcontrol.HelloReply>(
+                  this, METHODID_SAY_HELLO_STREAMING)))
+          .build();
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class StreamingGreeterStub extends io.grpc.stub.AbstractStub<StreamingGreeterStub> {
+    private StreamingGreeterStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private StreamingGreeterStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected StreamingGreeterStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new StreamingGreeterStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Streams a many greetings
+     * </pre>
+     */
+    public io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloRequest> sayHelloStreaming(
+        io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloReply> responseObserver) {
+      return asyncBidiStreamingCall(
+          getChannel().newCall(getSayHelloStreamingMethod(), getCallOptions()), responseObserver);
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class StreamingGreeterBlockingStub extends io.grpc.stub.AbstractStub<StreamingGreeterBlockingStub> {
+    private StreamingGreeterBlockingStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private StreamingGreeterBlockingStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected StreamingGreeterBlockingStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new StreamingGreeterBlockingStub(channel, callOptions);
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class StreamingGreeterFutureStub extends io.grpc.stub.AbstractStub<StreamingGreeterFutureStub> {
+    private StreamingGreeterFutureStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private StreamingGreeterFutureStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected StreamingGreeterFutureStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new StreamingGreeterFutureStub(channel, callOptions);
+    }
+  }
+
+  private static final int METHODID_SAY_HELLO_STREAMING = 0;
+
+  private static final class MethodHandlers<Req, Resp> implements
+      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+    private final StreamingGreeterImplBase serviceImpl;
+    private final int methodId;
+
+    MethodHandlers(StreamingGreeterImplBase serviceImpl, int methodId) {
+      this.serviceImpl = serviceImpl;
+      this.methodId = methodId;
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        default:
+          throw new AssertionError();
+      }
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public io.grpc.stub.StreamObserver<Req> invoke(
+        io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        case METHODID_SAY_HELLO_STREAMING:
+          return (io.grpc.stub.StreamObserver<Req>) serviceImpl.sayHelloStreaming(
+              (io.grpc.stub.StreamObserver<io.grpc.examples.manualflowcontrol.HelloReply>) responseObserver);
+        default:
+          throw new AssertionError();
+      }
+    }
+  }
+
+  private static abstract class StreamingGreeterBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+    StreamingGreeterBaseDescriptorSupplier() {}
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+      return io.grpc.examples.manualflowcontrol.HelloStreamingProto.getDescriptor();
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+      return getFileDescriptor().findServiceByName("StreamingGreeter");
+    }
+  }
+
+  private static final class StreamingGreeterFileDescriptorSupplier
+      extends StreamingGreeterBaseDescriptorSupplier {
+    StreamingGreeterFileDescriptorSupplier() {}
+  }
+
+  private static final class StreamingGreeterMethodDescriptorSupplier
+      extends StreamingGreeterBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
+    private final String methodName;
+
+    StreamingGreeterMethodDescriptorSupplier(String methodName) {
+      this.methodName = methodName;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+      return getServiceDescriptor().findMethodByName(methodName);
+    }
+  }
+
+  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+
+  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+    io.grpc.ServiceDescriptor result = serviceDescriptor;
+    if (result == null) {
+      synchronized (StreamingGreeterGrpc.class) {
+        result = serviceDescriptor;
+        if (result == null) {
+          serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
+              .setSchemaDescriptor(new StreamingGreeterFileDescriptorSupplier())
+              .addMethod(getSayHelloStreamingMethod())
+              .build();
+        }
+      }
+    }
+    return result;
+  }
+}
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Feature.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Feature.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Feature.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Feature.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabase.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabase.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabase.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabase.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabaseOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabaseOrBuilder.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabaseOrBuilder.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureDatabaseOrBuilder.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureOrBuilder.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureOrBuilder.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/FeatureOrBuilder.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/PointOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/PointOrBuilder.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/PointOrBuilder.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/PointOrBuilder.java
diff --git a/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/ReactorDubboRouteGuideGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/ReactorDubboRouteGuideGrpc.java
new file mode 100644
index 0000000..c4f7472
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/ReactorDubboRouteGuideGrpc.java
@@ -0,0 +1,397 @@
+    package io.grpc.examples.routeguide;
+
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.config.ReferenceConfigBase;
+
+import java.util.concurrent.TimeUnit;
+
+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;
+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;
+
+import static io.grpc.examples.routeguide.RouteGuideGrpc.getServiceDescriptor;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+
+
+@javax.annotation.Generated(
+value = "by ReactorDubboGrpc generator",
+comments = "Source: route_guide.proto")
+public final class ReactorDubboRouteGuideGrpc {
+private ReactorDubboRouteGuideGrpc() {}
+
+public static ReactorDubboRouteGuideStub getDubboStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+return new ReactorDubboRouteGuideStub(channel, callOptions, url, referenceConfig);
+}
+
+    /**
+     * <pre>
+     *  Interface exported by the server.
+     * </pre>
+     */
+public static final class ReactorDubboRouteGuideStub implements IReactorRouteGuide {
+
+protected URL url;
+protected ReferenceConfigBase<?> referenceConfig;
+
+protected RouteGuideGrpc.RouteGuideStub stub;
+
+public ReactorDubboRouteGuideStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+this.url = url;
+this.referenceConfig = referenceConfig;
+stub = RouteGuideGrpc.newStub(channel).build(channel, callOptions);
+}
+
+        /**
+         * <pre>
+         *  A simple RPC.
+         * 
+         *  Obtains the feature at a given position.
+         * 
+         *  A feature with an empty name is returned if there&#39;s no feature at the given
+         *  position.
+         * </pre>
+         */
+    public reactor.core.publisher.Mono<io.grpc.examples.routeguide.Feature> getFeature(reactor.core.publisher.Mono<io.grpc.examples.routeguide.Point> reactorRequest) {
+    RouteGuideGrpc.RouteGuideStub localStub = stub.withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS);
+    return com.salesforce.reactorgrpc.stub.ClientCalls.oneToOne(reactorRequest, localStub::getFeature);
+    }
+
+        /**
+         * <pre>
+         *  A server-to-client streaming RPC.
+         * 
+         *  Obtains the Features available within the given Rectangle.  Results are
+         *  streamed rather than returned at once (e.g. in a response message with a
+         *  repeated field), as the rectangle may cover a large area and contain a
+         *  huge number of features.
+         * </pre>
+         */
+    public reactor.core.publisher.Flux<io.grpc.examples.routeguide.Feature> listFeatures(reactor.core.publisher.Mono<io.grpc.examples.routeguide.Rectangle> reactorRequest) {
+    RouteGuideGrpc.RouteGuideStub localStub = stub.withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS);
+    return com.salesforce.reactorgrpc.stub.ClientCalls.oneToMany(reactorRequest, localStub::listFeatures);
+    }
+
+        /**
+         * <pre>
+         *  A client-to-server streaming RPC.
+         * 
+         *  Accepts a stream of Points on a route being traversed, returning a
+         *  RouteSummary when traversal is completed.
+         * </pre>
+         */
+    public reactor.core.publisher.Mono<io.grpc.examples.routeguide.RouteSummary> recordRoute(reactor.core.publisher.Flux<io.grpc.examples.routeguide.Point> reactorRequest) {
+    RouteGuideGrpc.RouteGuideStub localStub = stub.withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS);
+    return com.salesforce.reactorgrpc.stub.ClientCalls.manyToOne(reactorRequest, localStub::recordRoute);
+    }
+
+        /**
+         * <pre>
+         *  A Bidirectional streaming RPC.
+         * 
+         *  Accepts a stream of RouteNotes sent while a route is being traversed,
+         *  while receiving other RouteNotes (e.g. from other users).
+         * </pre>
+         */
+    public reactor.core.publisher.Flux<io.grpc.examples.routeguide.RouteNote> routeChat(reactor.core.publisher.Flux<io.grpc.examples.routeguide.RouteNote> reactorRequest) {
+    RouteGuideGrpc.RouteGuideStub localStub = stub.withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS);
+    return com.salesforce.reactorgrpc.stub.ClientCalls.manyToMany(reactorRequest, localStub::routeChat);
+    }
+
+        /**
+         * <pre>
+         *  A simple RPC.
+         * 
+         *  Obtains the feature at a given position.
+         * 
+         *  A feature with an empty name is returned if there&#39;s no feature at the given
+         *  position.
+         * </pre>
+         */
+    public reactor.core.publisher.Mono<io.grpc.examples.routeguide.Feature> getFeature(io.grpc.examples.routeguide.Point reactorRequest) {
+    RouteGuideGrpc.RouteGuideStub localStub = stub.withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS);
+    return com.salesforce.reactorgrpc.stub.ClientCalls.oneToOne(reactor.core.publisher.Mono.just(reactorRequest), localStub::getFeature);
+    }
+
+        /**
+         * <pre>
+         *  A server-to-client streaming RPC.
+         * 
+         *  Obtains the Features available within the given Rectangle.  Results are
+         *  streamed rather than returned at once (e.g. in a response message with a
+         *  repeated field), as the rectangle may cover a large area and contain a
+         *  huge number of features.
+         * </pre>
+         */
+    public reactor.core.publisher.Flux<io.grpc.examples.routeguide.Feature> listFeatures(io.grpc.examples.routeguide.Rectangle reactorRequest) {
+    RouteGuideGrpc.RouteGuideStub localStub = stub.withDeadlineAfter(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS);
+    return com.salesforce.reactorgrpc.stub.ClientCalls.oneToMany(reactor.core.publisher.Mono.just(reactorRequest), localStub::listFeatures);
+    }
+
+}
+
+public interface IReactorRouteGuide {
+        /**
+         * <pre>
+         *  A simple RPC.
+         * 
+         *  Obtains the feature at a given position.
+         * 
+         *  A feature with an empty name is returned if there&#39;s no feature at the given
+         *  position.
+         * </pre>
+         */
+    public reactor.core.publisher.Mono<io.grpc.examples.routeguide.Feature> getFeature(reactor.core.publisher.Mono<io.grpc.examples.routeguide.Point> reactorRequest);
+
+        /**
+         * <pre>
+         *  A server-to-client streaming RPC.
+         * 
+         *  Obtains the Features available within the given Rectangle.  Results are
+         *  streamed rather than returned at once (e.g. in a response message with a
+         *  repeated field), as the rectangle may cover a large area and contain a
+         *  huge number of features.
+         * </pre>
+         */
+    public reactor.core.publisher.Flux<io.grpc.examples.routeguide.Feature> listFeatures(reactor.core.publisher.Mono<io.grpc.examples.routeguide.Rectangle> reactorRequest);
+
+        /**
+         * <pre>
+         *  A client-to-server streaming RPC.
+         * 
+         *  Accepts a stream of Points on a route being traversed, returning a
+         *  RouteSummary when traversal is completed.
+         * </pre>
+         */
+    public reactor.core.publisher.Mono<io.grpc.examples.routeguide.RouteSummary> recordRoute(reactor.core.publisher.Flux<io.grpc.examples.routeguide.Point> reactorRequest);
+
+        /**
+         * <pre>
+         *  A Bidirectional streaming RPC.
+         * 
+         *  Accepts a stream of RouteNotes sent while a route is being traversed,
+         *  while receiving other RouteNotes (e.g. from other users).
+         * </pre>
+         */
+    public reactor.core.publisher.Flux<io.grpc.examples.routeguide.RouteNote> routeChat(reactor.core.publisher.Flux<io.grpc.examples.routeguide.RouteNote> reactorRequest);
+
+        /**
+         * <pre>
+         *  A simple RPC.
+         * 
+         *  Obtains the feature at a given position.
+         * 
+         *  A feature with an empty name is returned if there&#39;s no feature at the given
+         *  position.
+         * </pre>
+         */
+    public reactor.core.publisher.Mono<io.grpc.examples.routeguide.Feature> getFeature(io.grpc.examples.routeguide.Point reactorRequest);
+
+        /**
+         * <pre>
+         *  A server-to-client streaming RPC.
+         * 
+         *  Obtains the Features available within the given Rectangle.  Results are
+         *  streamed rather than returned at once (e.g. in a response message with a
+         *  repeated field), as the rectangle may cover a large area and contain a
+         *  huge number of features.
+         * </pre>
+         */
+    public reactor.core.publisher.Flux<io.grpc.examples.routeguide.Feature> listFeatures(io.grpc.examples.routeguide.Rectangle reactorRequest);
+
+}
+
+    /**
+     * <pre>
+     *  Interface exported by the server.
+     * </pre>
+     */
+public static abstract class RouteGuideImplBase implements IReactorRouteGuide, io.grpc.BindableService {
+
+private IReactorRouteGuide proxiedImpl;
+
+public final void setProxiedImpl(IReactorRouteGuide proxiedImpl) {
+this.proxiedImpl = proxiedImpl;
+}
+
+        /**
+         * <pre>
+         *  A simple RPC.
+         * 
+         *  Obtains the feature at a given position.
+         * 
+         *  A feature with an empty name is returned if there&#39;s no feature at the given
+         *  position.
+         * </pre>
+         */
+    public final reactor.core.publisher.Mono<io.grpc.examples.routeguide.Feature> getFeature(io.grpc.examples.routeguide.Point reactorRequest) {
+    throw new UnsupportedOperationException("No need to override this method, extend XxxImplBase and override all methods it allows.");
+    }
+
+        /**
+         * <pre>
+         *  A server-to-client streaming RPC.
+         * 
+         *  Obtains the Features available within the given Rectangle.  Results are
+         *  streamed rather than returned at once (e.g. in a response message with a
+         *  repeated field), as the rectangle may cover a large area and contain a
+         *  huge number of features.
+         * </pre>
+         */
+    public final reactor.core.publisher.Flux<io.grpc.examples.routeguide.Feature> listFeatures(io.grpc.examples.routeguide.Rectangle reactorRequest) {
+    throw new UnsupportedOperationException("No need to override this method, extend XxxImplBase and override all methods it allows.");
+    }
+
+        /**
+         * <pre>
+         *  A simple RPC.
+         * 
+         *  Obtains the feature at a given position.
+         * 
+         *  A feature with an empty name is returned if there&#39;s no feature at the given
+         *  position.
+         * </pre>
+         */
+    public reactor.core.publisher.Mono<io.grpc.examples.routeguide.Feature> getFeature(reactor.core.publisher.Mono<io.grpc.examples.routeguide.Point> request) {
+    throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+    }
+
+        /**
+         * <pre>
+         *  A server-to-client streaming RPC.
+         * 
+         *  Obtains the Features available within the given Rectangle.  Results are
+         *  streamed rather than returned at once (e.g. in a response message with a
+         *  repeated field), as the rectangle may cover a large area and contain a
+         *  huge number of features.
+         * </pre>
+         */
+    public reactor.core.publisher.Flux<io.grpc.examples.routeguide.Feature> listFeatures(reactor.core.publisher.Mono<io.grpc.examples.routeguide.Rectangle> request) {
+    throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+    }
+
+        /**
+         * <pre>
+         *  A client-to-server streaming RPC.
+         * 
+         *  Accepts a stream of Points on a route being traversed, returning a
+         *  RouteSummary when traversal is completed.
+         * </pre>
+         */
+    public reactor.core.publisher.Mono<io.grpc.examples.routeguide.RouteSummary> recordRoute(reactor.core.publisher.Flux<io.grpc.examples.routeguide.Point> request) {
+    throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+    }
+
+        /**
+         * <pre>
+         *  A Bidirectional streaming RPC.
+         * 
+         *  Accepts a stream of RouteNotes sent while a route is being traversed,
+         *  while receiving other RouteNotes (e.g. from other users).
+         * </pre>
+         */
+    public reactor.core.publisher.Flux<io.grpc.examples.routeguide.RouteNote> routeChat(reactor.core.publisher.Flux<io.grpc.examples.routeguide.RouteNote> request) {
+    throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
+    }
+
+@java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
+return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+    .addMethod(
+    io.grpc.examples.routeguide.RouteGuideGrpc.getGetFeatureMethod(),
+    asyncUnaryCall(
+    new MethodHandlers<
+    io.grpc.examples.routeguide.Point,
+    io.grpc.examples.routeguide.Feature>(
+    proxiedImpl, METHODID_GET_FEATURE)))
+    .addMethod(
+    io.grpc.examples.routeguide.RouteGuideGrpc.getListFeaturesMethod(),
+    asyncServerStreamingCall(
+    new MethodHandlers<
+    io.grpc.examples.routeguide.Rectangle,
+    io.grpc.examples.routeguide.Feature>(
+    proxiedImpl, METHODID_LIST_FEATURES)))
+    .addMethod(
+    io.grpc.examples.routeguide.RouteGuideGrpc.getRecordRouteMethod(),
+    asyncClientStreamingCall(
+    new MethodHandlers<
+    io.grpc.examples.routeguide.Point,
+    io.grpc.examples.routeguide.RouteSummary>(
+    proxiedImpl, METHODID_RECORD_ROUTE)))
+    .addMethod(
+    io.grpc.examples.routeguide.RouteGuideGrpc.getRouteChatMethod(),
+    asyncBidiStreamingCall(
+    new MethodHandlers<
+    io.grpc.examples.routeguide.RouteNote,
+    io.grpc.examples.routeguide.RouteNote>(
+    proxiedImpl, METHODID_ROUTE_CHAT)))
+.build();
+}
+}
+
+    private static final int METHODID_GET_FEATURE = 0;
+    private static final int METHODID_LIST_FEATURES = 1;
+    private static final int METHODID_RECORD_ROUTE = 2;
+    private static final int METHODID_ROUTE_CHAT = 3;
+
+private static final class MethodHandlers
+<Req, Resp> implements
+io.grpc.stub.ServerCalls.UnaryMethod
+<Req, Resp>,
+io.grpc.stub.ServerCalls.ServerStreamingMethod
+<Req, Resp>,
+io.grpc.stub.ServerCalls.ClientStreamingMethod
+<Req, Resp>,
+io.grpc.stub.ServerCalls.BidiStreamingMethod
+<Req, Resp> {
+private final IReactorRouteGuide serviceImpl;
+private final int methodId;
+
+MethodHandlers(IReactorRouteGuide serviceImpl, int methodId) {
+this.serviceImpl = serviceImpl;
+this.methodId = methodId;
+}
+
+@java.lang.Override
+@java.lang.SuppressWarnings("unchecked")
+public void invoke(Req request, io.grpc.stub.StreamObserver
+<Resp> responseObserver) {
+    switch (methodId) {
+            case METHODID_GET_FEATURE:
+            com.salesforce.reactorgrpc.stub.ServerCalls.oneToOne((io.grpc.examples.routeguide.Point) request,
+            (io.grpc.stub.StreamObserver<io.grpc.examples.routeguide.Feature>) responseObserver,
+            serviceImpl::getFeature);
+            break;
+            case METHODID_LIST_FEATURES:
+            com.salesforce.reactorgrpc.stub.ServerCalls.oneToMany((io.grpc.examples.routeguide.Rectangle) request,
+            (io.grpc.stub.StreamObserver<io.grpc.examples.routeguide.Feature>) responseObserver,
+            serviceImpl::listFeatures);
+            break;
+    default:
+    throw new java.lang.AssertionError();
+    }
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public io.grpc.stub.StreamObserver
+    <Req> invoke(io.grpc.stub.StreamObserver
+        <Resp> responseObserver) {
+            switch (methodId) {
+                    case METHODID_RECORD_ROUTE:
+                    return (io.grpc.stub.StreamObserver
+                <Req>) com.salesforce.reactorgrpc.stub.ServerCalls.manyToOne(
+                    (io.grpc.stub.StreamObserver<io.grpc.examples.routeguide.RouteSummary>) responseObserver,
+                    serviceImpl::recordRoute);
+                    case METHODID_ROUTE_CHAT:
+                    return (io.grpc.stub.StreamObserver
+                <Req>) com.salesforce.reactorgrpc.stub.ServerCalls.manyToMany(
+                    (io.grpc.stub.StreamObserver<io.grpc.examples.routeguide.RouteNote>) responseObserver,
+                    serviceImpl::routeChat);
+            default:
+            throw new java.lang.AssertionError();
+            }
+            }
+            }
+
+            }
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Rectangle.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Rectangle.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Rectangle.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Rectangle.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RectangleOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RectangleOrBuilder.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RectangleOrBuilder.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RectangleOrBuilder.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideGrpc.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideGrpc.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideGrpc.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideProto.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideProto.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideProto.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteGuideProto.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNote.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNote.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNote.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNote.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNoteOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNoteOrBuilder.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNoteOrBuilder.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteNoteOrBuilder.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummary.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummary.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummary.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummary.java
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummaryOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummaryOrBuilder.java
similarity index 100%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummaryOrBuilder.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/build/generated/source/proto/main/java/io/grpc/examples/routeguide/RouteSummaryOrBuilder.java
diff --git a/java/dubbo-samples-grpc/pom.xml b/java/dubbo-samples-grpc/dubbo-samples-reactor/pom.xml
similarity index 90%
copy from java/dubbo-samples-grpc/pom.xml
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/pom.xml
index 9c284e7..3183544 100644
--- a/java/dubbo-samples-grpc/pom.xml
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/pom.xml
@@ -23,7 +23,7 @@
 
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-samples-grpc</artifactId>
+    <artifactId>dubbo-samples-reactor-grpc</artifactId>
 
     <properties>
         <source.level>1.8</source.level>
@@ -41,6 +41,9 @@
         <zookeeper.port>2181</zookeeper.port>
         <main-class>org.apache.dubbo.samples.basic.BasicProvider</main-class>
         <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <grpc.version>1.19.0</grpc.version>
+        <dubbo.compiler.version>0.0.1-SNAPSHOT</dubbo.compiler.version>
+        <reactive.grpc.version>1.0.0</reactive.grpc.version>
     </properties>
 
     <dependencies>
@@ -52,22 +55,22 @@
         <dependency>
             <groupId>io.grpc</groupId>
             <artifactId>grpc-netty</artifactId>
-            <version>1.19.0</version>
+            <version>${grpc.version}</version>
         </dependency>
         <dependency>
             <groupId>io.grpc</groupId>
             <artifactId>grpc-netty-shaded</artifactId>
-            <version>1.19.0</version>
+            <version>${grpc.version}</version>
         </dependency>
         <dependency>
             <groupId>io.grpc</groupId>
             <artifactId>grpc-protobuf</artifactId>
-            <version>1.19.0</version>
+            <version>${grpc.version}</version>
         </dependency>
         <dependency>
             <groupId>io.grpc</groupId>
             <artifactId>grpc-stub</artifactId>
-            <version>1.19.0</version>
+            <version>${grpc.version}</version>
         </dependency>
         <dependency>
             <groupId>com.google.protobuf</groupId>
@@ -76,6 +79,12 @@
         </dependency>
 
         <dependency>
+            <groupId>com.salesforce.servicelibs</groupId>
+            <artifactId>reactor-grpc-stub</artifactId>
+            <version>${reactive.grpc.version}</version>
+        </dependency>
+
+        <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-dependencies-zookeeper</artifactId>
             <version>${dubbo.version}</version>
@@ -235,11 +244,19 @@
                 <version>0.5.1</version>
                 <configuration>
                     <protocArtifact>com.google.protobuf:protoc:3.7.1:exe:${os.detected.classifier}</protocArtifact>
-                    <pluginId>dubbo-grpc-java</pluginId>
-                    <pluginArtifact>org.apache.dubbo:protoc-gen-dubbo-java:1.19.0-SNAPSHOT:exe:${os.detected.classifier}</pluginArtifact>
+                    <pluginId>grpc-java</pluginId>
+                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact>
                     <outputDirectory>build/generated/source/proto/main/java</outputDirectory>
                     <clearOutputDirectory>false</clearOutputDirectory>
-                    <pluginParameter>grpc</pluginParameter>
+                    <protocPlugins>
+                        <protocPlugin>
+                            <id>reactor-dubbo-grpc</id>
+                            <groupId>org.apache.dubbo</groupId>
+                            <artifactId>dubbo-compiler</artifactId>
+                            <version>${dubbo.compiler.version}</version>
+                            <mainClass>org.apache.dubbo.gen.grpc.reactive.ReactorDubboGrpcGenerator</mainClass>
+                        </protocPlugin>
+                    </protocPlugins>
                 </configuration>
                 <executions>
                     <execution>
diff --git a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/java/org/apache/dubbo/samples/basic/BasicConsumer.java
similarity index 62%
copy from java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/java/org/apache/dubbo/samples/basic/BasicConsumer.java
index d122e07..58ae9e7 100644
--- a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/java/org/apache/dubbo/samples/basic/BasicConsumer.java
@@ -19,18 +19,29 @@
 
 package org.apache.dubbo.samples.basic;
 
+import io.grpc.examples.helloworld.HelloRequest;
+import io.grpc.examples.helloworld.ReactorDubboGreeterGrpc;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
-import java.util.concurrent.CountDownLatch;
-
-public class BasicProvider {
+public class BasicConsumer {
 
     public static void main(String[] args) throws Exception {
         ClassPathXmlApplicationContext context =
-                new ClassPathXmlApplicationContext("spring/dubbo-demo-provider.xml");
+                new ClassPathXmlApplicationContext("spring/dubbo-demo-consumer.xml");
         context.start();
 
-        System.out.println("dubbo service started");
-        new CountDownLatch(1).await();
+        /**
+         * greeter sample
+         */
+        System.out.println("-------- Start simple unary call test -------- ");
+        ReactorDubboGreeterGrpc.IReactorGreeter greeter = (ReactorDubboGreeterGrpc.IReactorGreeter) context.getBean("greeter");
+
+        greeter
+            .sayHello(HelloRequest.newBuilder().setName("world!").build())
+            .subscribe(reply -> System.out.println("Result: " + reply));
+
+        System.out.println("-------- End simple unary call test -------- \n\n\n");
+
+        System.in.read();
     }
 }
diff --git a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java
diff --git a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/EmbeddedZooKeeper.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/java/org/apache/dubbo/samples/basic/EmbeddedZooKeeper.java
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/EmbeddedZooKeeper.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/java/org/apache/dubbo/samples/basic/EmbeddedZooKeeper.java
diff --git a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/impl/helloworld/GrpcGreeterImpl.java b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/java/org/apache/dubbo/samples/basic/impl/helloworld/GrpcGreeterImpl.java
similarity index 64%
copy from java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/impl/helloworld/GrpcGreeterImpl.java
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/java/org/apache/dubbo/samples/basic/impl/helloworld/GrpcGreeterImpl.java
index 36a0ab9..71f93de 100644
--- a/java/dubbo-samples-grpc/src/main/java/org/apache/dubbo/samples/basic/impl/helloworld/GrpcGreeterImpl.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/java/org/apache/dubbo/samples/basic/impl/helloworld/GrpcGreeterImpl.java
@@ -16,19 +16,22 @@
  */
 package org.apache.dubbo.samples.basic.impl.helloworld;
 
-import io.grpc.examples.helloworld.GreeterGrpc;
+import io.grpc.examples.helloworld.ReactorDubboGreeterGrpc;
 import io.grpc.examples.helloworld.HelloReply;
 import io.grpc.examples.helloworld.HelloRequest;
-import io.grpc.stub.StreamObserver;
-
-public class GrpcGreeterImpl extends GreeterGrpc.GreeterImplBase {
+import reactor.core.publisher.Mono;
 
+public class GrpcGreeterImpl extends ReactorDubboGreeterGrpc.GreeterImplBase {
     @Override
-    public void sayHello(HelloRequest request, StreamObserver<HelloReply> responseObserver) {
+    public Mono<HelloReply> sayHello(Mono<HelloRequest> request) {
         System.out.println("Executing thread is " + Thread.currentThread().getName());
-        HelloReply reply = HelloReply.newBuilder().setMessage("Hello " + request.getName()).build();
-        responseObserver.onNext(reply);
-        responseObserver.onCompleted();
+        return request
+                .map(HelloRequest::getName)
+                .map(name -> {
+                    String greeting = "Hello " + name;
+                    System.out.println("Returning " + greeting);
+                    return greeting;
+                })
+                .map(greeting -> HelloReply.newBuilder().setMessage(greeting).build());
     }
-
 }
diff --git a/java/dubbo-samples-grpc/src/main/proto/hello_streaming.proto b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/proto/hello_streaming.proto
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/proto/hello_streaming.proto
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/proto/hello_streaming.proto
diff --git a/java/dubbo-samples-grpc/src/main/proto/helloworld.proto b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/proto/helloworld.proto
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/proto/helloworld.proto
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/proto/helloworld.proto
diff --git a/java/dubbo-samples-grpc/src/main/proto/route_guide.proto b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/proto/route_guide.proto
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/proto/route_guide.proto
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/proto/route_guide.proto
diff --git a/java/dubbo-samples-grpc/src/main/resources/log4j.properties b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/resources/log4j.properties
similarity index 100%
copy from java/dubbo-samples-grpc/src/main/resources/log4j.properties
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/resources/log4j.properties
diff --git a/java/dubbo-samples-grpc/src/main/resources/spring/dubbo-demo-consumer.xml b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/resources/spring/dubbo-demo-consumer.xml
similarity index 89%
copy from java/dubbo-samples-grpc/src/main/resources/spring/dubbo-demo-consumer.xml
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/resources/spring/dubbo-demo-consumer.xml
index c9b35fd..1497dbc 100644
--- a/java/dubbo-samples-grpc/src/main/resources/spring/dubbo-demo-consumer.xml
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/resources/spring/dubbo-demo-consumer.xml
@@ -27,8 +27,6 @@
 
     <dubbo:registry address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
 
-    <dubbo:reference id="greeter" interface="io.grpc.examples.helloworld.GreeterGrpc$IGreeter" protocol="grpc"/>
-    <dubbo:reference id="routeguide" interface="io.grpc.examples.routeguide.RouteGuideGrpc$IRouteGuide"
-                     protocol="grpc"/>
+    <dubbo:reference id="greeter" interface="io.grpc.examples.helloworld.ReactorDubboGreeterGrpc$IReactorGreeter" protocol="grpc"/>
 
 </beans>
diff --git a/java/dubbo-samples-grpc/src/main/resources/spring/dubbo-demo-provider.xml b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/resources/spring/dubbo-demo-provider.xml
similarity index 83%
copy from java/dubbo-samples-grpc/src/main/resources/spring/dubbo-demo-provider.xml
copy to java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/resources/spring/dubbo-demo-provider.xml
index ebabd4b..874a06b 100644
--- a/java/dubbo-samples-grpc/src/main/resources/spring/dubbo-demo-provider.xml
+++ b/java/dubbo-samples-grpc/dubbo-samples-reactor/src/main/resources/spring/dubbo-demo-provider.xml
@@ -30,9 +30,6 @@
     <dubbo:registry address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
 
     <bean id="greeter" class="org.apache.dubbo.samples.basic.impl.helloworld.GrpcGreeterImpl"/>
-    <dubbo:service interface="io.grpc.examples.helloworld.GreeterGrpc$IGreeter" ref="greeter" protocol="grpc"/>
-
-    <bean id="routeguide" class="org.apache.dubbo.samples.basic.impl.routeguide.RouteGuideImpl"/>
-    <dubbo:service interface="io.grpc.examples.routeguide.RouteGuideGrpc$IRouteGuide" ref="routeguide" protocol="grpc"/>
+    <dubbo:service interface="io.grpc.examples.helloworld.ReactorDubboGreeterGrpc$IReactorGreeter" ref="greeter" protocol="grpc"/>
 
 </beans>
diff --git a/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/GreeterGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/GreeterGrpc.java
new file mode 100644
index 0000000..214ac7a
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/GreeterGrpc.java
@@ -0,0 +1,307 @@
+package io.grpc.examples.helloworld;
+
+import static io.grpc.MethodDescriptor.generateFullMethodName;
+import static io.grpc.stub.ClientCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncUnaryCall;
+import static io.grpc.stub.ClientCalls.blockingServerStreamingCall;
+import static io.grpc.stub.ClientCalls.blockingUnaryCall;
+import static io.grpc.stub.ClientCalls.futureUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
+
+/**
+ * <pre>
+ * The greeting service definition.
+ * </pre>
+ */
+@javax.annotation.Generated(
+    value = "by gRPC proto compiler (version 1.19.0)",
+    comments = "Source: helloworld.proto")
+public final class GreeterGrpc {
+
+  private GreeterGrpc() {}
+
+  public static final String SERVICE_NAME = "helloworld.Greeter";
+
+  // Static method descriptors that strictly reflect the proto.
+  private static volatile io.grpc.MethodDescriptor<io.grpc.examples.helloworld.HelloRequest,
+      io.grpc.examples.helloworld.HelloReply> getSayHelloMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "SayHello",
+      requestType = io.grpc.examples.helloworld.HelloRequest.class,
+      responseType = io.grpc.examples.helloworld.HelloReply.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+  public static io.grpc.MethodDescriptor<io.grpc.examples.helloworld.HelloRequest,
+      io.grpc.examples.helloworld.HelloReply> getSayHelloMethod() {
+    io.grpc.MethodDescriptor<io.grpc.examples.helloworld.HelloRequest, io.grpc.examples.helloworld.HelloReply> getSayHelloMethod;
+    if ((getSayHelloMethod = GreeterGrpc.getSayHelloMethod) == null) {
+      synchronized (GreeterGrpc.class) {
+        if ((getSayHelloMethod = GreeterGrpc.getSayHelloMethod) == null) {
+          GreeterGrpc.getSayHelloMethod = getSayHelloMethod = 
+              io.grpc.MethodDescriptor.<io.grpc.examples.helloworld.HelloRequest, io.grpc.examples.helloworld.HelloReply>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+              .setFullMethodName(generateFullMethodName(
+                  "helloworld.Greeter", "SayHello"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  io.grpc.examples.helloworld.HelloRequest.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  io.grpc.examples.helloworld.HelloReply.getDefaultInstance()))
+                  .setSchemaDescriptor(new GreeterMethodDescriptorSupplier("SayHello"))
+                  .build();
+          }
+        }
+     }
+     return getSayHelloMethod;
+  }
+
+  /**
+   * Creates a new async stub that supports all call types for the service
+   */
+  public static GreeterStub newStub(io.grpc.Channel channel) {
+    return new GreeterStub(channel);
+  }
+
+  /**
+   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
+   */
+  public static GreeterBlockingStub newBlockingStub(
+      io.grpc.Channel channel) {
+    return new GreeterBlockingStub(channel);
+  }
+
+  /**
+   * Creates a new ListenableFuture-style stub that supports unary calls on the service
+   */
+  public static GreeterFutureStub newFutureStub(
+      io.grpc.Channel channel) {
+    return new GreeterFutureStub(channel);
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static abstract class GreeterImplBase implements io.grpc.BindableService {
+
+    /**
+     * <pre>
+     * Sends a greeting
+     * </pre>
+     */
+    public void sayHello(io.grpc.examples.helloworld.HelloRequest request,
+        io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply> responseObserver) {
+      asyncUnimplementedUnaryCall(getSayHelloMethod(), responseObserver);
+    }
+
+    @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
+      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+          .addMethod(
+            getSayHelloMethod(),
+            asyncUnaryCall(
+              new MethodHandlers<
+                io.grpc.examples.helloworld.HelloRequest,
+                io.grpc.examples.helloworld.HelloReply>(
+                  this, METHODID_SAY_HELLO)))
+          .build();
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class GreeterStub extends io.grpc.stub.AbstractStub<GreeterStub> {
+    private GreeterStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private GreeterStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected GreeterStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new GreeterStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Sends a greeting
+     * </pre>
+     */
+    public void sayHello(io.grpc.examples.helloworld.HelloRequest request,
+        io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply> responseObserver) {
+      asyncUnaryCall(
+          getChannel().newCall(getSayHelloMethod(), getCallOptions()), request, responseObserver);
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class GreeterBlockingStub extends io.grpc.stub.AbstractStub<GreeterBlockingStub> {
+    private GreeterBlockingStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private GreeterBlockingStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected GreeterBlockingStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new GreeterBlockingStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Sends a greeting
+     * </pre>
+     */
+    public io.grpc.examples.helloworld.HelloReply sayHello(io.grpc.examples.helloworld.HelloRequest request) {
+      return blockingUnaryCall(
+          getChannel(), getSayHelloMethod(), getCallOptions(), request);
+    }
+  }
+
+  /**
+   * <pre>
+   * The greeting service definition.
+   * </pre>
+   */
+  public static final class GreeterFutureStub extends io.grpc.stub.AbstractStub<GreeterFutureStub> {
+    private GreeterFutureStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private GreeterFutureStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected GreeterFutureStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new GreeterFutureStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Sends a greeting
+     * </pre>
+     */
+    public com.google.common.util.concurrent.ListenableFuture<io.grpc.examples.helloworld.HelloReply> sayHello(
+        io.grpc.examples.helloworld.HelloRequest request) {
+      return futureUnaryCall(
+          getChannel().newCall(getSayHelloMethod(), getCallOptions()), request);
+    }
+  }
+
+  private static final int METHODID_SAY_HELLO = 0;
+
+  private static final class MethodHandlers<Req, Resp> implements
+      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+    private final GreeterImplBase serviceImpl;
+    private final int methodId;
+
+    MethodHandlers(GreeterImplBase serviceImpl, int methodId) {
+      this.serviceImpl = serviceImpl;
+      this.methodId = methodId;
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        case METHODID_SAY_HELLO:
+          serviceImpl.sayHello((io.grpc.examples.helloworld.HelloRequest) request,
+              (io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply>) responseObserver);
+          break;
+        default:
+          throw new AssertionError();
+      }
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public io.grpc.stub.StreamObserver<Req> invoke(
+        io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        default:
+          throw new AssertionError();
+      }
+    }
+  }
+
+  private static abstract class GreeterBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+    GreeterBaseDescriptorSupplier() {}
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+      return io.grpc.examples.helloworld.HelloWorldProto.getDescriptor();
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+      return getFileDescriptor().findServiceByName("Greeter");
+    }
+  }
+
+  private static final class GreeterFileDescriptorSupplier
+      extends GreeterBaseDescriptorSupplier {
+    GreeterFileDescriptorSupplier() {}
+  }
+
+  private static final class GreeterMethodDescriptorSupplier
+      extends GreeterBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
+    private final String methodName;
+
+    GreeterMethodDescriptorSupplier(String methodName) {
+      this.methodName = methodName;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+      return getServiceDescriptor().findMethodByName(methodName);
+    }
+  }
+
+  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+
+  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+    io.grpc.ServiceDescriptor result = serviceDescriptor;
+    if (result == null) {
+      synchronized (GreeterGrpc.class) {
+        result = serviceDescriptor;
+        if (result == null) {
+          serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
+              .setSchemaDescriptor(new GreeterFileDescriptorSupplier())
+              .addMethod(getSayHelloMethod())
+              .build();
+        }
+      }
+    }
+    return result;
+  }
+}
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReply.java
similarity index 58%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
copy to java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReply.java
index 3a96ea0..12f90f2 100644
--- a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReply.java
@@ -1,28 +1,26 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: route_guide.proto
+// source: helloworld.proto
 
-package io.grpc.examples.routeguide;
+package io.grpc.examples.helloworld;
 
 /**
  * <pre>
- * Points are represented as latitude-longitude pairs in the E7 representation
- * (degrees multiplied by 10**7 and rounded to the nearest integer).
- * Latitudes should be in the range +/- 90 degrees and longitude should be in
- * the range +/- 180 degrees (inclusive).
+ * The response message containing the greetings
  * </pre>
  *
- * Protobuf type {@code routeguide.Point}
+ * Protobuf type {@code helloworld.HelloReply}
  */
-public  final class Point extends
+public  final class HelloReply extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:routeguide.Point)
-    PointOrBuilder {
+    // @@protoc_insertion_point(message_implements:helloworld.HelloReply)
+    HelloReplyOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use Point.newBuilder() to construct.
-  private Point(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloReply.newBuilder() to construct.
+  private HelloReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private Point() {
+  private HelloReply() {
+    message_ = "";
   }
 
   @java.lang.Override
@@ -30,7 +28,7 @@ private static final long serialVersionUID = 0L;
   getUnknownFields() {
     return this.unknownFields;
   }
-  private Point(
+  private HelloReply(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -49,14 +47,10 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 8: {
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
 
-            latitude_ = input.readInt32();
-            break;
-          }
-          case 16: {
-
-            longitude_ = input.readInt32();
+            message_ = s;
             break;
           }
           default: {
@@ -80,33 +74,49 @@ private static final long serialVersionUID = 0L;
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+    return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+    return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+            io.grpc.examples.helloworld.HelloReply.class, io.grpc.examples.helloworld.HelloReply.Builder.class);
   }
 
-  public static final int LATITUDE_FIELD_NUMBER = 1;
-  private int latitude_;
+  public static final int MESSAGE_FIELD_NUMBER = 1;
+  private volatile java.lang.Object message_;
   /**
-   * <code>int32 latitude = 1;</code>
+   * <code>string message = 1;</code>
    */
-  public int getLatitude() {
-    return latitude_;
+  public java.lang.String getMessage() {
+    java.lang.Object ref = message_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      message_ = s;
+      return s;
+    }
   }
-
-  public static final int LONGITUDE_FIELD_NUMBER = 2;
-  private int longitude_;
   /**
-   * <code>int32 longitude = 2;</code>
+   * <code>string message = 1;</code>
    */
-  public int getLongitude() {
-    return longitude_;
+  public com.google.protobuf.ByteString
+      getMessageBytes() {
+    java.lang.Object ref = message_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      message_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
   }
 
   private byte memoizedIsInitialized = -1;
@@ -123,11 +133,8 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (latitude_ != 0) {
-      output.writeInt32(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      output.writeInt32(2, longitude_);
+    if (!getMessageBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, message_);
     }
     unknownFields.writeTo(output);
   }
@@ -138,13 +145,8 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (latitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(2, longitude_);
+    if (!getMessageBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, message_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -156,15 +158,13 @@ private static final long serialVersionUID = 0L;
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof io.grpc.examples.routeguide.Point)) {
+    if (!(obj instanceof io.grpc.examples.helloworld.HelloReply)) {
       return super.equals(obj);
     }
-    io.grpc.examples.routeguide.Point other = (io.grpc.examples.routeguide.Point) obj;
+    io.grpc.examples.helloworld.HelloReply other = (io.grpc.examples.helloworld.HelloReply) obj;
 
-    if (getLatitude()
-        != other.getLatitude()) return false;
-    if (getLongitude()
-        != other.getLongitude()) return false;
+    if (!getMessage()
+        .equals(other.getMessage())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -176,78 +176,76 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLatitude();
-    hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLongitude();
+    hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
+    hash = (53 * hash) + getMessage().hashCode();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(byte[] data)
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(java.io.InputStream input)
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(java.io.InputStream input)
+  public static io.grpc.examples.helloworld.HelloReply parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseDelimitedFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -260,7 +258,7 @@ private static final long serialVersionUID = 0L;
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(io.grpc.examples.routeguide.Point prototype) {
+  public static Builder newBuilder(io.grpc.examples.helloworld.HelloReply prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -277,32 +275,29 @@ private static final long serialVersionUID = 0L;
   }
   /**
    * <pre>
-   * Points are represented as latitude-longitude pairs in the E7 representation
-   * (degrees multiplied by 10**7 and rounded to the nearest integer).
-   * Latitudes should be in the range +/- 90 degrees and longitude should be in
-   * the range +/- 180 degrees (inclusive).
+   * The response message containing the greetings
    * </pre>
    *
-   * Protobuf type {@code routeguide.Point}
+   * Protobuf type {@code helloworld.HelloReply}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:routeguide.Point)
-      io.grpc.examples.routeguide.PointOrBuilder {
+      // @@protoc_insertion_point(builder_implements:helloworld.HelloReply)
+      io.grpc.examples.helloworld.HelloReplyOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+              io.grpc.examples.helloworld.HelloReply.class, io.grpc.examples.helloworld.HelloReply.Builder.class);
     }
 
-    // Construct using io.grpc.examples.routeguide.Point.newBuilder()
+    // Construct using io.grpc.examples.helloworld.HelloReply.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -320,9 +315,7 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      latitude_ = 0;
-
-      longitude_ = 0;
+      message_ = "";
 
       return this;
     }
@@ -330,17 +323,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloReply_descriptor;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
-      return io.grpc.examples.routeguide.Point.getDefaultInstance();
+    public io.grpc.examples.helloworld.HelloReply getDefaultInstanceForType() {
+      return io.grpc.examples.helloworld.HelloReply.getDefaultInstance();
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point build() {
-      io.grpc.examples.routeguide.Point result = buildPartial();
+    public io.grpc.examples.helloworld.HelloReply build() {
+      io.grpc.examples.helloworld.HelloReply result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -348,10 +341,9 @@ private static final long serialVersionUID = 0L;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point buildPartial() {
-      io.grpc.examples.routeguide.Point result = new io.grpc.examples.routeguide.Point(this);
-      result.latitude_ = latitude_;
-      result.longitude_ = longitude_;
+    public io.grpc.examples.helloworld.HelloReply buildPartial() {
+      io.grpc.examples.helloworld.HelloReply result = new io.grpc.examples.helloworld.HelloReply(this);
+      result.message_ = message_;
       onBuilt();
       return result;
     }
@@ -390,21 +382,19 @@ private static final long serialVersionUID = 0L;
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof io.grpc.examples.routeguide.Point) {
-        return mergeFrom((io.grpc.examples.routeguide.Point)other);
+      if (other instanceof io.grpc.examples.helloworld.HelloReply) {
+        return mergeFrom((io.grpc.examples.helloworld.HelloReply)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(io.grpc.examples.routeguide.Point other) {
-      if (other == io.grpc.examples.routeguide.Point.getDefaultInstance()) return this;
-      if (other.getLatitude() != 0) {
-        setLatitude(other.getLatitude());
-      }
-      if (other.getLongitude() != 0) {
-        setLongitude(other.getLongitude());
+    public Builder mergeFrom(io.grpc.examples.helloworld.HelloReply other) {
+      if (other == io.grpc.examples.helloworld.HelloReply.getDefaultInstance()) return this;
+      if (!other.getMessage().isEmpty()) {
+        message_ = other.message_;
+        onChanged();
       }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
@@ -421,11 +411,11 @@ private static final long serialVersionUID = 0L;
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      io.grpc.examples.routeguide.Point parsedMessage = null;
+      io.grpc.examples.helloworld.HelloReply parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (io.grpc.examples.routeguide.Point) e.getUnfinishedMessage();
+        parsedMessage = (io.grpc.examples.helloworld.HelloReply) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -435,54 +425,71 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private int latitude_ ;
+    private java.lang.Object message_ = "";
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public int getLatitude() {
-      return latitude_;
+    public java.lang.String getMessage() {
+      java.lang.Object ref = message_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        message_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder setLatitude(int value) {
-      
-      latitude_ = value;
-      onChanged();
-      return this;
+    public com.google.protobuf.ByteString
+        getMessageBytes() {
+      java.lang.Object ref = message_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        message_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder clearLatitude() {
-      
-      latitude_ = 0;
+    public Builder setMessage(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      message_ = value;
       onChanged();
       return this;
     }
-
-    private int longitude_ ;
-    /**
-     * <code>int32 longitude = 2;</code>
-     */
-    public int getLongitude() {
-      return longitude_;
-    }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder setLongitude(int value) {
+    public Builder clearMessage() {
       
-      longitude_ = value;
+      message_ = getDefaultInstance().getMessage();
       onChanged();
       return this;
     }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string message = 1;</code>
      */
-    public Builder clearLongitude() {
+    public Builder setMessageBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
       
-      longitude_ = 0;
+      message_ = value;
       onChanged();
       return this;
     }
@@ -499,41 +506,41 @@ private static final long serialVersionUID = 0L;
     }
 
 
-    // @@protoc_insertion_point(builder_scope:routeguide.Point)
+    // @@protoc_insertion_point(builder_scope:helloworld.HelloReply)
   }
 
-  // @@protoc_insertion_point(class_scope:routeguide.Point)
-  private static final io.grpc.examples.routeguide.Point DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:helloworld.HelloReply)
+  private static final io.grpc.examples.helloworld.HelloReply DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new io.grpc.examples.routeguide.Point();
+    DEFAULT_INSTANCE = new io.grpc.examples.helloworld.HelloReply();
   }
 
-  public static io.grpc.examples.routeguide.Point getDefaultInstance() {
+  public static io.grpc.examples.helloworld.HelloReply getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<Point>
-      PARSER = new com.google.protobuf.AbstractParser<Point>() {
+  private static final com.google.protobuf.Parser<HelloReply>
+      PARSER = new com.google.protobuf.AbstractParser<HelloReply>() {
     @java.lang.Override
-    public Point parsePartialFrom(
+    public HelloReply parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new Point(input, extensionRegistry);
+      return new HelloReply(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<Point> parser() {
+  public static com.google.protobuf.Parser<HelloReply> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<Point> getParserForType() {
+  public com.google.protobuf.Parser<HelloReply> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
+  public io.grpc.examples.helloworld.HelloReply getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReplyOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReplyOrBuilder.java
new file mode 100644
index 0000000..eba408e
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloReplyOrBuilder.java
@@ -0,0 +1,19 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: helloworld.proto
+
+package io.grpc.examples.helloworld;
+
+public interface HelloReplyOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:helloworld.HelloReply)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string message = 1;</code>
+   */
+  java.lang.String getMessage();
+  /**
+   * <code>string message = 1;</code>
+   */
+  com.google.protobuf.ByteString
+      getMessageBytes();
+}
diff --git a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequest.java
similarity index 58%
copy from java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
copy to java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequest.java
index 3a96ea0..720ae9a 100644
--- a/java/dubbo-samples-grpc/build/generated/source/proto/main/java/io/grpc/examples/routeguide/Point.java
+++ b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequest.java
@@ -1,28 +1,26 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: route_guide.proto
+// source: helloworld.proto
 
-package io.grpc.examples.routeguide;
+package io.grpc.examples.helloworld;
 
 /**
  * <pre>
- * Points are represented as latitude-longitude pairs in the E7 representation
- * (degrees multiplied by 10**7 and rounded to the nearest integer).
- * Latitudes should be in the range +/- 90 degrees and longitude should be in
- * the range +/- 180 degrees (inclusive).
+ * The request message containing the user's name.
  * </pre>
  *
- * Protobuf type {@code routeguide.Point}
+ * Protobuf type {@code helloworld.HelloRequest}
  */
-public  final class Point extends
+public  final class HelloRequest extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:routeguide.Point)
-    PointOrBuilder {
+    // @@protoc_insertion_point(message_implements:helloworld.HelloRequest)
+    HelloRequestOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use Point.newBuilder() to construct.
-  private Point(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloRequest.newBuilder() to construct.
+  private HelloRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private Point() {
+  private HelloRequest() {
+    name_ = "";
   }
 
   @java.lang.Override
@@ -30,7 +28,7 @@ private static final long serialVersionUID = 0L;
   getUnknownFields() {
     return this.unknownFields;
   }
-  private Point(
+  private HelloRequest(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -49,14 +47,10 @@ private static final long serialVersionUID = 0L;
           case 0:
             done = true;
             break;
-          case 8: {
+          case 10: {
+            java.lang.String s = input.readStringRequireUtf8();
 
-            latitude_ = input.readInt32();
-            break;
-          }
-          case 16: {
-
-            longitude_ = input.readInt32();
+            name_ = s;
             break;
           }
           default: {
@@ -80,33 +74,49 @@ private static final long serialVersionUID = 0L;
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+    return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+    return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+            io.grpc.examples.helloworld.HelloRequest.class, io.grpc.examples.helloworld.HelloRequest.Builder.class);
   }
 
-  public static final int LATITUDE_FIELD_NUMBER = 1;
-  private int latitude_;
+  public static final int NAME_FIELD_NUMBER = 1;
+  private volatile java.lang.Object name_;
   /**
-   * <code>int32 latitude = 1;</code>
+   * <code>string name = 1;</code>
    */
-  public int getLatitude() {
-    return latitude_;
+  public java.lang.String getName() {
+    java.lang.Object ref = name_;
+    if (ref instanceof java.lang.String) {
+      return (java.lang.String) ref;
+    } else {
+      com.google.protobuf.ByteString bs = 
+          (com.google.protobuf.ByteString) ref;
+      java.lang.String s = bs.toStringUtf8();
+      name_ = s;
+      return s;
+    }
   }
-
-  public static final int LONGITUDE_FIELD_NUMBER = 2;
-  private int longitude_;
   /**
-   * <code>int32 longitude = 2;</code>
+   * <code>string name = 1;</code>
    */
-  public int getLongitude() {
-    return longitude_;
+  public com.google.protobuf.ByteString
+      getNameBytes() {
+    java.lang.Object ref = name_;
+    if (ref instanceof java.lang.String) {
+      com.google.protobuf.ByteString b = 
+          com.google.protobuf.ByteString.copyFromUtf8(
+              (java.lang.String) ref);
+      name_ = b;
+      return b;
+    } else {
+      return (com.google.protobuf.ByteString) ref;
+    }
   }
 
   private byte memoizedIsInitialized = -1;
@@ -123,11 +133,8 @@ private static final long serialVersionUID = 0L;
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (latitude_ != 0) {
-      output.writeInt32(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      output.writeInt32(2, longitude_);
+    if (!getNameBytes().isEmpty()) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
     }
     unknownFields.writeTo(output);
   }
@@ -138,13 +145,8 @@ private static final long serialVersionUID = 0L;
     if (size != -1) return size;
 
     size = 0;
-    if (latitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(1, latitude_);
-    }
-    if (longitude_ != 0) {
-      size += com.google.protobuf.CodedOutputStream
-        .computeInt32Size(2, longitude_);
+    if (!getNameBytes().isEmpty()) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -156,15 +158,13 @@ private static final long serialVersionUID = 0L;
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof io.grpc.examples.routeguide.Point)) {
+    if (!(obj instanceof io.grpc.examples.helloworld.HelloRequest)) {
       return super.equals(obj);
     }
-    io.grpc.examples.routeguide.Point other = (io.grpc.examples.routeguide.Point) obj;
+    io.grpc.examples.helloworld.HelloRequest other = (io.grpc.examples.helloworld.HelloRequest) obj;
 
-    if (getLatitude()
-        != other.getLatitude()) return false;
-    if (getLongitude()
-        != other.getLongitude()) return false;
+    if (!getName()
+        .equals(other.getName())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -176,78 +176,76 @@ private static final long serialVersionUID = 0L;
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + LATITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLatitude();
-    hash = (37 * hash) + LONGITUDE_FIELD_NUMBER;
-    hash = (53 * hash) + getLongitude();
+    hash = (37 * hash) + NAME_FIELD_NUMBER;
+    hash = (53 * hash) + getName().hashCode();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(byte[] data)
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(java.io.InputStream input)
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(java.io.InputStream input)
+  public static io.grpc.examples.helloworld.HelloRequest parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseDelimitedFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseDelimitedFrom(
       java.io.InputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static io.grpc.examples.routeguide.Point parseFrom(
+  public static io.grpc.examples.helloworld.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -260,7 +258,7 @@ private static final long serialVersionUID = 0L;
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(io.grpc.examples.routeguide.Point prototype) {
+  public static Builder newBuilder(io.grpc.examples.helloworld.HelloRequest prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -277,32 +275,29 @@ private static final long serialVersionUID = 0L;
   }
   /**
    * <pre>
-   * Points are represented as latitude-longitude pairs in the E7 representation
-   * (degrees multiplied by 10**7 and rounded to the nearest integer).
-   * Latitudes should be in the range +/- 90 degrees and longitude should be in
-   * the range +/- 180 degrees (inclusive).
+   * The request message containing the user's name.
    * </pre>
    *
-   * Protobuf type {@code routeguide.Point}
+   * Protobuf type {@code helloworld.HelloRequest}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:routeguide.Point)
-      io.grpc.examples.routeguide.PointOrBuilder {
+      // @@protoc_insertion_point(builder_implements:helloworld.HelloRequest)
+      io.grpc.examples.helloworld.HelloRequestOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_fieldAccessorTable
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.grpc.examples.routeguide.Point.class, io.grpc.examples.routeguide.Point.Builder.class);
+              io.grpc.examples.helloworld.HelloRequest.class, io.grpc.examples.helloworld.HelloRequest.Builder.class);
     }
 
-    // Construct using io.grpc.examples.routeguide.Point.newBuilder()
+    // Construct using io.grpc.examples.helloworld.HelloRequest.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -320,9 +315,7 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      latitude_ = 0;
-
-      longitude_ = 0;
+      name_ = "";
 
       return this;
     }
@@ -330,17 +323,17 @@ private static final long serialVersionUID = 0L;
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return io.grpc.examples.routeguide.RouteGuideProto.internal_static_routeguide_Point_descriptor;
+      return io.grpc.examples.helloworld.HelloWorldProto.internal_static_helloworld_HelloRequest_descriptor;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
-      return io.grpc.examples.routeguide.Point.getDefaultInstance();
+    public io.grpc.examples.helloworld.HelloRequest getDefaultInstanceForType() {
+      return io.grpc.examples.helloworld.HelloRequest.getDefaultInstance();
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point build() {
-      io.grpc.examples.routeguide.Point result = buildPartial();
+    public io.grpc.examples.helloworld.HelloRequest build() {
+      io.grpc.examples.helloworld.HelloRequest result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -348,10 +341,9 @@ private static final long serialVersionUID = 0L;
     }
 
     @java.lang.Override
-    public io.grpc.examples.routeguide.Point buildPartial() {
-      io.grpc.examples.routeguide.Point result = new io.grpc.examples.routeguide.Point(this);
-      result.latitude_ = latitude_;
-      result.longitude_ = longitude_;
+    public io.grpc.examples.helloworld.HelloRequest buildPartial() {
+      io.grpc.examples.helloworld.HelloRequest result = new io.grpc.examples.helloworld.HelloRequest(this);
+      result.name_ = name_;
       onBuilt();
       return result;
     }
@@ -390,21 +382,19 @@ private static final long serialVersionUID = 0L;
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof io.grpc.examples.routeguide.Point) {
-        return mergeFrom((io.grpc.examples.routeguide.Point)other);
+      if (other instanceof io.grpc.examples.helloworld.HelloRequest) {
+        return mergeFrom((io.grpc.examples.helloworld.HelloRequest)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(io.grpc.examples.routeguide.Point other) {
-      if (other == io.grpc.examples.routeguide.Point.getDefaultInstance()) return this;
-      if (other.getLatitude() != 0) {
-        setLatitude(other.getLatitude());
-      }
-      if (other.getLongitude() != 0) {
-        setLongitude(other.getLongitude());
+    public Builder mergeFrom(io.grpc.examples.helloworld.HelloRequest other) {
+      if (other == io.grpc.examples.helloworld.HelloRequest.getDefaultInstance()) return this;
+      if (!other.getName().isEmpty()) {
+        name_ = other.name_;
+        onChanged();
       }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
@@ -421,11 +411,11 @@ private static final long serialVersionUID = 0L;
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      io.grpc.examples.routeguide.Point parsedMessage = null;
+      io.grpc.examples.helloworld.HelloRequest parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (io.grpc.examples.routeguide.Point) e.getUnfinishedMessage();
+        parsedMessage = (io.grpc.examples.helloworld.HelloRequest) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -435,54 +425,71 @@ private static final long serialVersionUID = 0L;
       return this;
     }
 
-    private int latitude_ ;
+    private java.lang.Object name_ = "";
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public int getLatitude() {
-      return latitude_;
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (!(ref instanceof java.lang.String)) {
+        com.google.protobuf.ByteString bs =
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        name_ = s;
+        return s;
+      } else {
+        return (java.lang.String) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder setLatitude(int value) {
-      
-      latitude_ = value;
-      onChanged();
-      return this;
+    public com.google.protobuf.ByteString
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        name_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
     /**
-     * <code>int32 latitude = 1;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder clearLatitude() {
-      
-      latitude_ = 0;
+    public Builder setName(
+        java.lang.String value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  
+      name_ = value;
       onChanged();
       return this;
     }
-
-    private int longitude_ ;
-    /**
-     * <code>int32 longitude = 2;</code>
-     */
-    public int getLongitude() {
-      return longitude_;
-    }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder setLongitude(int value) {
+    public Builder clearName() {
       
-      longitude_ = value;
+      name_ = getDefaultInstance().getName();
       onChanged();
       return this;
     }
     /**
-     * <code>int32 longitude = 2;</code>
+     * <code>string name = 1;</code>
      */
-    public Builder clearLongitude() {
+    public Builder setNameBytes(
+        com.google.protobuf.ByteString value) {
+      if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
       
-      longitude_ = 0;
+      name_ = value;
       onChanged();
       return this;
     }
@@ -499,41 +506,41 @@ private static final long serialVersionUID = 0L;
     }
 
 
-    // @@protoc_insertion_point(builder_scope:routeguide.Point)
+    // @@protoc_insertion_point(builder_scope:helloworld.HelloRequest)
   }
 
-  // @@protoc_insertion_point(class_scope:routeguide.Point)
-  private static final io.grpc.examples.routeguide.Point DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:helloworld.HelloRequest)
+  private static final io.grpc.examples.helloworld.HelloRequest DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new io.grpc.examples.routeguide.Point();
+    DEFAULT_INSTANCE = new io.grpc.examples.helloworld.HelloRequest();
   }
 
-  public static io.grpc.examples.routeguide.Point getDefaultInstance() {
+  public static io.grpc.examples.helloworld.HelloRequest getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<Point>
-      PARSER = new com.google.protobuf.AbstractParser<Point>() {
+  private static final com.google.protobuf.Parser<HelloRequest>
+      PARSER = new com.google.protobuf.AbstractParser<HelloRequest>() {
     @java.lang.Override
-    public Point parsePartialFrom(
+    public HelloRequest parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new Point(input, extensionRegistry);
+      return new HelloRequest(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<Point> parser() {
+  public static com.google.protobuf.Parser<HelloRequest> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<Point> getParserForType() {
+  public com.google.protobuf.Parser<HelloRequest> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public io.grpc.examples.routeguide.Point getDefaultInstanceForType() {
+  public io.grpc.examples.helloworld.HelloRequest getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequestOrBuilder.java b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequestOrBuilder.java
new file mode 100644
index 0000000..3568bc9
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloRequestOrBuilder.java
@@ -0,0 +1,19 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: helloworld.proto
+
+package io.grpc.examples.helloworld;
+
+public interface HelloRequestOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:helloworld.HelloRequest)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string name = 1;</code>
+   */
+  java.lang.String getName();
+  /**
+   * <code>string name = 1;</code>
+   */
+  com.google.protobuf.ByteString
+      getNameBytes();
+}
diff --git a/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloWorldProto.java b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloWorldProto.java
new file mode 100644
index 0000000..96527e6
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/HelloWorldProto.java
@@ -0,0 +1,70 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: helloworld.proto
+
+package io.grpc.examples.helloworld;
+
+public final class HelloWorldProto {
+  private HelloWorldProto() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registerAllExtensions(
+        (com.google.protobuf.ExtensionRegistryLite) registry);
+  }
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_helloworld_HelloRequest_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_helloworld_HelloRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_helloworld_HelloReply_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_helloworld_HelloReply_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static  com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\020helloworld.proto\022\nhelloworld\"\034\n\014HelloR" +
+      "equest\022\014\n\004name\030\001 \001(\t\"\035\n\nHelloReply\022\017\n\007me" +
+      "ssage\030\001 \001(\t2I\n\007Greeter\022>\n\010SayHello\022\030.hel" +
+      "loworld.HelloRequest\032\026.helloworld.HelloR" +
+      "eply\"\000B6\n\033io.grpc.examples.helloworldB\017H" +
+      "elloWorldProtoP\001\242\002\003HLWb\006proto3"
+    };
+    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
+          public com.google.protobuf.ExtensionRegistry assignDescriptors(
+              com.google.protobuf.Descriptors.FileDescriptor root) {
+            descriptor = root;
+            return null;
+          }
+        };
+    com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        }, assigner);
+    internal_static_helloworld_HelloRequest_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_helloworld_HelloRequest_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_helloworld_HelloRequest_descriptor,
+        new java.lang.String[] { "Name", });
+    internal_static_helloworld_HelloReply_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_helloworld_HelloReply_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_helloworld_HelloReply_descriptor,
+        new java.lang.String[] { "Message", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/RxDubboGreeterGrpc.java b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/RxDubboGreeterGrpc.java
new file mode 100644
index 0000000..3508d61
--- /dev/null
+++ b/java/dubbo-samples-grpc/dubbo-samples-rxjava/build/generated/source/proto/main/java/io/grpc/examples/helloworld/RxDubboGreeterGrpc.java
@@ -0,0 +1,183 @@
+package io.grpc.examples.helloworld;
+
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.config.ReferenceConfigBase;
+
+import java.util.concurrent.TimeUnit;
+
+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;
+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;
+
+import static io.grpc.examples.helloworld.GreeterGrpc.getServiceDescriptor;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+
+
+@javax.annotation.Generated(
+value = "by RxDubboGrpc generator",
+comments = "Source: helloworld.proto")
+public final class RxDubboGreeterGrpc {
+    private RxDubboGreeterGrpc() {}
+
+    public static RxDubboGreeterStub getDubboStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+        return new RxDubboGreeterStub(channel, callOptions, url, referenceConfig);
+    }
+
+    /**
+     * <pre>
+     *  The greeting service definition.
+     * </pre>
+     */
+    public static final class RxDubboGreeterStub implements IRxGreeter {
+
+        protected URL url;
+        protected ReferenceConfigBase<?> referenceConfig;
+
+        protected GreeterGrpc.GreeterStub stub;
+
+        public RxDubboGreeterStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions, URL url, ReferenceConfigBase<?> referenceConfig) {
+            this.url = url;
+            this.referenceConfig = referenceConfig;
+            stub = GreeterGrpc.newStub(channel).build(channel, callOptions);
+        }
+
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+        public io.reactivex.Single<io.grpc.examples.helloworld.HelloReply> sayHello(io.reactivex.Single<io.grpc.examples.helloworld.HelloRequest> rxRequest) {
+            return com.salesforce.rxgrpc.stub.ClientCalls.oneToOne(rxRequest,
+                new com.salesforce.reactivegrpc.common.BiConsumer<io.grpc.examples.helloworld.HelloRequest, io.grpc.stub.StreamObserver<io.grpc.examples.helloworld.HelloReply>>() {
... 5609 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org