update interop samples
diff --git a/integrate_test/multirpc/tests/integration/main_test.go b/integrate_test/multirpc/tests/integration/main_test.go
index 391e0c3..91f0b61 100644
--- a/integrate_test/multirpc/tests/integration/main_test.go
+++ b/integrate_test/multirpc/tests/integration/main_test.go
@@ -19,12 +19,11 @@
 
 import (
 	"dubbo.apache.org/dubbo-go/v3/common/constant"
+	greet "github.com/apache/dubbo-go-samples/rpc/multi-protocols/proto"
 	"os"
 	"testing"
 
 	"dubbo.apache.org/dubbo-go/v3/client"
-	greet "github.com/apache/dubbo-go-samples/multirpc/proto"
-
 	_ "dubbo.apache.org/dubbo-go/v3/imports"
 )
 
diff --git a/integrate_test/multirpc/tests/integration/multirpc_test.go b/integrate_test/multirpc/tests/integration/multirpc_test.go
index e51802d..773b7b4 100644
--- a/integrate_test/multirpc/tests/integration/multirpc_test.go
+++ b/integrate_test/multirpc/tests/integration/multirpc_test.go
@@ -19,10 +19,10 @@
 
 import (
 	"context"
+	greet "github.com/apache/dubbo-go-samples/rpc/multi-protocols/proto"
 	"github.com/dubbogo/gost/log/logger"
 	"testing"
 
-	greet "github.com/apache/dubbo-go-samples/multirpc/proto"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/integrate_test/service_discovery/interface/tests/integration/main_test.go b/integrate_test/service_discovery/interface/tests/integration/main_test.go
index 9239f13..6766694 100644
--- a/integrate_test/service_discovery/interface/tests/integration/main_test.go
+++ b/integrate_test/service_discovery/interface/tests/integration/main_test.go
@@ -23,7 +23,7 @@
 
 	"dubbo.apache.org/dubbo-go/v3/client"
 	_ "dubbo.apache.org/dubbo-go/v3/imports"
-	greet "github.com/apache/dubbo-go-samples/service_discovery/interface/proto"
+	greet "github.com/apache/dubbo-go-samples/java_interop/service_discovery/interface/proto"
 )
 
 var greetService greet.GreetService
diff --git a/integrate_test/service_discovery/interface/tests/integration/service_discovery_test.go b/integrate_test/service_discovery/interface/tests/integration/service_discovery_test.go
index 6123950..edae0fd 100644
--- a/integrate_test/service_discovery/interface/tests/integration/service_discovery_test.go
+++ b/integrate_test/service_discovery/interface/tests/integration/service_discovery_test.go
@@ -21,7 +21,7 @@
 	"context"
 	"testing"
 
-	greet "github.com/apache/dubbo-go-samples/service_discovery/interface/proto"
+	greet "github.com/apache/dubbo-go-samples/java_interop/service_discovery/interface/proto"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/integrate_test/service_discovery/service/tests/integration/main_test.go b/integrate_test/service_discovery/service/tests/integration/main_test.go
index c5413cd..6a875af 100644
--- a/integrate_test/service_discovery/service/tests/integration/main_test.go
+++ b/integrate_test/service_discovery/service/tests/integration/main_test.go
@@ -23,7 +23,7 @@
 
 	"dubbo.apache.org/dubbo-go/v3/client"
 	_ "dubbo.apache.org/dubbo-go/v3/imports"
-	greet "github.com/apache/dubbo-go-samples/service_discovery/service/proto"
+	greet "github.com/apache/dubbo-go-samples/java_interop/service_discovery/service/proto"
 )
 
 var greetService greet.GreetService
diff --git a/integrate_test/service_discovery/service/tests/integration/service_discovery_test.go b/integrate_test/service_discovery/service/tests/integration/service_discovery_test.go
index 2615ccb..20347cf 100644
--- a/integrate_test/service_discovery/service/tests/integration/service_discovery_test.go
+++ b/integrate_test/service_discovery/service/tests/integration/service_discovery_test.go
@@ -21,7 +21,7 @@
 	"context"
 	"testing"
 
-	greet "github.com/apache/dubbo-go-samples/service_discovery/service/proto"
+	greet "github.com/apache/dubbo-go-samples/java_interop/service_discovery/service/proto"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/java_interop/non-protobuf-dubbo/README.md b/java_interop/non-protobuf-dubbo/README.md
new file mode 100644
index 0000000..a78d28a
--- /dev/null
+++ b/java_interop/non-protobuf-dubbo/README.md
@@ -0,0 +1,3 @@
+# Dubbo java and go interoperability, dubbo protocol
+
+Please refer to [Multiple Protocols](https://github.com/apache/dubbo-go-samples/tree/main/rpc/multi-protocols) for how to write non-protobuf style protocol.
\ No newline at end of file
diff --git a/java_interop/non-protobuf-triple/README.md b/java_interop/non-protobuf-triple/README.md
new file mode 100644
index 0000000..e728f8c
--- /dev/null
+++ b/java_interop/non-protobuf-triple/README.md
@@ -0,0 +1,3 @@
+# Dubbo java and go interoperability, non-protobuf and triple protocol
+
+Please refer to [Multiple Protocols](https://github.com/apache/dubbo-go-samples/tree/main/rpc/multi-protocols) for how to write non-protobuf style protocol.
\ No newline at end of file
diff --git a/java_interop/protobuf-triple/README_zh.md b/java_interop/protobuf-triple/README.md
similarity index 96%
rename from java_interop/protobuf-triple/README_zh.md
rename to java_interop/protobuf-triple/README.md
index b7ef1d3..5376d55 100644
--- a/java_interop/protobuf-triple/README_zh.md
+++ b/java_interop/protobuf-triple/README.md
@@ -1,4 +1,4 @@
-# dubbogo-java
+# Dubbo java and go interoperability, protobuf and triple protocol
 
 使用同一个 proto 文件实现 dubbo-java 和 dubbo-go 互通
 
diff --git a/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/DubboGreeterTriple.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/DubboGreeterTriple.java
new file mode 100644
index 0000000..5fba724
--- /dev/null
+++ b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/DubboGreeterTriple.java
@@ -0,0 +1,182 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+    package org.apache.dubbo.sample;
+
+import org.apache.dubbo.common.stream.StreamObserver;
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.rpc.Invoker;
+import org.apache.dubbo.rpc.PathResolver;
+import org.apache.dubbo.rpc.RpcException;
+import org.apache.dubbo.rpc.ServerService;
+import org.apache.dubbo.rpc.TriRpcStatus;
+import org.apache.dubbo.rpc.model.MethodDescriptor;
+import org.apache.dubbo.rpc.model.ServiceDescriptor;
+import org.apache.dubbo.rpc.model.StubMethodDescriptor;
+import org.apache.dubbo.rpc.model.StubServiceDescriptor;
+import org.apache.dubbo.rpc.stub.BiStreamMethodHandler;
+import org.apache.dubbo.rpc.stub.ServerStreamMethodHandler;
+import org.apache.dubbo.rpc.stub.StubInvocationUtil;
+import org.apache.dubbo.rpc.stub.StubInvoker;
+import org.apache.dubbo.rpc.stub.StubMethodHandler;
+import org.apache.dubbo.rpc.stub.StubSuppliers;
+import org.apache.dubbo.rpc.stub.UnaryStubMethodHandler;
+
+import com.google.protobuf.Message;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.function.BiConsumer;
+import java.util.concurrent.CompletableFuture;
+
+public final class DubboGreeterTriple {
+
+    public static final String SERVICE_NAME = Greeter.SERVICE_NAME;
+
+    private static final StubServiceDescriptor serviceDescriptor = new StubServiceDescriptor(SERVICE_NAME,Greeter.class);
+
+    static {
+        org.apache.dubbo.rpc.protocol.tri.service.SchemaDescriptorRegistry.addSchemaDescriptor(SERVICE_NAME,HelloWorldProto.getDescriptor());
+        StubSuppliers.addSupplier(SERVICE_NAME, DubboGreeterTriple::newStub);
+        StubSuppliers.addSupplier(Greeter.JAVA_SERVICE_NAME,  DubboGreeterTriple::newStub);
+        StubSuppliers.addDescriptor(SERVICE_NAME, serviceDescriptor);
+        StubSuppliers.addDescriptor(Greeter.JAVA_SERVICE_NAME, serviceDescriptor);
+    }
+
+    @SuppressWarnings("all")
+    public static Greeter newStub(Invoker<?> invoker) {
+        return new GreeterStub((Invoker<Greeter>)invoker);
+    }
+
+    /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+    private static final StubMethodDescriptor sayHelloMethod = new StubMethodDescriptor("SayHello",
+    org.apache.dubbo.sample.HelloRequest.class, org.apache.dubbo.sample.HelloReply.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY,
+    obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), org.apache.dubbo.sample.HelloRequest::parseFrom,
+    org.apache.dubbo.sample.HelloReply::parseFrom);
+
+    private static final StubMethodDescriptor sayHelloAsyncMethod = new StubMethodDescriptor("SayHello",
+    org.apache.dubbo.sample.HelloRequest.class, java.util.concurrent.CompletableFuture.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY,
+    obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), org.apache.dubbo.sample.HelloRequest::parseFrom,
+    org.apache.dubbo.sample.HelloReply::parseFrom);
+
+    private static final StubMethodDescriptor sayHelloProxyAsyncMethod = new StubMethodDescriptor("SayHelloAsync",
+    org.apache.dubbo.sample.HelloRequest.class, org.apache.dubbo.sample.HelloReply.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY,
+    obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), org.apache.dubbo.sample.HelloRequest::parseFrom,
+    org.apache.dubbo.sample.HelloReply::parseFrom);
+
+
+
+
+
+    public static class GreeterStub implements Greeter{
+        private final Invoker<Greeter> invoker;
+
+        public GreeterStub(Invoker<Greeter> invoker) {
+            this.invoker = invoker;
+        }
+
+            /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+        @Override
+        public org.apache.dubbo.sample.HelloReply sayHello(org.apache.dubbo.sample.HelloRequest request){
+            return StubInvocationUtil.unaryCall(invoker, sayHelloMethod, request);
+        }
+
+        public CompletableFuture<org.apache.dubbo.sample.HelloReply> sayHelloAsync(org.apache.dubbo.sample.HelloRequest request){
+            return StubInvocationUtil.unaryCall(invoker, sayHelloAsyncMethod, request);
+        }
+
+            /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+        @Override
+        public void sayHello(org.apache.dubbo.sample.HelloRequest request, StreamObserver<org.apache.dubbo.sample.HelloReply> responseObserver){
+            StubInvocationUtil.unaryCall(invoker, sayHelloMethod , request, responseObserver);
+        }
+
+
+
+    }
+
+    public static abstract class GreeterImplBase implements Greeter, ServerService<Greeter> {
+
+        private <T, R> BiConsumer<T, StreamObserver<R>> syncToAsync(java.util.function.Function<T, R> syncFun) {
+            return new BiConsumer<T, StreamObserver<R>>() {
+                @Override
+                public void accept(T t, StreamObserver<R> observer) {
+                    try {
+                        R ret = syncFun.apply(t);
+                        observer.onNext(ret);
+                        observer.onCompleted();
+                    } catch (Throwable e) {
+                        observer.onError(e);
+                    }
+                }
+            };
+        }
+
+        @Override
+        public final Invoker<Greeter> getInvoker(URL url) {
+            PathResolver pathResolver = url.getOrDefaultFrameworkModel()
+            .getExtensionLoader(PathResolver.class)
+            .getDefaultExtension();
+            Map<String,StubMethodHandler<?, ?>> handlers = new HashMap<>();
+
+            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHello" );
+            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHelloAsync" );
+
+            BiConsumer<org.apache.dubbo.sample.HelloRequest, StreamObserver<org.apache.dubbo.sample.HelloReply>> sayHelloFunc = this::sayHello;
+            handlers.put(sayHelloMethod.getMethodName(), new UnaryStubMethodHandler<>(sayHelloFunc));
+            BiConsumer<org.apache.dubbo.sample.HelloRequest, StreamObserver<org.apache.dubbo.sample.HelloReply>> sayHelloAsyncFunc = syncToAsync(this::sayHello);
+            handlers.put(sayHelloProxyAsyncMethod.getMethodName(), new UnaryStubMethodHandler<>(sayHelloAsyncFunc));
+
+
+
+
+            return new StubInvoker<>(this, url, Greeter.class, handlers);
+        }
+
+
+        @Override
+        public org.apache.dubbo.sample.HelloReply sayHello(org.apache.dubbo.sample.HelloRequest request){
+            throw unimplementedMethodException(sayHelloMethod);
+        }
+
+
+
+
+
+        @Override
+        public final ServiceDescriptor getServiceDescriptor() {
+            return serviceDescriptor;
+        }
+        private RpcException unimplementedMethodException(StubMethodDescriptor methodDescriptor) {
+            return TriRpcStatus.UNIMPLEMENTED.withDescription(String.format("Method %s is unimplemented",
+                "/" + serviceDescriptor.getInterfaceName() + "/" + methodDescriptor.getMethodName())).asException();
+        }
+    }
+
+}
diff --git a/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/Greeter.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/Greeter.java
new file mode 100644
index 0000000..e783758
--- /dev/null
+++ b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/Greeter.java
@@ -0,0 +1,64 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+    package org.apache.dubbo.sample;
+
+import org.apache.dubbo.common.stream.StreamObserver;
+import com.google.protobuf.Message;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.function.BiConsumer;
+import java.util.concurrent.CompletableFuture;
+
+public interface Greeter {
+
+    String JAVA_SERVICE_NAME = "org.apache.dubbo.sample.Greeter";
+    String SERVICE_NAME = "org.apache.dubbo.samples.Greeter";
+
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+    org.apache.dubbo.sample.HelloReply sayHello(org.apache.dubbo.sample.HelloRequest request);
+
+    default CompletableFuture<org.apache.dubbo.sample.HelloReply> sayHelloAsync(org.apache.dubbo.sample.HelloRequest request){
+        return CompletableFuture.completedFuture(sayHello(request));
+    }
+
+    /**
+    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
+    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
+    */
+    default void sayHello(org.apache.dubbo.sample.HelloRequest request, StreamObserver<org.apache.dubbo.sample.HelloReply> responseObserver){
+        sayHelloAsync(request).whenComplete((r, t) -> {
+            if (t != null) {
+                responseObserver.onError(t);
+            } else {
+                responseObserver.onNext(r);
+                responseObserver.onCompleted();
+            }
+        });
+    }
+
+
+
+
+
+
+}
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloReply.java
similarity index 66%
copy from service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
copy to java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloReply.java
index 1f7b834..8712757 100644
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
+++ b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloReply.java
@@ -1,29 +1,33 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: greet.proto
 
-package org.apache.dubbo.samples.proto;
+package org.apache.dubbo.sample;
 
 /**
- * Protobuf type {@code org.apache.dubbo.samples.proto.GreetRequest}
+ * <pre>
+ * The response message containing the greetings
+ * </pre>
+ *
+ * Protobuf type {@code org.apache.dubbo.samples.HelloReply}
  */
-public final class GreetRequest extends
+public final class HelloReply extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.proto.GreetRequest)
-    GreetRequestOrBuilder {
+    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.HelloReply)
+    HelloReplyOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use GreetRequest.newBuilder() to construct.
-  private GreetRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloReply.newBuilder() to construct.
+  private HelloReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private GreetRequest() {
-    name_ = "";
+  private HelloReply() {
+    message_ = "";
   }
 
   @java.lang.Override
   @SuppressWarnings({"unused"})
   protected java.lang.Object newInstance(
       UnusedPrivateParameter unused) {
-    return new GreetRequest();
+    return new HelloReply();
   }
 
   @java.lang.Override
@@ -31,7 +35,7 @@
   getUnknownFields() {
     return this.unknownFields;
   }
-  private GreetRequest(
+  private HelloReply(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -52,7 +56,7 @@
           case 10: {
             java.lang.String s = input.readStringRequireUtf8();
 
-            name_ = s;
+            message_ = s;
             break;
           }
           default: {
@@ -76,49 +80,49 @@
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
+    return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable
+    return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            org.apache.dubbo.samples.proto.GreetRequest.class, org.apache.dubbo.samples.proto.GreetRequest.Builder.class);
+            org.apache.dubbo.sample.HelloReply.class, org.apache.dubbo.sample.HelloReply.Builder.class);
   }
 
-  public static final int NAME_FIELD_NUMBER = 1;
-  private volatile java.lang.Object name_;
+  public static final int MESSAGE_FIELD_NUMBER = 1;
+  private volatile java.lang.Object message_;
   /**
-   * <code>string name = 1;</code>
-   * @return The name.
+   * <code>string message = 1;</code>
+   * @return The message.
    */
   @java.lang.Override
-  public java.lang.String getName() {
-    java.lang.Object ref = name_;
+  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();
-      name_ = s;
+      message_ = s;
       return s;
     }
   }
   /**
-   * <code>string name = 1;</code>
-   * @return The bytes for name.
+   * <code>string message = 1;</code>
+   * @return The bytes for message.
    */
   @java.lang.Override
   public com.google.protobuf.ByteString
-      getNameBytes() {
-    java.lang.Object ref = name_;
+      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);
-      name_ = b;
+      message_ = b;
       return b;
     } else {
       return (com.google.protobuf.ByteString) ref;
@@ -139,8 +143,8 @@
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, message_);
     }
     unknownFields.writeTo(output);
   }
@@ -151,8 +155,8 @@
     if (size != -1) return size;
 
     size = 0;
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, message_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -164,13 +168,13 @@
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof org.apache.dubbo.samples.proto.GreetRequest)) {
+    if (!(obj instanceof org.apache.dubbo.sample.HelloReply)) {
       return super.equals(obj);
     }
-    org.apache.dubbo.samples.proto.GreetRequest other = (org.apache.dubbo.samples.proto.GreetRequest) obj;
+    org.apache.dubbo.sample.HelloReply other = (org.apache.dubbo.sample.HelloReply) obj;
 
-    if (!getName()
-        .equals(other.getName())) return false;
+    if (!getMessage()
+        .equals(other.getMessage())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -182,76 +186,76 @@
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + NAME_FIELD_NUMBER;
-    hash = (53 * hash) + getName().hashCode();
+    hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
+    hash = (53 * hash) + getMessage().hashCode();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(byte[] data)
+  public static org.apache.dubbo.sample.HelloReply parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(java.io.InputStream input)
+  public static org.apache.dubbo.sample.HelloReply parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.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 org.apache.dubbo.samples.proto.GreetRequest parseDelimitedFrom(java.io.InputStream input)
+  public static org.apache.dubbo.sample.HelloReply parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseDelimitedFrom(
+  public static org.apache.dubbo.sample.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 org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -264,7 +268,7 @@
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(org.apache.dubbo.samples.proto.GreetRequest prototype) {
+  public static Builder newBuilder(org.apache.dubbo.sample.HelloReply prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -280,26 +284,30 @@
     return builder;
   }
   /**
-   * Protobuf type {@code org.apache.dubbo.samples.proto.GreetRequest}
+   * <pre>
+   * The response message containing the greetings
+   * </pre>
+   *
+   * Protobuf type {@code org.apache.dubbo.samples.HelloReply}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.proto.GreetRequest)
-      org.apache.dubbo.samples.proto.GreetRequestOrBuilder {
+      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.HelloReply)
+      org.apache.dubbo.sample.HelloReplyOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              org.apache.dubbo.samples.proto.GreetRequest.class, org.apache.dubbo.samples.proto.GreetRequest.Builder.class);
+              org.apache.dubbo.sample.HelloReply.class, org.apache.dubbo.sample.HelloReply.Builder.class);
     }
 
-    // Construct using org.apache.dubbo.samples.proto.GreetRequest.newBuilder()
+    // Construct using org.apache.dubbo.sample.HelloReply.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -317,7 +325,7 @@
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      name_ = "";
+      message_ = "";
 
       return this;
     }
@@ -325,17 +333,17 @@
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_descriptor;
     }
 
     @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest getDefaultInstanceForType() {
-      return org.apache.dubbo.samples.proto.GreetRequest.getDefaultInstance();
+    public org.apache.dubbo.sample.HelloReply getDefaultInstanceForType() {
+      return org.apache.dubbo.sample.HelloReply.getDefaultInstance();
     }
 
     @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest build() {
-      org.apache.dubbo.samples.proto.GreetRequest result = buildPartial();
+    public org.apache.dubbo.sample.HelloReply build() {
+      org.apache.dubbo.sample.HelloReply result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -343,9 +351,9 @@
     }
 
     @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest buildPartial() {
-      org.apache.dubbo.samples.proto.GreetRequest result = new org.apache.dubbo.samples.proto.GreetRequest(this);
-      result.name_ = name_;
+    public org.apache.dubbo.sample.HelloReply buildPartial() {
+      org.apache.dubbo.sample.HelloReply result = new org.apache.dubbo.sample.HelloReply(this);
+      result.message_ = message_;
       onBuilt();
       return result;
     }
@@ -384,18 +392,18 @@
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof org.apache.dubbo.samples.proto.GreetRequest) {
-        return mergeFrom((org.apache.dubbo.samples.proto.GreetRequest)other);
+      if (other instanceof org.apache.dubbo.sample.HelloReply) {
+        return mergeFrom((org.apache.dubbo.sample.HelloReply)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(org.apache.dubbo.samples.proto.GreetRequest other) {
-      if (other == org.apache.dubbo.samples.proto.GreetRequest.getDefaultInstance()) return this;
-      if (!other.getName().isEmpty()) {
-        name_ = other.name_;
+    public Builder mergeFrom(org.apache.dubbo.sample.HelloReply other) {
+      if (other == org.apache.dubbo.sample.HelloReply.getDefaultInstance()) return this;
+      if (!other.getMessage().isEmpty()) {
+        message_ = other.message_;
         onChanged();
       }
       this.mergeUnknownFields(other.unknownFields);
@@ -413,11 +421,11 @@
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      org.apache.dubbo.samples.proto.GreetRequest parsedMessage = null;
+      org.apache.dubbo.sample.HelloReply parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (org.apache.dubbo.samples.proto.GreetRequest) e.getUnfinishedMessage();
+        parsedMessage = (org.apache.dubbo.sample.HelloReply) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -427,78 +435,78 @@
       return this;
     }
 
-    private java.lang.Object name_ = "";
+    private java.lang.Object message_ = "";
     /**
-     * <code>string name = 1;</code>
-     * @return The name.
+     * <code>string message = 1;</code>
+     * @return The message.
      */
-    public java.lang.String getName() {
-      java.lang.Object ref = name_;
+    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();
-        name_ = s;
+        message_ = s;
         return s;
       } else {
         return (java.lang.String) ref;
       }
     }
     /**
-     * <code>string name = 1;</code>
-     * @return The bytes for name.
+     * <code>string message = 1;</code>
+     * @return The bytes for message.
      */
     public com.google.protobuf.ByteString
-        getNameBytes() {
-      java.lang.Object ref = name_;
+        getMessageBytes() {
+      java.lang.Object ref = message_;
       if (ref instanceof String) {
         com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
-        name_ = b;
+        message_ = b;
         return b;
       } else {
         return (com.google.protobuf.ByteString) ref;
       }
     }
     /**
-     * <code>string name = 1;</code>
-     * @param value The name to set.
+     * <code>string message = 1;</code>
+     * @param value The message to set.
      * @return This builder for chaining.
      */
-    public Builder setName(
+    public Builder setMessage(
         java.lang.String value) {
       if (value == null) {
     throw new NullPointerException();
   }
   
-      name_ = value;
+      message_ = value;
       onChanged();
       return this;
     }
     /**
-     * <code>string name = 1;</code>
+     * <code>string message = 1;</code>
      * @return This builder for chaining.
      */
-    public Builder clearName() {
+    public Builder clearMessage() {
       
-      name_ = getDefaultInstance().getName();
+      message_ = getDefaultInstance().getMessage();
       onChanged();
       return this;
     }
     /**
-     * <code>string name = 1;</code>
-     * @param value The bytes for name to set.
+     * <code>string message = 1;</code>
+     * @param value The bytes for message to set.
      * @return This builder for chaining.
      */
-    public Builder setNameBytes(
+    public Builder setMessageBytes(
         com.google.protobuf.ByteString value) {
       if (value == null) {
     throw new NullPointerException();
   }
   checkByteStringIsUtf8(value);
       
-      name_ = value;
+      message_ = value;
       onChanged();
       return this;
     }
@@ -515,41 +523,41 @@
     }
 
 
-    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.proto.GreetRequest)
+    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.HelloReply)
   }
 
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.proto.GreetRequest)
-  private static final org.apache.dubbo.samples.proto.GreetRequest DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.HelloReply)
+  private static final org.apache.dubbo.sample.HelloReply DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new org.apache.dubbo.samples.proto.GreetRequest();
+    DEFAULT_INSTANCE = new org.apache.dubbo.sample.HelloReply();
   }
 
-  public static org.apache.dubbo.samples.proto.GreetRequest getDefaultInstance() {
+  public static org.apache.dubbo.sample.HelloReply getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<GreetRequest>
-      PARSER = new com.google.protobuf.AbstractParser<GreetRequest>() {
+  private static final com.google.protobuf.Parser<HelloReply>
+      PARSER = new com.google.protobuf.AbstractParser<HelloReply>() {
     @java.lang.Override
-    public GreetRequest parsePartialFrom(
+    public HelloReply parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new GreetRequest(input, extensionRegistry);
+      return new HelloReply(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<GreetRequest> parser() {
+  public static com.google.protobuf.Parser<HelloReply> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<GreetRequest> getParserForType() {
+  public com.google.protobuf.Parser<HelloReply> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public org.apache.dubbo.samples.proto.GreetRequest getDefaultInstanceForType() {
+  public org.apache.dubbo.sample.HelloReply getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java
new file mode 100644
index 0000000..71da562
--- /dev/null
+++ b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java
@@ -0,0 +1,21 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: greet.proto
+
+package org.apache.dubbo.sample;
+
+public interface HelloReplyOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.HelloReply)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string message = 1;</code>
+   * @return The message.
+   */
+  java.lang.String getMessage();
+  /**
+   * <code>string message = 1;</code>
+   * @return The bytes for message.
+   */
+  com.google.protobuf.ByteString
+      getMessageBytes();
+}
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloRequest.java
similarity index 75%
rename from service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
rename to java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloRequest.java
index 1f7b834..b8a490a 100644
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
+++ b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloRequest.java
@@ -1,21 +1,25 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: greet.proto
 
-package org.apache.dubbo.samples.proto;
+package org.apache.dubbo.sample;
 
 /**
- * Protobuf type {@code org.apache.dubbo.samples.proto.GreetRequest}
+ * <pre>
+ * The request message containing the user's name.
+ * </pre>
+ *
+ * Protobuf type {@code org.apache.dubbo.samples.HelloRequest}
  */
-public final class GreetRequest extends
+public final class HelloRequest extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.proto.GreetRequest)
-    GreetRequestOrBuilder {
+    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.HelloRequest)
+    HelloRequestOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use GreetRequest.newBuilder() to construct.
-  private GreetRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloRequest.newBuilder() to construct.
+  private HelloRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private GreetRequest() {
+  private HelloRequest() {
     name_ = "";
   }
 
@@ -23,7 +27,7 @@
   @SuppressWarnings({"unused"})
   protected java.lang.Object newInstance(
       UnusedPrivateParameter unused) {
-    return new GreetRequest();
+    return new HelloRequest();
   }
 
   @java.lang.Override
@@ -31,7 +35,7 @@
   getUnknownFields() {
     return this.unknownFields;
   }
-  private GreetRequest(
+  private HelloRequest(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -76,15 +80,15 @@
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
+    return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable
+    return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            org.apache.dubbo.samples.proto.GreetRequest.class, org.apache.dubbo.samples.proto.GreetRequest.Builder.class);
+            org.apache.dubbo.sample.HelloRequest.class, org.apache.dubbo.sample.HelloRequest.Builder.class);
   }
 
   public static final int NAME_FIELD_NUMBER = 1;
@@ -164,10 +168,10 @@
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof org.apache.dubbo.samples.proto.GreetRequest)) {
+    if (!(obj instanceof org.apache.dubbo.sample.HelloRequest)) {
       return super.equals(obj);
     }
-    org.apache.dubbo.samples.proto.GreetRequest other = (org.apache.dubbo.samples.proto.GreetRequest) obj;
+    org.apache.dubbo.sample.HelloRequest other = (org.apache.dubbo.sample.HelloRequest) obj;
 
     if (!getName()
         .equals(other.getName())) return false;
@@ -189,69 +193,69 @@
     return hash;
   }
 
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(byte[] data)
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(java.io.InputStream input)
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.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 org.apache.dubbo.samples.proto.GreetRequest parseDelimitedFrom(java.io.InputStream input)
+  public static org.apache.dubbo.sample.HelloRequest parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseDelimitedFrom(
+  public static org.apache.dubbo.sample.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 org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -264,7 +268,7 @@
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(org.apache.dubbo.samples.proto.GreetRequest prototype) {
+  public static Builder newBuilder(org.apache.dubbo.sample.HelloRequest prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -280,26 +284,30 @@
     return builder;
   }
   /**
-   * Protobuf type {@code org.apache.dubbo.samples.proto.GreetRequest}
+   * <pre>
+   * The request message containing the user's name.
+   * </pre>
+   *
+   * Protobuf type {@code org.apache.dubbo.samples.HelloRequest}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.proto.GreetRequest)
-      org.apache.dubbo.samples.proto.GreetRequestOrBuilder {
+      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.HelloRequest)
+      org.apache.dubbo.sample.HelloRequestOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              org.apache.dubbo.samples.proto.GreetRequest.class, org.apache.dubbo.samples.proto.GreetRequest.Builder.class);
+              org.apache.dubbo.sample.HelloRequest.class, org.apache.dubbo.sample.HelloRequest.Builder.class);
     }
 
-    // Construct using org.apache.dubbo.samples.proto.GreetRequest.newBuilder()
+    // Construct using org.apache.dubbo.sample.HelloRequest.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -325,17 +333,17 @@
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_descriptor;
     }
 
     @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest getDefaultInstanceForType() {
-      return org.apache.dubbo.samples.proto.GreetRequest.getDefaultInstance();
+    public org.apache.dubbo.sample.HelloRequest getDefaultInstanceForType() {
+      return org.apache.dubbo.sample.HelloRequest.getDefaultInstance();
     }
 
     @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest build() {
-      org.apache.dubbo.samples.proto.GreetRequest result = buildPartial();
+    public org.apache.dubbo.sample.HelloRequest build() {
+      org.apache.dubbo.sample.HelloRequest result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -343,8 +351,8 @@
     }
 
     @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest buildPartial() {
-      org.apache.dubbo.samples.proto.GreetRequest result = new org.apache.dubbo.samples.proto.GreetRequest(this);
+    public org.apache.dubbo.sample.HelloRequest buildPartial() {
+      org.apache.dubbo.sample.HelloRequest result = new org.apache.dubbo.sample.HelloRequest(this);
       result.name_ = name_;
       onBuilt();
       return result;
@@ -384,16 +392,16 @@
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof org.apache.dubbo.samples.proto.GreetRequest) {
-        return mergeFrom((org.apache.dubbo.samples.proto.GreetRequest)other);
+      if (other instanceof org.apache.dubbo.sample.HelloRequest) {
+        return mergeFrom((org.apache.dubbo.sample.HelloRequest)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(org.apache.dubbo.samples.proto.GreetRequest other) {
-      if (other == org.apache.dubbo.samples.proto.GreetRequest.getDefaultInstance()) return this;
+    public Builder mergeFrom(org.apache.dubbo.sample.HelloRequest other) {
+      if (other == org.apache.dubbo.sample.HelloRequest.getDefaultInstance()) return this;
       if (!other.getName().isEmpty()) {
         name_ = other.name_;
         onChanged();
@@ -413,11 +421,11 @@
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      org.apache.dubbo.samples.proto.GreetRequest parsedMessage = null;
+      org.apache.dubbo.sample.HelloRequest parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (org.apache.dubbo.samples.proto.GreetRequest) e.getUnfinishedMessage();
+        parsedMessage = (org.apache.dubbo.sample.HelloRequest) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -515,41 +523,41 @@
     }
 
 
-    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.proto.GreetRequest)
+    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.HelloRequest)
   }
 
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.proto.GreetRequest)
-  private static final org.apache.dubbo.samples.proto.GreetRequest DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.HelloRequest)
+  private static final org.apache.dubbo.sample.HelloRequest DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new org.apache.dubbo.samples.proto.GreetRequest();
+    DEFAULT_INSTANCE = new org.apache.dubbo.sample.HelloRequest();
   }
 
-  public static org.apache.dubbo.samples.proto.GreetRequest getDefaultInstance() {
+  public static org.apache.dubbo.sample.HelloRequest getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<GreetRequest>
-      PARSER = new com.google.protobuf.AbstractParser<GreetRequest>() {
+  private static final com.google.protobuf.Parser<HelloRequest>
+      PARSER = new com.google.protobuf.AbstractParser<HelloRequest>() {
     @java.lang.Override
-    public GreetRequest parsePartialFrom(
+    public HelloRequest parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new GreetRequest(input, extensionRegistry);
+      return new HelloRequest(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<GreetRequest> parser() {
+  public static com.google.protobuf.Parser<HelloRequest> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<GreetRequest> getParserForType() {
+  public com.google.protobuf.Parser<HelloRequest> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public org.apache.dubbo.samples.proto.GreetRequest getDefaultInstanceForType() {
+  public org.apache.dubbo.sample.HelloRequest getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
similarity index 78%
rename from service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
rename to java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
index 63353e9..0573b3d 100644
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
+++ b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
@@ -1,10 +1,10 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: greet.proto
 
-package org.apache.dubbo.samples.proto;
+package org.apache.dubbo.sample;
 
-public interface GreetRequestOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.GreetRequest)
+public interface HelloRequestOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.HelloRequest)
     com.google.protobuf.MessageOrBuilder {
 
   /**
diff --git a/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloWorldProto.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloWorldProto.java
new file mode 100644
index 0000000..aed85f5
--- /dev/null
+++ b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloWorldProto.java
@@ -0,0 +1,63 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: greet.proto
+
+package org.apache.dubbo.sample;
+
+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_org_apache_dubbo_samples_HelloRequest_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_org_apache_dubbo_samples_HelloRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_org_apache_dubbo_samples_HelloReply_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_org_apache_dubbo_samples_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\013greet.proto\022\030org.apache.dubbo.samples\"" +
+      "\034\n\014HelloRequest\022\014\n\004name\030\001 \001(\t\"\035\n\nHelloRe" +
+      "ply\022\017\n\007message\030\001 \001(\t2c\n\007Greeter\022X\n\010SayHe" +
+      "llo\022&.org.apache.dubbo.samples.HelloRequ" +
+      "est\032$.org.apache.dubbo.samples.HelloRepl" +
+      "yB?\n\027org.apache.dubbo.sampleB\017HelloWorld" +
+      "ProtoP\001Z\014/proto;proto\242\002\002WHb\006proto3"
+    };
+    descriptor = com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        });
+    internal_static_org_apache_dubbo_samples_HelloRequest_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_org_apache_dubbo_samples_HelloRequest_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_org_apache_dubbo_samples_HelloRequest_descriptor,
+        new java.lang.String[] { "Name", });
+    internal_static_org_apache_dubbo_samples_HelloReply_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_org_apache_dubbo_samples_HelloReply_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_org_apache_dubbo_samples_HelloReply_descriptor,
+        new java.lang.String[] { "Message", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/DubboGreeterTriple.java b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/DubboGreeterTriple.java
new file mode 100644
index 0000000..5fba724
--- /dev/null
+++ b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/DubboGreeterTriple.java
@@ -0,0 +1,182 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+    package org.apache.dubbo.sample;
+
+import org.apache.dubbo.common.stream.StreamObserver;
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.rpc.Invoker;
+import org.apache.dubbo.rpc.PathResolver;
+import org.apache.dubbo.rpc.RpcException;
+import org.apache.dubbo.rpc.ServerService;
+import org.apache.dubbo.rpc.TriRpcStatus;
+import org.apache.dubbo.rpc.model.MethodDescriptor;
+import org.apache.dubbo.rpc.model.ServiceDescriptor;
+import org.apache.dubbo.rpc.model.StubMethodDescriptor;
+import org.apache.dubbo.rpc.model.StubServiceDescriptor;
+import org.apache.dubbo.rpc.stub.BiStreamMethodHandler;
+import org.apache.dubbo.rpc.stub.ServerStreamMethodHandler;
+import org.apache.dubbo.rpc.stub.StubInvocationUtil;
+import org.apache.dubbo.rpc.stub.StubInvoker;
+import org.apache.dubbo.rpc.stub.StubMethodHandler;
+import org.apache.dubbo.rpc.stub.StubSuppliers;
+import org.apache.dubbo.rpc.stub.UnaryStubMethodHandler;
+
+import com.google.protobuf.Message;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.function.BiConsumer;
+import java.util.concurrent.CompletableFuture;
+
+public final class DubboGreeterTriple {
+
+    public static final String SERVICE_NAME = Greeter.SERVICE_NAME;
+
+    private static final StubServiceDescriptor serviceDescriptor = new StubServiceDescriptor(SERVICE_NAME,Greeter.class);
+
+    static {
+        org.apache.dubbo.rpc.protocol.tri.service.SchemaDescriptorRegistry.addSchemaDescriptor(SERVICE_NAME,HelloWorldProto.getDescriptor());
+        StubSuppliers.addSupplier(SERVICE_NAME, DubboGreeterTriple::newStub);
+        StubSuppliers.addSupplier(Greeter.JAVA_SERVICE_NAME,  DubboGreeterTriple::newStub);
+        StubSuppliers.addDescriptor(SERVICE_NAME, serviceDescriptor);
+        StubSuppliers.addDescriptor(Greeter.JAVA_SERVICE_NAME, serviceDescriptor);
+    }
+
+    @SuppressWarnings("all")
+    public static Greeter newStub(Invoker<?> invoker) {
+        return new GreeterStub((Invoker<Greeter>)invoker);
+    }
+
+    /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+    private static final StubMethodDescriptor sayHelloMethod = new StubMethodDescriptor("SayHello",
+    org.apache.dubbo.sample.HelloRequest.class, org.apache.dubbo.sample.HelloReply.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY,
+    obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), org.apache.dubbo.sample.HelloRequest::parseFrom,
+    org.apache.dubbo.sample.HelloReply::parseFrom);
+
+    private static final StubMethodDescriptor sayHelloAsyncMethod = new StubMethodDescriptor("SayHello",
+    org.apache.dubbo.sample.HelloRequest.class, java.util.concurrent.CompletableFuture.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY,
+    obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), org.apache.dubbo.sample.HelloRequest::parseFrom,
+    org.apache.dubbo.sample.HelloReply::parseFrom);
+
+    private static final StubMethodDescriptor sayHelloProxyAsyncMethod = new StubMethodDescriptor("SayHelloAsync",
+    org.apache.dubbo.sample.HelloRequest.class, org.apache.dubbo.sample.HelloReply.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY,
+    obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), org.apache.dubbo.sample.HelloRequest::parseFrom,
+    org.apache.dubbo.sample.HelloReply::parseFrom);
+
+
+
+
+
+    public static class GreeterStub implements Greeter{
+        private final Invoker<Greeter> invoker;
+
+        public GreeterStub(Invoker<Greeter> invoker) {
+            this.invoker = invoker;
+        }
+
+            /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+        @Override
+        public org.apache.dubbo.sample.HelloReply sayHello(org.apache.dubbo.sample.HelloRequest request){
+            return StubInvocationUtil.unaryCall(invoker, sayHelloMethod, request);
+        }
+
+        public CompletableFuture<org.apache.dubbo.sample.HelloReply> sayHelloAsync(org.apache.dubbo.sample.HelloRequest request){
+            return StubInvocationUtil.unaryCall(invoker, sayHelloAsyncMethod, request);
+        }
+
+            /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+        @Override
+        public void sayHello(org.apache.dubbo.sample.HelloRequest request, StreamObserver<org.apache.dubbo.sample.HelloReply> responseObserver){
+            StubInvocationUtil.unaryCall(invoker, sayHelloMethod , request, responseObserver);
+        }
+
+
+
+    }
+
+    public static abstract class GreeterImplBase implements Greeter, ServerService<Greeter> {
+
+        private <T, R> BiConsumer<T, StreamObserver<R>> syncToAsync(java.util.function.Function<T, R> syncFun) {
+            return new BiConsumer<T, StreamObserver<R>>() {
+                @Override
+                public void accept(T t, StreamObserver<R> observer) {
+                    try {
+                        R ret = syncFun.apply(t);
+                        observer.onNext(ret);
+                        observer.onCompleted();
+                    } catch (Throwable e) {
+                        observer.onError(e);
+                    }
+                }
+            };
+        }
+
+        @Override
+        public final Invoker<Greeter> getInvoker(URL url) {
+            PathResolver pathResolver = url.getOrDefaultFrameworkModel()
+            .getExtensionLoader(PathResolver.class)
+            .getDefaultExtension();
+            Map<String,StubMethodHandler<?, ?>> handlers = new HashMap<>();
+
+            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHello" );
+            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHelloAsync" );
+
+            BiConsumer<org.apache.dubbo.sample.HelloRequest, StreamObserver<org.apache.dubbo.sample.HelloReply>> sayHelloFunc = this::sayHello;
+            handlers.put(sayHelloMethod.getMethodName(), new UnaryStubMethodHandler<>(sayHelloFunc));
+            BiConsumer<org.apache.dubbo.sample.HelloRequest, StreamObserver<org.apache.dubbo.sample.HelloReply>> sayHelloAsyncFunc = syncToAsync(this::sayHello);
+            handlers.put(sayHelloProxyAsyncMethod.getMethodName(), new UnaryStubMethodHandler<>(sayHelloAsyncFunc));
+
+
+
+
+            return new StubInvoker<>(this, url, Greeter.class, handlers);
+        }
+
+
+        @Override
+        public org.apache.dubbo.sample.HelloReply sayHello(org.apache.dubbo.sample.HelloRequest request){
+            throw unimplementedMethodException(sayHelloMethod);
+        }
+
+
+
+
+
+        @Override
+        public final ServiceDescriptor getServiceDescriptor() {
+            return serviceDescriptor;
+        }
+        private RpcException unimplementedMethodException(StubMethodDescriptor methodDescriptor) {
+            return TriRpcStatus.UNIMPLEMENTED.withDescription(String.format("Method %s is unimplemented",
+                "/" + serviceDescriptor.getInterfaceName() + "/" + methodDescriptor.getMethodName())).asException();
+        }
+    }
+
+}
diff --git a/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/Greeter.java b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/Greeter.java
new file mode 100644
index 0000000..23f70f0
--- /dev/null
+++ b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/Greeter.java
@@ -0,0 +1,64 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+    package org.apache.dubbo.sample;
+
+import org.apache.dubbo.common.stream.StreamObserver;
+import com.google.protobuf.Message;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.function.BiConsumer;
+import java.util.concurrent.CompletableFuture;
+
+public interface Greeter extends org.apache.dubbo.rpc.model.DubboStub {
+
+    String JAVA_SERVICE_NAME = "org.apache.dubbo.sample.Greeter";
+    String SERVICE_NAME = "org.apache.dubbo.sample.Greeter";
+
+        /**
+         * <pre>
+         *  Sends a greeting
+         * </pre>
+         */
+    org.apache.dubbo.sample.HelloReply sayHello(org.apache.dubbo.sample.HelloRequest request);
+
+    default CompletableFuture<org.apache.dubbo.sample.HelloReply> sayHelloAsync(org.apache.dubbo.sample.HelloRequest request){
+        return CompletableFuture.completedFuture(sayHello(request));
+    }
+
+    /**
+    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
+    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
+    */
+    default void sayHello(org.apache.dubbo.sample.HelloRequest request, StreamObserver<org.apache.dubbo.sample.HelloReply> responseObserver){
+        sayHelloAsync(request).whenComplete((r, t) -> {
+            if (t != null) {
+                responseObserver.onError(t);
+            } else {
+                responseObserver.onNext(r);
+                responseObserver.onCompleted();
+            }
+        });
+    }
+
+
+
+
+
+
+}
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloReply.java
similarity index 66%
copy from service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
copy to java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloReply.java
index 1f7b834..ccc8721 100644
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
+++ b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloReply.java
@@ -1,29 +1,33 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: greet.proto
 
-package org.apache.dubbo.samples.proto;
+package org.apache.dubbo.sample;
 
 /**
- * Protobuf type {@code org.apache.dubbo.samples.proto.GreetRequest}
+ * <pre>
+ * The response message containing the greetings
+ * </pre>
+ *
+ * Protobuf type {@code org.apache.dubbo.sample.HelloReply}
  */
-public final class GreetRequest extends
+public final class HelloReply extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.proto.GreetRequest)
-    GreetRequestOrBuilder {
+    // @@protoc_insertion_point(message_implements:org.apache.dubbo.sample.HelloReply)
+    HelloReplyOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use GreetRequest.newBuilder() to construct.
-  private GreetRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloReply.newBuilder() to construct.
+  private HelloReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private GreetRequest() {
-    name_ = "";
+  private HelloReply() {
+    message_ = "";
   }
 
   @java.lang.Override
   @SuppressWarnings({"unused"})
   protected java.lang.Object newInstance(
       UnusedPrivateParameter unused) {
-    return new GreetRequest();
+    return new HelloReply();
   }
 
   @java.lang.Override
@@ -31,7 +35,7 @@
   getUnknownFields() {
     return this.unknownFields;
   }
-  private GreetRequest(
+  private HelloReply(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -52,7 +56,7 @@
           case 10: {
             java.lang.String s = input.readStringRequireUtf8();
 
-            name_ = s;
+            message_ = s;
             break;
           }
           default: {
@@ -76,49 +80,49 @@
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
+    return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloReply_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable
+    return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloReply_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            org.apache.dubbo.samples.proto.GreetRequest.class, org.apache.dubbo.samples.proto.GreetRequest.Builder.class);
+            org.apache.dubbo.sample.HelloReply.class, org.apache.dubbo.sample.HelloReply.Builder.class);
   }
 
-  public static final int NAME_FIELD_NUMBER = 1;
-  private volatile java.lang.Object name_;
+  public static final int MESSAGE_FIELD_NUMBER = 1;
+  private volatile java.lang.Object message_;
   /**
-   * <code>string name = 1;</code>
-   * @return The name.
+   * <code>string message = 1;</code>
+   * @return The message.
    */
   @java.lang.Override
-  public java.lang.String getName() {
-    java.lang.Object ref = name_;
+  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();
-      name_ = s;
+      message_ = s;
       return s;
     }
   }
   /**
-   * <code>string name = 1;</code>
-   * @return The bytes for name.
+   * <code>string message = 1;</code>
+   * @return The bytes for message.
    */
   @java.lang.Override
   public com.google.protobuf.ByteString
-      getNameBytes() {
-    java.lang.Object ref = name_;
+      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);
-      name_ = b;
+      message_ = b;
       return b;
     } else {
       return (com.google.protobuf.ByteString) ref;
@@ -139,8 +143,8 @@
   @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
+      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, message_);
     }
     unknownFields.writeTo(output);
   }
@@ -151,8 +155,8 @@
     if (size != -1) return size;
 
     size = 0;
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
+    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
+      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, message_);
     }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
@@ -164,13 +168,13 @@
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof org.apache.dubbo.samples.proto.GreetRequest)) {
+    if (!(obj instanceof org.apache.dubbo.sample.HelloReply)) {
       return super.equals(obj);
     }
-    org.apache.dubbo.samples.proto.GreetRequest other = (org.apache.dubbo.samples.proto.GreetRequest) obj;
+    org.apache.dubbo.sample.HelloReply other = (org.apache.dubbo.sample.HelloReply) obj;
 
-    if (!getName()
-        .equals(other.getName())) return false;
+    if (!getMessage()
+        .equals(other.getMessage())) return false;
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -182,76 +186,76 @@
     }
     int hash = 41;
     hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + NAME_FIELD_NUMBER;
-    hash = (53 * hash) + getName().hashCode();
+    hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
+    hash = (53 * hash) + getMessage().hashCode();
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
   }
 
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(byte[] data)
+  public static org.apache.dubbo.sample.HelloReply parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(java.io.InputStream input)
+  public static org.apache.dubbo.sample.HelloReply parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.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 org.apache.dubbo.samples.proto.GreetRequest parseDelimitedFrom(java.io.InputStream input)
+  public static org.apache.dubbo.sample.HelloReply parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseDelimitedFrom(
+  public static org.apache.dubbo.sample.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 org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloReply parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -264,7 +268,7 @@
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(org.apache.dubbo.samples.proto.GreetRequest prototype) {
+  public static Builder newBuilder(org.apache.dubbo.sample.HelloReply prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -280,26 +284,30 @@
     return builder;
   }
   /**
-   * Protobuf type {@code org.apache.dubbo.samples.proto.GreetRequest}
+   * <pre>
+   * The response message containing the greetings
+   * </pre>
+   *
+   * Protobuf type {@code org.apache.dubbo.sample.HelloReply}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.proto.GreetRequest)
-      org.apache.dubbo.samples.proto.GreetRequestOrBuilder {
+      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.sample.HelloReply)
+      org.apache.dubbo.sample.HelloReplyOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloReply_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloReply_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              org.apache.dubbo.samples.proto.GreetRequest.class, org.apache.dubbo.samples.proto.GreetRequest.Builder.class);
+              org.apache.dubbo.sample.HelloReply.class, org.apache.dubbo.sample.HelloReply.Builder.class);
     }
 
-    // Construct using org.apache.dubbo.samples.proto.GreetRequest.newBuilder()
+    // Construct using org.apache.dubbo.sample.HelloReply.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -317,7 +325,7 @@
     @java.lang.Override
     public Builder clear() {
       super.clear();
-      name_ = "";
+      message_ = "";
 
       return this;
     }
@@ -325,17 +333,17 @@
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloReply_descriptor;
     }
 
     @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest getDefaultInstanceForType() {
-      return org.apache.dubbo.samples.proto.GreetRequest.getDefaultInstance();
+    public org.apache.dubbo.sample.HelloReply getDefaultInstanceForType() {
+      return org.apache.dubbo.sample.HelloReply.getDefaultInstance();
     }
 
     @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest build() {
-      org.apache.dubbo.samples.proto.GreetRequest result = buildPartial();
+    public org.apache.dubbo.sample.HelloReply build() {
+      org.apache.dubbo.sample.HelloReply result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -343,9 +351,9 @@
     }
 
     @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest buildPartial() {
-      org.apache.dubbo.samples.proto.GreetRequest result = new org.apache.dubbo.samples.proto.GreetRequest(this);
-      result.name_ = name_;
+    public org.apache.dubbo.sample.HelloReply buildPartial() {
+      org.apache.dubbo.sample.HelloReply result = new org.apache.dubbo.sample.HelloReply(this);
+      result.message_ = message_;
       onBuilt();
       return result;
     }
@@ -384,18 +392,18 @@
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof org.apache.dubbo.samples.proto.GreetRequest) {
-        return mergeFrom((org.apache.dubbo.samples.proto.GreetRequest)other);
+      if (other instanceof org.apache.dubbo.sample.HelloReply) {
+        return mergeFrom((org.apache.dubbo.sample.HelloReply)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(org.apache.dubbo.samples.proto.GreetRequest other) {
-      if (other == org.apache.dubbo.samples.proto.GreetRequest.getDefaultInstance()) return this;
-      if (!other.getName().isEmpty()) {
-        name_ = other.name_;
+    public Builder mergeFrom(org.apache.dubbo.sample.HelloReply other) {
+      if (other == org.apache.dubbo.sample.HelloReply.getDefaultInstance()) return this;
+      if (!other.getMessage().isEmpty()) {
+        message_ = other.message_;
         onChanged();
       }
       this.mergeUnknownFields(other.unknownFields);
@@ -413,11 +421,11 @@
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      org.apache.dubbo.samples.proto.GreetRequest parsedMessage = null;
+      org.apache.dubbo.sample.HelloReply parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (org.apache.dubbo.samples.proto.GreetRequest) e.getUnfinishedMessage();
+        parsedMessage = (org.apache.dubbo.sample.HelloReply) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -427,78 +435,78 @@
       return this;
     }
 
-    private java.lang.Object name_ = "";
+    private java.lang.Object message_ = "";
     /**
-     * <code>string name = 1;</code>
-     * @return The name.
+     * <code>string message = 1;</code>
+     * @return The message.
      */
-    public java.lang.String getName() {
-      java.lang.Object ref = name_;
+    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();
-        name_ = s;
+        message_ = s;
         return s;
       } else {
         return (java.lang.String) ref;
       }
     }
     /**
-     * <code>string name = 1;</code>
-     * @return The bytes for name.
+     * <code>string message = 1;</code>
+     * @return The bytes for message.
      */
     public com.google.protobuf.ByteString
-        getNameBytes() {
-      java.lang.Object ref = name_;
+        getMessageBytes() {
+      java.lang.Object ref = message_;
       if (ref instanceof String) {
         com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
-        name_ = b;
+        message_ = b;
         return b;
       } else {
         return (com.google.protobuf.ByteString) ref;
       }
     }
     /**
-     * <code>string name = 1;</code>
-     * @param value The name to set.
+     * <code>string message = 1;</code>
+     * @param value The message to set.
      * @return This builder for chaining.
      */
-    public Builder setName(
+    public Builder setMessage(
         java.lang.String value) {
       if (value == null) {
     throw new NullPointerException();
   }
   
-      name_ = value;
+      message_ = value;
       onChanged();
       return this;
     }
     /**
-     * <code>string name = 1;</code>
+     * <code>string message = 1;</code>
      * @return This builder for chaining.
      */
-    public Builder clearName() {
+    public Builder clearMessage() {
       
-      name_ = getDefaultInstance().getName();
+      message_ = getDefaultInstance().getMessage();
       onChanged();
       return this;
     }
     /**
-     * <code>string name = 1;</code>
-     * @param value The bytes for name to set.
+     * <code>string message = 1;</code>
+     * @param value The bytes for message to set.
      * @return This builder for chaining.
      */
-    public Builder setNameBytes(
+    public Builder setMessageBytes(
         com.google.protobuf.ByteString value) {
       if (value == null) {
     throw new NullPointerException();
   }
   checkByteStringIsUtf8(value);
       
-      name_ = value;
+      message_ = value;
       onChanged();
       return this;
     }
@@ -515,41 +523,41 @@
     }
 
 
-    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.proto.GreetRequest)
+    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.sample.HelloReply)
   }
 
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.proto.GreetRequest)
-  private static final org.apache.dubbo.samples.proto.GreetRequest DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:org.apache.dubbo.sample.HelloReply)
+  private static final org.apache.dubbo.sample.HelloReply DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new org.apache.dubbo.samples.proto.GreetRequest();
+    DEFAULT_INSTANCE = new org.apache.dubbo.sample.HelloReply();
   }
 
-  public static org.apache.dubbo.samples.proto.GreetRequest getDefaultInstance() {
+  public static org.apache.dubbo.sample.HelloReply getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<GreetRequest>
-      PARSER = new com.google.protobuf.AbstractParser<GreetRequest>() {
+  private static final com.google.protobuf.Parser<HelloReply>
+      PARSER = new com.google.protobuf.AbstractParser<HelloReply>() {
     @java.lang.Override
-    public GreetRequest parsePartialFrom(
+    public HelloReply parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new GreetRequest(input, extensionRegistry);
+      return new HelloReply(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<GreetRequest> parser() {
+  public static com.google.protobuf.Parser<HelloReply> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<GreetRequest> getParserForType() {
+  public com.google.protobuf.Parser<HelloReply> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public org.apache.dubbo.samples.proto.GreetRequest getDefaultInstanceForType() {
+  public org.apache.dubbo.sample.HelloReply getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java
new file mode 100644
index 0000000..79831ab
--- /dev/null
+++ b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java
@@ -0,0 +1,21 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: greet.proto
+
+package org.apache.dubbo.sample;
+
+public interface HelloReplyOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.sample.HelloReply)
+    com.google.protobuf.MessageOrBuilder {
+
+  /**
+   * <code>string message = 1;</code>
+   * @return The message.
+   */
+  java.lang.String getMessage();
+  /**
+   * <code>string message = 1;</code>
+   * @return The bytes for message.
+   */
+  com.google.protobuf.ByteString
+      getMessageBytes();
+}
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequest.java
similarity index 75%
copy from service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
copy to java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequest.java
index 1f7b834..86829ab 100644
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
+++ b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequest.java
@@ -1,21 +1,25 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: greet.proto
 
-package org.apache.dubbo.samples.proto;
+package org.apache.dubbo.sample;
 
 /**
- * Protobuf type {@code org.apache.dubbo.samples.proto.GreetRequest}
+ * <pre>
+ * The request message containing the user's name.
+ * </pre>
+ *
+ * Protobuf type {@code org.apache.dubbo.sample.HelloRequest}
  */
-public final class GreetRequest extends
+public final class HelloRequest extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.proto.GreetRequest)
-    GreetRequestOrBuilder {
+    // @@protoc_insertion_point(message_implements:org.apache.dubbo.sample.HelloRequest)
+    HelloRequestOrBuilder {
 private static final long serialVersionUID = 0L;
-  // Use GreetRequest.newBuilder() to construct.
-  private GreetRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+  // Use HelloRequest.newBuilder() to construct.
+  private HelloRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
     super(builder);
   }
-  private GreetRequest() {
+  private HelloRequest() {
     name_ = "";
   }
 
@@ -23,7 +27,7 @@
   @SuppressWarnings({"unused"})
   protected java.lang.Object newInstance(
       UnusedPrivateParameter unused) {
-    return new GreetRequest();
+    return new HelloRequest();
   }
 
   @java.lang.Override
@@ -31,7 +35,7 @@
   getUnknownFields() {
     return this.unknownFields;
   }
-  private GreetRequest(
+  private HelloRequest(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
@@ -76,15 +80,15 @@
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
+    return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloRequest_descriptor;
   }
 
   @java.lang.Override
   protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable
+    return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloRequest_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
-            org.apache.dubbo.samples.proto.GreetRequest.class, org.apache.dubbo.samples.proto.GreetRequest.Builder.class);
+            org.apache.dubbo.sample.HelloRequest.class, org.apache.dubbo.sample.HelloRequest.Builder.class);
   }
 
   public static final int NAME_FIELD_NUMBER = 1;
@@ -164,10 +168,10 @@
     if (obj == this) {
      return true;
     }
-    if (!(obj instanceof org.apache.dubbo.samples.proto.GreetRequest)) {
+    if (!(obj instanceof org.apache.dubbo.sample.HelloRequest)) {
       return super.equals(obj);
     }
-    org.apache.dubbo.samples.proto.GreetRequest other = (org.apache.dubbo.samples.proto.GreetRequest) obj;
+    org.apache.dubbo.sample.HelloRequest other = (org.apache.dubbo.sample.HelloRequest) obj;
 
     if (!getName()
         .equals(other.getName())) return false;
@@ -189,69 +193,69 @@
     return hash;
   }
 
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       java.nio.ByteBuffer data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       java.nio.ByteBuffer data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       com.google.protobuf.ByteString data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       com.google.protobuf.ByteString data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(byte[] data)
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(byte[] data)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       byte[] data,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws com.google.protobuf.InvalidProtocolBufferException {
     return PARSER.parseFrom(data, extensionRegistry);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(java.io.InputStream input)
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.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 org.apache.dubbo.samples.proto.GreetRequest parseDelimitedFrom(java.io.InputStream input)
+  public static org.apache.dubbo.sample.HelloRequest parseDelimitedFrom(java.io.InputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseDelimitedWithIOException(PARSER, input);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseDelimitedFrom(
+  public static org.apache.dubbo.sample.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 org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input)
       throws java.io.IOException {
     return com.google.protobuf.GeneratedMessageV3
         .parseWithIOException(PARSER, input);
   }
-  public static org.apache.dubbo.samples.proto.GreetRequest parseFrom(
+  public static org.apache.dubbo.sample.HelloRequest parseFrom(
       com.google.protobuf.CodedInputStream input,
       com.google.protobuf.ExtensionRegistryLite extensionRegistry)
       throws java.io.IOException {
@@ -264,7 +268,7 @@
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
   }
-  public static Builder newBuilder(org.apache.dubbo.samples.proto.GreetRequest prototype) {
+  public static Builder newBuilder(org.apache.dubbo.sample.HelloRequest prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
   @java.lang.Override
@@ -280,26 +284,30 @@
     return builder;
   }
   /**
-   * Protobuf type {@code org.apache.dubbo.samples.proto.GreetRequest}
+   * <pre>
+   * The request message containing the user's name.
+   * </pre>
+   *
+   * Protobuf type {@code org.apache.dubbo.sample.HelloRequest}
    */
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.proto.GreetRequest)
-      org.apache.dubbo.samples.proto.GreetRequestOrBuilder {
+      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.sample.HelloRequest)
+      org.apache.dubbo.sample.HelloRequestOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloRequest_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              org.apache.dubbo.samples.proto.GreetRequest.class, org.apache.dubbo.samples.proto.GreetRequest.Builder.class);
+              org.apache.dubbo.sample.HelloRequest.class, org.apache.dubbo.sample.HelloRequest.Builder.class);
     }
 
-    // Construct using org.apache.dubbo.samples.proto.GreetRequest.newBuilder()
+    // Construct using org.apache.dubbo.sample.HelloRequest.newBuilder()
     private Builder() {
       maybeForceBuilderInitialization();
     }
@@ -325,17 +333,17 @@
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloRequest_descriptor;
     }
 
     @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest getDefaultInstanceForType() {
-      return org.apache.dubbo.samples.proto.GreetRequest.getDefaultInstance();
+    public org.apache.dubbo.sample.HelloRequest getDefaultInstanceForType() {
+      return org.apache.dubbo.sample.HelloRequest.getDefaultInstance();
     }
 
     @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest build() {
-      org.apache.dubbo.samples.proto.GreetRequest result = buildPartial();
+    public org.apache.dubbo.sample.HelloRequest build() {
+      org.apache.dubbo.sample.HelloRequest result = buildPartial();
       if (!result.isInitialized()) {
         throw newUninitializedMessageException(result);
       }
@@ -343,8 +351,8 @@
     }
 
     @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest buildPartial() {
-      org.apache.dubbo.samples.proto.GreetRequest result = new org.apache.dubbo.samples.proto.GreetRequest(this);
+    public org.apache.dubbo.sample.HelloRequest buildPartial() {
+      org.apache.dubbo.sample.HelloRequest result = new org.apache.dubbo.sample.HelloRequest(this);
       result.name_ = name_;
       onBuilt();
       return result;
@@ -384,16 +392,16 @@
     }
     @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof org.apache.dubbo.samples.proto.GreetRequest) {
-        return mergeFrom((org.apache.dubbo.samples.proto.GreetRequest)other);
+      if (other instanceof org.apache.dubbo.sample.HelloRequest) {
+        return mergeFrom((org.apache.dubbo.sample.HelloRequest)other);
       } else {
         super.mergeFrom(other);
         return this;
       }
     }
 
-    public Builder mergeFrom(org.apache.dubbo.samples.proto.GreetRequest other) {
-      if (other == org.apache.dubbo.samples.proto.GreetRequest.getDefaultInstance()) return this;
+    public Builder mergeFrom(org.apache.dubbo.sample.HelloRequest other) {
+      if (other == org.apache.dubbo.sample.HelloRequest.getDefaultInstance()) return this;
       if (!other.getName().isEmpty()) {
         name_ = other.name_;
         onChanged();
@@ -413,11 +421,11 @@
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
-      org.apache.dubbo.samples.proto.GreetRequest parsedMessage = null;
+      org.apache.dubbo.sample.HelloRequest parsedMessage = null;
       try {
         parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (org.apache.dubbo.samples.proto.GreetRequest) e.getUnfinishedMessage();
+        parsedMessage = (org.apache.dubbo.sample.HelloRequest) e.getUnfinishedMessage();
         throw e.unwrapIOException();
       } finally {
         if (parsedMessage != null) {
@@ -515,41 +523,41 @@
     }
 
 
-    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.proto.GreetRequest)
+    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.sample.HelloRequest)
   }
 
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.proto.GreetRequest)
-  private static final org.apache.dubbo.samples.proto.GreetRequest DEFAULT_INSTANCE;
+  // @@protoc_insertion_point(class_scope:org.apache.dubbo.sample.HelloRequest)
+  private static final org.apache.dubbo.sample.HelloRequest DEFAULT_INSTANCE;
   static {
-    DEFAULT_INSTANCE = new org.apache.dubbo.samples.proto.GreetRequest();
+    DEFAULT_INSTANCE = new org.apache.dubbo.sample.HelloRequest();
   }
 
-  public static org.apache.dubbo.samples.proto.GreetRequest getDefaultInstance() {
+  public static org.apache.dubbo.sample.HelloRequest getDefaultInstance() {
     return DEFAULT_INSTANCE;
   }
 
-  private static final com.google.protobuf.Parser<GreetRequest>
-      PARSER = new com.google.protobuf.AbstractParser<GreetRequest>() {
+  private static final com.google.protobuf.Parser<HelloRequest>
+      PARSER = new com.google.protobuf.AbstractParser<HelloRequest>() {
     @java.lang.Override
-    public GreetRequest parsePartialFrom(
+    public HelloRequest parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
-      return new GreetRequest(input, extensionRegistry);
+      return new HelloRequest(input, extensionRegistry);
     }
   };
 
-  public static com.google.protobuf.Parser<GreetRequest> parser() {
+  public static com.google.protobuf.Parser<HelloRequest> parser() {
     return PARSER;
   }
 
   @java.lang.Override
-  public com.google.protobuf.Parser<GreetRequest> getParserForType() {
+  public com.google.protobuf.Parser<HelloRequest> getParserForType() {
     return PARSER;
   }
 
   @java.lang.Override
-  public org.apache.dubbo.samples.proto.GreetRequest getDefaultInstanceForType() {
+  public org.apache.dubbo.sample.HelloRequest getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
 
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
similarity index 78%
copy from service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
copy to java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
index 63353e9..2fc6552 100644
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
+++ b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
@@ -1,10 +1,10 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
 // source: greet.proto
 
-package org.apache.dubbo.samples.proto;
+package org.apache.dubbo.sample;
 
-public interface GreetRequestOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.GreetRequest)
+public interface HelloRequestOrBuilder extends
+    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.sample.HelloRequest)
     com.google.protobuf.MessageOrBuilder {
 
   /**
diff --git a/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloWorldProto.java b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloWorldProto.java
new file mode 100644
index 0000000..26b1cbe
--- /dev/null
+++ b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloWorldProto.java
@@ -0,0 +1,63 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: greet.proto
+
+package org.apache.dubbo.sample;
+
+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_org_apache_dubbo_sample_HelloRequest_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_org_apache_dubbo_sample_HelloRequest_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_org_apache_dubbo_sample_HelloReply_descriptor;
+  static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_org_apache_dubbo_sample_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\013greet.proto\022\027org.apache.dubbo.sample\"\034" +
+      "\n\014HelloRequest\022\014\n\004name\030\001 \001(\t\"\035\n\nHelloRep" +
+      "ly\022\017\n\007message\030\001 \001(\t2a\n\007Greeter\022V\n\010SayHel" +
+      "lo\022%.org.apache.dubbo.sample.HelloReques" +
+      "t\032#.org.apache.dubbo.sample.HelloReplyB?" +
+      "\n\027org.apache.dubbo.sampleB\017HelloWorldPro" +
+      "toP\001Z\014/proto;proto\242\002\002WHb\006proto3"
+    };
+    descriptor = com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        });
+    internal_static_org_apache_dubbo_sample_HelloRequest_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_org_apache_dubbo_sample_HelloRequest_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_org_apache_dubbo_sample_HelloRequest_descriptor,
+        new java.lang.String[] { "Name", });
+    internal_static_org_apache_dubbo_sample_HelloReply_descriptor =
+      getDescriptor().getMessageTypes().get(1);
+    internal_static_org_apache_dubbo_sample_HelloReply_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_org_apache_dubbo_sample_HelloReply_descriptor,
+        new java.lang.String[] { "Message", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/java_interop/service_discovery/interface/README.md b/java_interop/service_discovery/interface/README.md
new file mode 100644
index 0000000..6293417
--- /dev/null
+++ b/java_interop/service_discovery/interface/README.md
@@ -0,0 +1,35 @@
+# Dubbo java and go interoperability, with service discovery ands protocol
+
+This example shows dubbo-go's service discovery and java-go interoperation feature with Nacos as registry.
+
+> before run the code, you should Follow the instruction to <a href="https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/" target="_blank">install and start Nacos server</a>.
+
+本示例针对 Dubbo2 老版本用户(或者仍在使用 Dubbo3 老服务发现模型)接口级服务发现的用户。演示如何基于 Dubbo2 接口级服务发现实现 Java 与 Go 体系互调。
+
+## dubbo java 调用 dubbo go
+
+1. 启动 go server
+
+    ```shell
+    go run ./go-server/cmd/server.go
+    ```
+
+2. 启动 java client
+
+    ```shell
+    ./java-client/run.sh
+    ```
+
+## dubbo go 调用 dubbo java
+
+1. 启动 java server
+
+    ```shell
+   ./java-server/run.sh
+    ```
+
+2. 启动 go client
+
+    ```shell
+    go run ./go-client/cmd/client.go
+    ```
\ No newline at end of file
diff --git a/service_discovery/interface/go-client/cmd/client.go b/java_interop/service_discovery/interface/go-client/cmd/client.go
similarity index 94%
rename from service_discovery/interface/go-client/cmd/client.go
rename to java_interop/service_discovery/interface/go-client/cmd/client.go
index 29db285..9372c6c 100644
--- a/service_discovery/interface/go-client/cmd/client.go
+++ b/java_interop/service_discovery/interface/go-client/cmd/client.go
@@ -23,7 +23,7 @@
 	"dubbo.apache.org/dubbo-go/v3"
 	_ "dubbo.apache.org/dubbo-go/v3/imports"
 	"dubbo.apache.org/dubbo-go/v3/registry"
-	greet "github.com/apache/dubbo-go-samples/service_discovery/service/proto"
+	greet "github.com/apache/dubbo-go-samples/java_interop/service_discovery/service/proto"
 	"github.com/dubbogo/gost/log/logger"
 )
 
diff --git a/service_discovery/interface/go-server/cmd/server.go b/java_interop/service_discovery/interface/go-server/cmd/server.go
similarity index 95%
rename from service_discovery/interface/go-server/cmd/server.go
rename to java_interop/service_discovery/interface/go-server/cmd/server.go
index 955f652..6c9ac83 100644
--- a/service_discovery/interface/go-server/cmd/server.go
+++ b/java_interop/service_discovery/interface/go-server/cmd/server.go
@@ -24,7 +24,7 @@
 	_ "dubbo.apache.org/dubbo-go/v3/imports"
 	"dubbo.apache.org/dubbo-go/v3/protocol"
 	"dubbo.apache.org/dubbo-go/v3/registry"
-	greet "github.com/apache/dubbo-go-samples/service_discovery/service/proto"
+	greet "github.com/apache/dubbo-go-samples/java_interop/service_discovery/service/proto"
 	"github.com/dubbogo/gost/log/logger"
 )
 
diff --git a/service_discovery/interface/java-client/pom.xml b/java_interop/service_discovery/interface/java-client/pom.xml
similarity index 100%
rename from service_discovery/interface/java-client/pom.xml
rename to java_interop/service_discovery/interface/java-client/pom.xml
diff --git a/service_discovery/interface/java-client/run.sh b/java_interop/service_discovery/interface/java-client/run.sh
similarity index 100%
rename from service_discovery/interface/java-client/run.sh
rename to java_interop/service_discovery/interface/java-client/run.sh
diff --git a/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/Main.java b/java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/Main.java
similarity index 100%
rename from service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/Main.java
rename to java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/Main.java
diff --git a/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java b/java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
similarity index 100%
rename from service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
rename to java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
diff --git a/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java b/java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java
similarity index 100%
rename from service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java
rename to java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java
diff --git a/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java b/java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
similarity index 100%
rename from service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
rename to java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
diff --git a/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java b/java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
similarity index 100%
rename from service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
rename to java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
diff --git a/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java b/java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java
similarity index 100%
rename from service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java
rename to java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java
diff --git a/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java b/java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
similarity index 100%
rename from service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
rename to java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
diff --git a/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetService.java b/java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetService.java
similarity index 100%
rename from service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetService.java
rename to java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetService.java
diff --git a/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java b/java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
similarity index 100%
rename from service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
rename to java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
diff --git a/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java b/java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
similarity index 100%
rename from service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
rename to java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
diff --git a/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java b/java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
similarity index 100%
rename from service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
rename to java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
diff --git a/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java b/java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
similarity index 100%
rename from service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
rename to java_interop/service_discovery/interface/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
diff --git a/service_discovery/interface/java-client/src/main/resources/log4j.properties b/java_interop/service_discovery/interface/java-client/src/main/resources/log4j.properties
similarity index 100%
rename from service_discovery/interface/java-client/src/main/resources/log4j.properties
rename to java_interop/service_discovery/interface/java-client/src/main/resources/log4j.properties
diff --git a/service_discovery/interface/java-client/src/main/resources/spring/dubbo.consumer.xml b/java_interop/service_discovery/interface/java-client/src/main/resources/spring/dubbo.consumer.xml
similarity index 100%
rename from service_discovery/interface/java-client/src/main/resources/spring/dubbo.consumer.xml
rename to java_interop/service_discovery/interface/java-client/src/main/resources/spring/dubbo.consumer.xml
diff --git a/service_discovery/interface/java-server/pom.xml b/java_interop/service_discovery/interface/java-server/pom.xml
similarity index 100%
rename from service_discovery/interface/java-server/pom.xml
rename to java_interop/service_discovery/interface/java-server/pom.xml
diff --git a/service_discovery/interface/java-server/run.sh b/java_interop/service_discovery/interface/java-server/run.sh
similarity index 100%
rename from service_discovery/interface/java-server/run.sh
rename to java_interop/service_discovery/interface/java-server/run.sh
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/Main.java b/java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/Main.java
similarity index 100%
rename from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/Main.java
rename to java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/Main.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java b/java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
similarity index 100%
rename from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
rename to java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java b/java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java
similarity index 100%
rename from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java
rename to java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java b/java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
similarity index 100%
rename from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
rename to java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java b/java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
similarity index 100%
rename from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
rename to java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java b/java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java
similarity index 100%
rename from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java
rename to java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java b/java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
similarity index 100%
rename from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
rename to java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetService.java b/java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetService.java
similarity index 100%
rename from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetService.java
rename to java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetService.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java b/java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
similarity index 100%
rename from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
rename to java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java b/java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
similarity index 100%
rename from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
rename to java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java b/java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
similarity index 100%
rename from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
rename to java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java b/java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
similarity index 100%
rename from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
rename to java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/service/GreetServiceImpl.java b/java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/service/GreetServiceImpl.java
similarity index 100%
rename from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/service/GreetServiceImpl.java
rename to java_interop/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/service/GreetServiceImpl.java
diff --git a/service_discovery/interface/java-server/src/main/proto/greet.proto b/java_interop/service_discovery/interface/java-server/src/main/proto/greet.proto
similarity index 100%
rename from service_discovery/interface/java-server/src/main/proto/greet.proto
rename to java_interop/service_discovery/interface/java-server/src/main/proto/greet.proto
diff --git a/service_discovery/interface/java-server/src/main/resources/log4j.properties b/java_interop/service_discovery/interface/java-server/src/main/resources/log4j.properties
similarity index 100%
rename from service_discovery/interface/java-server/src/main/resources/log4j.properties
rename to java_interop/service_discovery/interface/java-server/src/main/resources/log4j.properties
diff --git a/service_discovery/interface/java-server/src/main/resources/spring/dubbo.server.xml b/java_interop/service_discovery/interface/java-server/src/main/resources/spring/dubbo.server.xml
similarity index 100%
rename from service_discovery/interface/java-server/src/main/resources/spring/dubbo.server.xml
rename to java_interop/service_discovery/interface/java-server/src/main/resources/spring/dubbo.server.xml
diff --git a/service_discovery/interface/proto/greet.pb.go b/java_interop/service_discovery/interface/proto/greet.pb.go
similarity index 100%
rename from service_discovery/interface/proto/greet.pb.go
rename to java_interop/service_discovery/interface/proto/greet.pb.go
diff --git a/service_discovery/interface/proto/greet.proto b/java_interop/service_discovery/interface/proto/greet.proto
similarity index 100%
rename from service_discovery/interface/proto/greet.proto
rename to java_interop/service_discovery/interface/proto/greet.proto
diff --git a/service_discovery/interface/proto/greet.triple.go b/java_interop/service_discovery/interface/proto/greet.triple.go
similarity index 100%
rename from service_discovery/interface/proto/greet.triple.go
rename to java_interop/service_discovery/interface/proto/greet.triple.go
diff --git a/java_interop/service_discovery/service/README.md b/java_interop/service_discovery/service/README.md
new file mode 100644
index 0000000..10e9b3c
--- /dev/null
+++ b/java_interop/service_discovery/service/README.md
@@ -0,0 +1,37 @@
+# Dubbo java and go interoperability, with service discovery ands protocol
+
+This example shows dubbo-go's service discovery and java-go interoperation feature with Nacos as registry.
+
+> before run the code, you should Follow the instruction to <a href="https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/" target="_blank">install and start Nacos server</a>.
+
+本示例针对 Dubbo3 版本用户,演示如何基于 Dubbo3 应用级服务发现实现 Java 与 Go 体系互调。
+
+## dubbo java 调用 dubbo go
+
+1. 启动 go server
+
+    ```shell
+    go run ./go-server/cmd/server.go
+    ```
+
+2. 启动 java client
+
+    ```shell
+    ./java-client/run.sh
+    ```
+
+## dubbo go 调用 dubbo java
+
+> 本示例当前存在问题,请跟进排查:https://github.com/apache/dubbo-go/issues/2653
+
+1. 启动 java server
+
+    ```shell
+   ./java-server/run.sh
+    ```
+
+2. 启动 go client
+
+    ```shell
+    go run ./go-client/cmd/client.go
+    ```
\ No newline at end of file
diff --git a/service_discovery/service/go-client/cmd/client.go b/java_interop/service_discovery/service/go-client/cmd/client.go
similarity index 94%
rename from service_discovery/service/go-client/cmd/client.go
rename to java_interop/service_discovery/service/go-client/cmd/client.go
index 5abcd08..56ed8b8 100644
--- a/service_discovery/service/go-client/cmd/client.go
+++ b/java_interop/service_discovery/service/go-client/cmd/client.go
@@ -23,7 +23,7 @@
 	"dubbo.apache.org/dubbo-go/v3"
 	_ "dubbo.apache.org/dubbo-go/v3/imports"
 	"dubbo.apache.org/dubbo-go/v3/registry"
-	greet "github.com/apache/dubbo-go-samples/service_discovery/service/proto"
+	greet "github.com/apache/dubbo-go-samples/java_interop/service_discovery/service/proto"
 	"github.com/dubbogo/gost/log/logger"
 )
 
diff --git a/service_discovery/service/go-server/cmd/server.go b/java_interop/service_discovery/service/go-server/cmd/server.go
similarity index 95%
rename from service_discovery/service/go-server/cmd/server.go
rename to java_interop/service_discovery/service/go-server/cmd/server.go
index 523d5d2..65e74fa 100644
--- a/service_discovery/service/go-server/cmd/server.go
+++ b/java_interop/service_discovery/service/go-server/cmd/server.go
@@ -24,7 +24,7 @@
 	_ "dubbo.apache.org/dubbo-go/v3/imports"
 	"dubbo.apache.org/dubbo-go/v3/protocol"
 	"dubbo.apache.org/dubbo-go/v3/registry"
-	greet "github.com/apache/dubbo-go-samples/service_discovery/service/proto"
+	greet "github.com/apache/dubbo-go-samples/java_interop/service_discovery/service/proto"
 	"github.com/dubbogo/gost/log/logger"
 )
 
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java b/java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
similarity index 96%
rename from service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
rename to java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
index c59944e..e6c5299 100644
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
+++ b/java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
@@ -195,10 +195,18 @@
             .getDefaultExtension();
             Map<String,StubMethodHandler<?, ?>> handlers = new HashMap<>();
 
-            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/Greet" );
-            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/GreetAsync" );
-            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHello" );
-            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHelloAsync" );
+            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/Greet");
+            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/GreetAsync");
+            // for compatibility
+            pathResolver.addNativeStub( "/" + JAVA_SERVICE_NAME + "/Greet");
+            pathResolver.addNativeStub( "/" + JAVA_SERVICE_NAME + "/GreetAsync");
+
+            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHello");
+            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHelloAsync");
+            // for compatibility
+            pathResolver.addNativeStub( "/" + JAVA_SERVICE_NAME + "/SayHello");
+            pathResolver.addNativeStub( "/" + JAVA_SERVICE_NAME + "/SayHelloAsync");
+
 
             BiConsumer<org.apache.dubbo.samples.proto.GreetRequest, StreamObserver<org.apache.dubbo.samples.proto.GreetResponse>> greetFunc = this::greet;
             handlers.put(greetMethod.getMethodName(), new UnaryStubMethodHandler<>(greetFunc));
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java b/java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetProto.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java
copy to java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetProto.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java b/java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetRequest.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
copy to java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetRequest.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java b/java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
copy to java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java b/java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetResponse.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java
copy to java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetResponse.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java b/java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
copy to java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetService.java b/java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetService.java
similarity index 99%
rename from service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetService.java
rename to java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetService.java
index fa5b0c3..6639646 100644
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetService.java
+++ b/java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/GreetService.java
@@ -29,7 +29,6 @@
 
     String JAVA_SERVICE_NAME = "org.apache.dubbo.samples.proto.GreetService";
     String SERVICE_NAME = "org.apache.dubbo.samples.proto.GreetService";
-
     org.apache.dubbo.samples.proto.GreetResponse greet(org.apache.dubbo.samples.proto.GreetRequest request);
 
     CompletableFuture<org.apache.dubbo.samples.proto.GreetResponse> greetAsync(org.apache.dubbo.samples.proto.GreetRequest request);
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java b/java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
copy to java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java b/java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
copy to java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java b/java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
copy to java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java b/java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
copy to java_interop/service_discovery/service/java-client/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
diff --git a/java_interop/service_discovery/service/java-client/pom.xml b/java_interop/service_discovery/service/java-client/pom.xml
new file mode 100644
index 0000000..a9c37a2
--- /dev/null
+++ b/java_interop/service_discovery/service/java-client/pom.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~  Licensed to the Apache Software Foundation (ASF) under one or more
+  ~  contributor license agreements.  See the NOTICE file distributed with
+  ~  this work for additional information regarding copyright ownership.
+  ~  The ASF licenses this file to You under the Apache License, Version 2.0
+  ~  (the "License"); you may not use this file except in compliance with
+  ~  the License.  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~  Unless required by applicable law or agreed to in writing, software
+  ~  distributed under the License is distributed on an "AS IS" BASIS,
+  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~  See the License for the specific language governing permissions and
+  ~  limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.apache.dubbo</groupId>
+    <artifactId>java-client-interface</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <dubbo.version>3.3.0-beta.2</dubbo.version>
+        <log4j2.version>2.20.0</log4j2.version>
+        <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
+
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-spring-boot-starter</artifactId>
+            <version>${dubbo.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-nacos-spring-boot-starter</artifactId>
+            <version>${dubbo.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.protobuf</groupId>
+            <artifactId>protobuf-java</artifactId>
+            <version>3.19.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.protobuf</groupId>
+            <artifactId>protobuf-java-util</artifactId>
+            <version>3.19.4</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+            <version>3.2.3</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>spring-boot-starter-logging</artifactId>
+                    <groupId>org.springframework.boot</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-log4j2</artifactId>
+            <version>3.2.3</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <extensions>
+            <extension>
+                <groupId>kr.motd.maven</groupId>
+                <artifactId>os-maven-plugin</artifactId>
+                <version>1.6.1</version>
+            </extension>
+        </extensions>
+        <plugins>
+
+            <plugin>
+                <groupId>org.xolstice.maven.plugins</groupId>
+                <artifactId>protobuf-maven-plugin</artifactId>
+                <version>0.6.1</version>
+                <configuration>
+                    <protocArtifact>com.google.protobuf:protoc:3.19.4:exe:${os.detected.classifier}</protocArtifact>
+                    <outputDirectory>build/protobuf/java</outputDirectory>
+                    <protocPlugins>
+                        <protocPlugin>
+                            <id>dubbo</id>
+                            <groupId>org.apache.dubbo</groupId>
+                            <artifactId>dubbo-compiler</artifactId>
+                            <version>${dubbo.version}</version>
+                            <mainClass>org.apache.dubbo.gen.tri.Dubbo3TripleGenerator</mainClass>
+                        </protocPlugin>
+                    </protocPlugins>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>compile</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>${maven-compiler-plugin.version}</version>
+                <configuration>
+                    <source>${maven.compiler.source}</source>
+                    <target>${maven.compiler.target}</target>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>3.3.0</version>
+                <executions>
+                    <execution>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>build/protobuf/java</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/service_discovery/service/java-client/run.sh b/java_interop/service_discovery/service/java-client/run.sh
similarity index 100%
rename from service_discovery/service/java-client/run.sh
rename to java_interop/service_discovery/service/java-client/run.sh
diff --git a/java_interop/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/Main.java b/java_interop/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/Main.java
new file mode 100644
index 0000000..f16d308
--- /dev/null
+++ b/java_interop/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/Main.java
@@ -0,0 +1,54 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.dubbo.samples;
+
+import java.io.IOException;
+
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.apache.dubbo.samples.proto.GreetRequest;
+import org.apache.dubbo.samples.proto.GreetResponse;
+import org.apache.dubbo.samples.proto.GreetService;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.stereotype.Component;
+
+@SpringBootApplication
+@EnableDubbo
+public class Main {
+	public static void main(String[] args) {
+		SpringApplication.run(Main.class, args);
+	}
+
+	@Component
+	static class CommandLineRunner implements org.springframework.boot.CommandLineRunner {
+
+		@DubboReference
+		private GreetService greetService;
+
+		@Override
+		public void run(String... args) throws Exception {
+			GreetRequest req = GreetRequest.newBuilder().setName("Mamba").build();
+			System.out.println("dubbo ref started");
+			GreetResponse greet = greetService.greet(req);
+			System.out.println("Greeting:" + greet.getGreeting() + "!!!!!!!!!!!!");
+		}
+	}
+}
\ No newline at end of file
diff --git a/service_discovery/service/java-client/src/main/proto/greet.proto b/java_interop/service_discovery/service/java-client/src/main/proto/greet.proto
similarity index 100%
rename from service_discovery/service/java-client/src/main/proto/greet.proto
rename to java_interop/service_discovery/service/java-client/src/main/proto/greet.proto
diff --git a/java_interop/service_discovery/service/java-client/src/main/resources/application.yml b/java_interop/service_discovery/service/java-client/src/main/resources/application.yml
new file mode 100644
index 0000000..fc4b02e
--- /dev/null
+++ b/java_interop/service_discovery/service/java-client/src/main/resources/application.yml
@@ -0,0 +1,22 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+dubbo:
+  application:
+    name: greet-java-client
+    logger: slf4j
+  registry:
+    address: nacos://127.0.0.1:8848
diff --git a/service_discovery/service/java-client/src/main/resources/dubbo.properties b/java_interop/service_discovery/service/java-client/src/main/resources/dubbo.properties
similarity index 100%
rename from service_discovery/service/java-client/src/main/resources/dubbo.properties
rename to java_interop/service_discovery/service/java-client/src/main/resources/dubbo.properties
diff --git a/service_discovery/service/java-client/src/main/resources/log4j.properties b/java_interop/service_discovery/service/java-client/src/main/resources/log4j.properties
similarity index 100%
rename from service_discovery/service/java-client/src/main/resources/log4j.properties
rename to java_interop/service_discovery/service/java-client/src/main/resources/log4j.properties
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java b/java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
similarity index 96%
copy from service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
copy to java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
index c59944e..e6c5299 100644
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
+++ b/java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
@@ -195,10 +195,18 @@
             .getDefaultExtension();
             Map<String,StubMethodHandler<?, ?>> handlers = new HashMap<>();
 
-            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/Greet" );
-            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/GreetAsync" );
-            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHello" );
-            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHelloAsync" );
+            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/Greet");
+            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/GreetAsync");
+            // for compatibility
+            pathResolver.addNativeStub( "/" + JAVA_SERVICE_NAME + "/Greet");
+            pathResolver.addNativeStub( "/" + JAVA_SERVICE_NAME + "/GreetAsync");
+
+            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHello");
+            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHelloAsync");
+            // for compatibility
+            pathResolver.addNativeStub( "/" + JAVA_SERVICE_NAME + "/SayHello");
+            pathResolver.addNativeStub( "/" + JAVA_SERVICE_NAME + "/SayHelloAsync");
+
 
             BiConsumer<org.apache.dubbo.samples.proto.GreetRequest, StreamObserver<org.apache.dubbo.samples.proto.GreetResponse>> greetFunc = this::greet;
             handlers.put(greetMethod.getMethodName(), new UnaryStubMethodHandler<>(greetFunc));
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java b/java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetProto.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java
copy to java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetProto.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java b/java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetRequest.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
copy to java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetRequest.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java b/java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
copy to java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java b/java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetResponse.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java
copy to java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetResponse.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java b/java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
copy to java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetService.java b/java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetService.java
similarity index 99%
copy from service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetService.java
copy to java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetService.java
index fa5b0c3..6639646 100644
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetService.java
+++ b/java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/GreetService.java
@@ -29,7 +29,6 @@
 
     String JAVA_SERVICE_NAME = "org.apache.dubbo.samples.proto.GreetService";
     String SERVICE_NAME = "org.apache.dubbo.samples.proto.GreetService";
-
     org.apache.dubbo.samples.proto.GreetResponse greet(org.apache.dubbo.samples.proto.GreetRequest request);
 
     CompletableFuture<org.apache.dubbo.samples.proto.GreetResponse> greetAsync(org.apache.dubbo.samples.proto.GreetRequest request);
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java b/java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
copy to java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java b/java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
copy to java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java b/java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
copy to java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
diff --git a/service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java b/java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
similarity index 100%
copy from service_discovery/interface/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
copy to java_interop/service_discovery/service/java-server/build/protobuf/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
diff --git a/java_interop/service_discovery/service/java-server/pom.xml b/java_interop/service_discovery/service/java-server/pom.xml
new file mode 100644
index 0000000..5cdfb54
--- /dev/null
+++ b/java_interop/service_discovery/service/java-server/pom.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~  Licensed to the Apache Software Foundation (ASF) under one or more
+  ~  contributor license agreements.  See the NOTICE file distributed with
+  ~  this work for additional information regarding copyright ownership.
+  ~  The ASF licenses this file to You under the Apache License, Version 2.0
+  ~  (the "License"); you may not use this file except in compliance with
+  ~  the License.  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~  Unless required by applicable law or agreed to in writing, software
+  ~  distributed under the License is distributed on an "AS IS" BASIS,
+  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~  See the License for the specific language governing permissions and
+  ~  limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.apache.dubbo</groupId>
+    <artifactId>java-server</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <dubbo.version>3.3.0-beta.2</dubbo.version>
+        <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
+    </properties>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-spring-boot-starter</artifactId>
+            <version>${dubbo.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-nacos-spring-boot-starter</artifactId>
+            <version>${dubbo.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.protobuf</groupId>
+            <artifactId>protobuf-java</artifactId>
+            <version>3.19.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.protobuf</groupId>
+            <artifactId>protobuf-java-util</artifactId>
+            <version>3.19.4</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+            <version>3.2.3</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>spring-boot-starter-logging</artifactId>
+                    <groupId>org.springframework.boot</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-log4j2</artifactId>
+            <version>3.2.3</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <extensions>
+            <extension>
+                <groupId>kr.motd.maven</groupId>
+                <artifactId>os-maven-plugin</artifactId>
+                <version>1.6.1</version>
+            </extension>
+        </extensions>
+        <plugins>
+
+            <plugin>
+                <groupId>org.xolstice.maven.plugins</groupId>
+                <artifactId>protobuf-maven-plugin</artifactId>
+                <version>0.6.1</version>
+                <configuration>
+                    <protocArtifact>com.google.protobuf:protoc:3.19.4:exe:${os.detected.classifier}</protocArtifact>
+                    <outputDirectory>build/protobuf/java</outputDirectory>
+                    <protocPlugins>
+                        <protocPlugin>
+                            <id>dubbo</id>
+                            <groupId>org.apache.dubbo</groupId>
+                            <artifactId>dubbo-compiler</artifactId>
+                            <version>${dubbo.version}</version>
+                            <mainClass>org.apache.dubbo.gen.tri.Dubbo3TripleGenerator</mainClass>
+                        </protocPlugin>
+                    </protocPlugins>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>compile</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>${maven-compiler-plugin.version}</version>
+                <configuration>
+                    <source>${maven.compiler.source}</source>
+                    <target>${maven.compiler.target}</target>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>3.3.0</version>
+                <executions>
+                    <execution>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>build/protobuf/java</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/service_discovery/service/java-server/run.sh b/java_interop/service_discovery/service/java-server/run.sh
similarity index 100%
rename from service_discovery/service/java-server/run.sh
rename to java_interop/service_discovery/service/java-server/run.sh
diff --git a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/Main.java b/java_interop/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/Main.java
similarity index 60%
rename from service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/Main.java
rename to java_interop/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/Main.java
index 7634ee2..f0d1528 100644
--- a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/Main.java
+++ b/java_interop/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/Main.java
@@ -17,18 +17,15 @@
 
 package org.apache.dubbo.samples;
 
-import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
 
-import java.io.IOException;
-import java.util.concurrent.CountDownLatch;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
 
+@SpringBootApplication
+@EnableDubbo
 public class Main {
-    public static void main(String[] args) throws IOException, InterruptedException {
-        System.setProperty("dubbo.application.register-mode", "instance");
-        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
-                new String[] { "/spring/dubbo.server.xml" });
-        context.start();
-        System.out.println("dubbo service started");
-        new CountDownLatch(1).await();
+    public static void main(String[] args) {
+        SpringApplication.run(Main.class, args);
     }
 }
\ No newline at end of file
diff --git a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/service/GreetServiceImpl.java b/java_interop/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/service/GreetServiceImpl.java
similarity index 94%
rename from service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/service/GreetServiceImpl.java
rename to java_interop/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/service/GreetServiceImpl.java
index 3d1198d..763917e 100644
--- a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/service/GreetServiceImpl.java
+++ b/java_interop/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/service/GreetServiceImpl.java
@@ -17,8 +17,10 @@
 
 package org.apache.dubbo.samples.service;
 
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.proto.*;
 
+@DubboService
 public class GreetServiceImpl extends DubboGreetServiceTriple.GreetServiceImplBase {
     @Override
     public GreetResponse greet(GreetRequest request) {
diff --git a/service_discovery/service/java-server/src/main/proto/greet.proto b/java_interop/service_discovery/service/java-server/src/main/proto/greet.proto
similarity index 100%
rename from service_discovery/service/java-server/src/main/proto/greet.proto
rename to java_interop/service_discovery/service/java-server/src/main/proto/greet.proto
diff --git a/java_interop/service_discovery/service/java-server/src/main/resources/application.yml b/java_interop/service_discovery/service/java-server/src/main/resources/application.yml
new file mode 100644
index 0000000..184838f
--- /dev/null
+++ b/java_interop/service_discovery/service/java-server/src/main/resources/application.yml
@@ -0,0 +1,25 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+dubbo:
+  application:
+    name: greet-java-server
+    logger: slf4j
+  protocol:
+    name: tri
+    port: 20055
+  registry:
+    address: nacos://127.0.0.1:8848
diff --git a/service_discovery/service/java-server/src/main/resources/log4j.properties b/java_interop/service_discovery/service/java-server/src/main/resources/log4j.properties
similarity index 100%
rename from service_discovery/service/java-server/src/main/resources/log4j.properties
rename to java_interop/service_discovery/service/java-server/src/main/resources/log4j.properties
diff --git a/service_discovery/service/proto/greet.pb.go b/java_interop/service_discovery/service/proto/greet.pb.go
similarity index 100%
rename from service_discovery/service/proto/greet.pb.go
rename to java_interop/service_discovery/service/proto/greet.pb.go
diff --git a/service_discovery/service/proto/greet.proto b/java_interop/service_discovery/service/proto/greet.proto
similarity index 100%
rename from service_discovery/service/proto/greet.proto
rename to java_interop/service_discovery/service/proto/greet.proto
diff --git a/service_discovery/service/proto/greet.triple.go b/java_interop/service_discovery/service/proto/greet.triple.go
similarity index 100%
rename from service_discovery/service/proto/greet.triple.go
rename to java_interop/service_discovery/service/proto/greet.triple.go
diff --git a/proto/greet.triple.go b/proto/greet.triple.go
new file mode 100644
index 0000000..531c430
--- /dev/null
+++ b/proto/greet.triple.go
@@ -0,0 +1,122 @@
+// Code generated by protoc-gen-triple. DO NOT EDIT.
+//
+// Source: greet.proto
+package proto
+
+import (
+	"context"
+)
+
+import (
+	"dubbo.apache.org/dubbo-go/v3"
+	"dubbo.apache.org/dubbo-go/v3/client"
+	"dubbo.apache.org/dubbo-go/v3/common"
+	"dubbo.apache.org/dubbo-go/v3/common/constant"
+	"dubbo.apache.org/dubbo-go/v3/protocol/triple/triple_protocol"
+	"dubbo.apache.org/dubbo-go/v3/server"
+)
+
+// This is a compile-time assertion to ensure that this generated file and the Triple package
+// are compatible. If you get a compiler error that this constant is not defined, this code was
+// generated with a version of Triple newer than the one compiled into your binary. You can fix the
+// problem by either regenerating this code with an older version of Triple or updating the Triple
+// version compiled into your binary.
+const _ = triple_protocol.IsAtLeastVersion0_1_0
+
+const (
+	// GreeterName is the fully-qualified name of the Greeter service.
+	GreeterName = "org.apache.dubbo.samples.Greeter"
+)
+
+// These constants are the fully-qualified names of the RPCs defined in this package. They're
+// exposed at runtime as procedure and as the final two segments of the HTTP route.
+//
+// Note that these are different from the fully-qualified method names used by
+// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to
+// reflection-formatted method names, remove the leading slash and convert the remaining slash to a
+// period.
+const (
+	// GreeterSayHelloProcedure is the fully-qualified name of the Greeter's SayHello RPC.
+	GreeterSayHelloProcedure = "/org.apache.dubbo.samples.Greeter/SayHello"
+)
+
+var (
+	_ Greeter = (*GreeterImpl)(nil)
+)
+
+// Greeter is a client for the org.apache.dubbo.samples.Greeter service.
+type Greeter interface {
+	SayHello(ctx context.Context, req *HelloRequest, opts ...client.CallOption) (*HelloReply, error)
+}
+
+// NewGreeter constructs a client for the proto.Greeter service.
+func NewGreeter(cli *client.Client, opts ...client.ReferenceOption) (Greeter, error) {
+	conn, err := cli.DialWithInfo("org.apache.dubbo.samples.Greeter", &Greeter_ClientInfo, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return &GreeterImpl{
+		conn: conn,
+	}, nil
+}
+
+func SetConsumerService(srv common.RPCService) {
+	dubbo.SetConsumerServiceWithInfo(srv, &Greeter_ClientInfo)
+}
+
+// GreeterImpl implements Greeter.
+type GreeterImpl struct {
+	conn *client.Connection
+}
+
+func (c *GreeterImpl) SayHello(ctx context.Context, req *HelloRequest, opts ...client.CallOption) (*HelloReply, error) {
+	resp := new(HelloReply)
+	if err := c.conn.CallUnary(ctx, []interface{}{req}, resp, "SayHello", opts...); err != nil {
+		return nil, err
+	}
+	return resp, nil
+}
+
+var Greeter_ClientInfo = client.ClientInfo{
+	InterfaceName: "org.apache.dubbo.samples.Greeter",
+	MethodNames:   []string{"SayHello"},
+	ConnectionInjectFunc: func(dubboCliRaw interface{}, conn *client.Connection) {
+		dubboCli := dubboCliRaw.(*GreeterImpl)
+		dubboCli.conn = conn
+	},
+}
+
+// GreeterHandler is an implementation of the org.apache.dubbo.samples.Greeter service.
+type GreeterHandler interface {
+	SayHello(context.Context, *HelloRequest) (*HelloReply, error)
+}
+
+func RegisterGreeterHandler(srv *server.Server, hdlr GreeterHandler, opts ...server.ServiceOption) error {
+	return srv.Register(hdlr, &Greeter_ServiceInfo, opts...)
+}
+
+func SetProviderService(srv common.RPCService) {
+	dubbo.SetProviderServiceWithInfo(srv, &Greeter_ServiceInfo)
+}
+
+var Greeter_ServiceInfo = server.ServiceInfo{
+	InterfaceName: "org.apache.dubbo.samples.Greeter",
+	ServiceType:   (*GreeterHandler)(nil),
+	Methods: []server.MethodInfo{
+		{
+			Name: "SayHello",
+			Type: constant.CallUnary,
+			ReqInitFunc: func() interface{} {
+				return new(HelloRequest)
+			},
+			MethodFunc: func(ctx context.Context, args []interface{}, handler interface{}) (interface{}, error) {
+				req := args[0].(*HelloRequest)
+				res, err := handler.(GreeterHandler).SayHello(ctx, req)
+				if err != nil {
+					return nil, err
+				}
+				return triple_protocol.NewResponse(res), nil
+			},
+		},
+	},
+}
diff --git a/multirpc/README.md b/rpc/multi-protocols/README.md
similarity index 100%
rename from multirpc/README.md
rename to rpc/multi-protocols/README.md
diff --git a/multirpc/go-client/cmd/main.go b/rpc/multi-protocols/go-client/cmd/main.go
similarity index 92%
rename from multirpc/go-client/cmd/main.go
rename to rpc/multi-protocols/go-client/cmd/main.go
index b74a973..e4ad3ce 100644
--- a/multirpc/go-client/cmd/main.go
+++ b/rpc/multi-protocols/go-client/cmd/main.go
@@ -23,7 +23,7 @@
 	"dubbo.apache.org/dubbo-go/v3/common/constant"
 	_ "dubbo.apache.org/dubbo-go/v3/imports"
 	"dubbo.apache.org/dubbo-go/v3/registry"
-	greet "github.com/apache/dubbo-go-samples/multirpc/proto"
+	greet2 "github.com/apache/dubbo-go-samples/rpc/multi-protocols/proto"
 	"github.com/dubbogo/gost/log/logger"
 )
 
@@ -45,12 +45,12 @@
 	if err != nil {
 		panic(err)
 	}
-	svc, err := greet.NewGreetService(cli)
+	svc, err := greet2.NewGreetService(cli)
 	if err != nil {
 		panic(err)
 	}
 
-	respTriple, err := svc.Greet(context.Background(), &greet.GreetRequest{Name: "hello world"})
+	respTriple, err := svc.Greet(context.Background(), &greet2.GreetRequest{Name: "hello world"})
 	if err != nil {
 		logger.Error(err)
 	}
diff --git a/multirpc/go-server/cmd/main.go b/rpc/multi-protocols/go-server/cmd/main.go
similarity index 89%
rename from multirpc/go-server/cmd/main.go
rename to rpc/multi-protocols/go-server/cmd/main.go
index 44dda5d..f917d1c 100644
--- a/multirpc/go-server/cmd/main.go
+++ b/rpc/multi-protocols/go-server/cmd/main.go
@@ -23,15 +23,15 @@
 	"dubbo.apache.org/dubbo-go/v3/protocol"
 	"dubbo.apache.org/dubbo-go/v3/registry"
 	"dubbo.apache.org/dubbo-go/v3/server"
-	greet "github.com/apache/dubbo-go-samples/multirpc/proto"
+	greet2 "github.com/apache/dubbo-go-samples/rpc/multi-protocols/proto"
 	"github.com/dubbogo/gost/log/logger"
 )
 
 type GreetMultiRPCServer struct {
 }
 
-func (srv *GreetMultiRPCServer) Greet(ctx context.Context, req *greet.GreetRequest) (*greet.GreetResponse, error) {
-	resp := &greet.GreetResponse{Greeting: req.Name}
+func (srv *GreetMultiRPCServer) Greet(ctx context.Context, req *greet2.GreetRequest) (*greet2.GreetResponse, error) {
+	resp := &greet2.GreetResponse{Greeting: req.Name}
 	return resp, nil
 }
 
@@ -67,7 +67,7 @@
 	if err != nil {
 		panic(err)
 	}
-	if err = greet.RegisterGreetServiceHandler(srvTriple, &GreetMultiRPCServer{}); err != nil {
+	if err = greet2.RegisterGreetServiceHandler(srvTriple, &GreetMultiRPCServer{}); err != nil {
 		panic(err)
 	}
 	if err = srvTriple.Serve(); err != nil {
diff --git a/multirpc/proto/greet.pb.go b/rpc/multi-protocols/proto/greet.pb.go
similarity index 100%
rename from multirpc/proto/greet.pb.go
rename to rpc/multi-protocols/proto/greet.pb.go
diff --git a/multirpc/proto/greet.proto b/rpc/multi-protocols/proto/greet.proto
similarity index 91%
rename from multirpc/proto/greet.proto
rename to rpc/multi-protocols/proto/greet.proto
index d2c1e1b..91e2b44 100644
--- a/multirpc/proto/greet.proto
+++ b/rpc/multi-protocols/proto/greet.proto
@@ -19,7 +19,7 @@
 
 package greet;
 
-option go_package = "github.com/apache/dubbo-go-samples/multirpc/proto;greet";
+option go_package = "github.com/apache/dubbo-go-samples/rpc/multi_protocols/proto;greet";
 
 message GreetRequest {
   string name = 1;
diff --git a/multirpc/proto/greet.triple.go b/rpc/multi-protocols/proto/greet.triple.go
similarity index 100%
rename from multirpc/proto/greet.triple.go
rename to rpc/multi-protocols/proto/greet.triple.go
diff --git a/service_discovery/README.md b/service_discovery/README.md
deleted file mode 100644
index 725ca9b..0000000
--- a/service_discovery/README.md
+++ /dev/null
@@ -1,68 +0,0 @@
-# Zookeeper as registry
-
-This example shows dubbo-go's service discovery and java-go interoperation feature  with Nacos as registry.
-
-
-> before run the code , you should Follow this instruction to install and start Nacos server.
-
-## interface level discovery
-### how to run
-#### java server <-> go client 
-```shell
-cd interface
-```
-**start java server**
-```shell
-cd java-server
-sh run.sh
-```
-
-**start go client**
-```shell
-cd go-client
-go run client.go
-
-```
-
-#### go server <-> java client 
-**start go server**
-```shell
-cd go-server
-go run server.go
-```
-**start java client**
-```shell
-cd java-client
-sh run.sh
-```
-
-
-## service level discovery
-
-```shell
-cd service
-```
-**start java server**
-```shell
-cd java-server
-sh run.sh
-```
-
-**start go client**
-```shell
-cd go-client
-go run client.go
-
-```
-
-#### go server <-> java client 
-**start go server**
-```shell
-cd go-server
-go run server.go
-```
-**start java client**
-```shell
-cd java-client
-sh run.sh
-```
\ No newline at end of file
diff --git a/service_discovery/service/java-client/pom.xml b/service_discovery/service/java-client/pom.xml
deleted file mode 100644
index e1ad9b6..0000000
--- a/service_discovery/service/java-client/pom.xml
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~  Licensed to the Apache Software Foundation (ASF) under one or more
-  ~  contributor license agreements.  See the NOTICE file distributed with
-  ~  this work for additional information regarding copyright ownership.
-  ~  The ASF licenses this file to You under the Apache License, Version 2.0
-  ~  (the "License"); you may not use this file except in compliance with
-  ~  the License.  You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~  Unless required by applicable law or agreed to in writing, software
-  ~  distributed under the License is distributed on an "AS IS" BASIS,
-  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~  See the License for the specific language governing permissions and
-  ~  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>java-client-interface</artifactId>
-    <version>1.0-SNAPSHOT</version>
-
-    <properties>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <dubbo.version>3.2.11</dubbo.version>
-        <log4j2.version>2.20.0</log4j2.version>
-        <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
-
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.13</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo</artifactId>
-            <version>${dubbo.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-registry-nacos</artifactId>
-            <version>${dubbo.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.alibaba.nacos</groupId>
-            <artifactId>nacos-client</artifactId>
-            <version>2.2.4</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.protobuf</groupId>
-            <artifactId>protobuf-java</artifactId>
-            <version>3.19.4</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-spring-boot-starter</artifactId>
-            <version>${dubbo.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.dubbo</groupId>
-                    <artifactId>dubbo</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.testcontainers</groupId>
-            <artifactId>testcontainers</artifactId>
-            <version>1.12.3</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <version>1.18.20</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-api</artifactId>
-            <version>${log4j2.version}</version>
-        </dependency>
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>${maven-compiler-plugin.version}</version>
-                <configuration>
-                    <source>${maven.compiler.source}</source>
-                    <target>${maven.compiler.target}</target>
-                </configuration>
-            </plugin>
-             <plugin>
-                <groupId>com.diffplug.spotless</groupId>
-                <artifactId>spotless-maven-plugin</artifactId>
-                <version>2.22.1</version>
-                <configuration>
-                    <java>
-                        <googleJavaFormat>
-                        <version>1.7</version>
-                        <style>GOOGLE</style>
-                        </googleJavaFormat>
-                        <removeUnusedImports/>
-                    </java>
-                    <lineEndings>UNIX</lineEndings>
-                </configuration>
-                <executions>
-                    <execution>
-                        <goals>
-                        <goal>apply</goal>
-                        </goals>
-                        <phase>compile</phase>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
\ No newline at end of file
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/Main.java b/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/Main.java
deleted file mode 100644
index 73c281c..0000000
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/Main.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.apache.dubbo.samples;
-
-import java.io.IOException;
-
-import org.apache.dubbo.samples.proto.GreetRequest;
-import org.apache.dubbo.samples.proto.GreetResponse;
-import org.apache.dubbo.samples.proto.GreetService;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-public class Main {
-
-    public static void main(String[] args) throws InterruptedException, IOException {
-        System.setProperty("dubbo.application.service-discovery.migration", "APPLICATION_FIRST");
-        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
-                new String[] { "/spring/dubbo.consumer.xml" });
-        GreetService greetService = (GreetService) context.getBean("GreetService");
-        GreetRequest req = GreetRequest.newBuilder().setName("Mamba").build();
-        System.out.println("dubbo ref started");
-        GreetResponse greet = greetService.greet(req);
-        System.out.println("Greeting:" + greet.getGreeting() + "!!!!!!!!!!!!");
-    }
-
-}
\ No newline at end of file
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java b/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java
deleted file mode 100644
index 1481ba9..0000000
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-public final class GreetProto {
-  private GreetProto() {}
-  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_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
-  static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable;
-  static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_org_apache_dubbo_samples_proto_GreetResponse_descriptor;
-  static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_org_apache_dubbo_samples_proto_GreetResponse_fieldAccessorTable;
-  static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_descriptor;
-  static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_fieldAccessorTable;
-  static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_descriptor;
-  static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_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\013greet.proto\022\036org.apache.dubbo.samples." +
-      "proto\"\034\n\014GreetRequest\022\014\n\004name\030\001 \001(\t\"!\n\rG" +
-      "reetResponse\022\020\n\010greeting\030\001 \001(\t\"\037\n\017SayHel" +
-      "loRequest\022\014\n\004name\030\001 \001(\t\"!\n\020SayHelloRespo" +
-      "nse\022\r\n\005hello\030\001 \001(\t2\347\001\n\014GreetService\022f\n\005G" +
-      "reet\022,.org.apache.dubbo.samples.proto.Gr" +
-      "eetRequest\032-.org.apache.dubbo.samples.pr" +
-      "oto.GreetResponse\"\000\022o\n\010SayHello\022/.org.ap" +
-      "ache.dubbo.samples.proto.SayHelloRequest" +
-      "\0320.org.apache.dubbo.samples.proto.SayHel" +
-      "loResponse\"\000B4\n\036org.apache.dubbo.samples" +
-      ".protoB\nGreetProtoP\001\242\002\003HLWb\006proto3"
-    };
-    descriptor = com.google.protobuf.Descriptors.FileDescriptor
-      .internalBuildGeneratedFileFrom(descriptorData,
-        new com.google.protobuf.Descriptors.FileDescriptor[] {
-        });
-    internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor =
-      getDescriptor().getMessageTypes().get(0);
-    internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor,
-        new java.lang.String[] { "Name", });
-    internal_static_org_apache_dubbo_samples_proto_GreetResponse_descriptor =
-      getDescriptor().getMessageTypes().get(1);
-    internal_static_org_apache_dubbo_samples_proto_GreetResponse_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_org_apache_dubbo_samples_proto_GreetResponse_descriptor,
-        new java.lang.String[] { "Greeting", });
-    internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_descriptor =
-      getDescriptor().getMessageTypes().get(2);
-    internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_descriptor,
-        new java.lang.String[] { "Name", });
-    internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_descriptor =
-      getDescriptor().getMessageTypes().get(3);
-    internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_descriptor,
-        new java.lang.String[] { "Hello", });
-  }
-
-  // @@protoc_insertion_point(outer_class_scope)
-}
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java b/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java
deleted file mode 100644
index afb5a0f..0000000
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java
+++ /dev/null
@@ -1,557 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-/**
- * Protobuf type {@code org.apache.dubbo.samples.proto.GreetResponse}
- */
-public final class GreetResponse extends
-    com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.proto.GreetResponse)
-    GreetResponseOrBuilder {
-private static final long serialVersionUID = 0L;
-  // Use GreetResponse.newBuilder() to construct.
-  private GreetResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-    super(builder);
-  }
-  private GreetResponse() {
-    greeting_ = "";
-  }
-
-  @java.lang.Override
-  @SuppressWarnings({"unused"})
-  protected java.lang.Object newInstance(
-      UnusedPrivateParameter unused) {
-    return new GreetResponse();
-  }
-
-  @java.lang.Override
-  public final com.google.protobuf.UnknownFieldSet
-  getUnknownFields() {
-    return this.unknownFields;
-  }
-  private GreetResponse(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    this();
-    if (extensionRegistry == null) {
-      throw new java.lang.NullPointerException();
-    }
-    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-        com.google.protobuf.UnknownFieldSet.newBuilder();
-    try {
-      boolean done = false;
-      while (!done) {
-        int tag = input.readTag();
-        switch (tag) {
-          case 0:
-            done = true;
-            break;
-          case 10: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            greeting_ = s;
-            break;
-          }
-          default: {
-            if (!parseUnknownField(
-                input, unknownFields, extensionRegistry, tag)) {
-              done = true;
-            }
-            break;
-          }
-        }
-      }
-    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw e.setUnfinishedMessage(this);
-    } catch (java.io.IOException e) {
-      throw new com.google.protobuf.InvalidProtocolBufferException(
-          e).setUnfinishedMessage(this);
-    } finally {
-      this.unknownFields = unknownFields.build();
-      makeExtensionsImmutable();
-    }
-  }
-  public static final com.google.protobuf.Descriptors.Descriptor
-      getDescriptor() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetResponse_descriptor;
-  }
-
-  @java.lang.Override
-  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internalGetFieldAccessorTable() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetResponse_fieldAccessorTable
-        .ensureFieldAccessorsInitialized(
-            org.apache.dubbo.samples.proto.GreetResponse.class, org.apache.dubbo.samples.proto.GreetResponse.Builder.class);
-  }
-
-  public static final int GREETING_FIELD_NUMBER = 1;
-  private volatile java.lang.Object greeting_;
-  /**
-   * <code>string greeting = 1;</code>
-   * @return The greeting.
-   */
-  @java.lang.Override
-  public java.lang.String getGreeting() {
-    java.lang.Object ref = greeting_;
-    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();
-      greeting_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string greeting = 1;</code>
-   * @return The bytes for greeting.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getGreetingBytes() {
-    java.lang.Object ref = greeting_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      greeting_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
-    }
-  }
-
-  private byte memoizedIsInitialized = -1;
-  @java.lang.Override
-  public final boolean isInitialized() {
-    byte isInitialized = memoizedIsInitialized;
-    if (isInitialized == 1) return true;
-    if (isInitialized == 0) return false;
-
-    memoizedIsInitialized = 1;
-    return true;
-  }
-
-  @java.lang.Override
-  public void writeTo(com.google.protobuf.CodedOutputStream output)
-                      throws java.io.IOException {
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(greeting_)) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, greeting_);
-    }
-    unknownFields.writeTo(output);
-  }
-
-  @java.lang.Override
-  public int getSerializedSize() {
-    int size = memoizedSize;
-    if (size != -1) return size;
-
-    size = 0;
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(greeting_)) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, greeting_);
-    }
-    size += unknownFields.getSerializedSize();
-    memoizedSize = size;
-    return size;
-  }
-
-  @java.lang.Override
-  public boolean equals(final java.lang.Object obj) {
-    if (obj == this) {
-     return true;
-    }
-    if (!(obj instanceof org.apache.dubbo.samples.proto.GreetResponse)) {
-      return super.equals(obj);
-    }
-    org.apache.dubbo.samples.proto.GreetResponse other = (org.apache.dubbo.samples.proto.GreetResponse) obj;
-
-    if (!getGreeting()
-        .equals(other.getGreeting())) return false;
-    if (!unknownFields.equals(other.unknownFields)) return false;
-    return true;
-  }
-
-  @java.lang.Override
-  public int hashCode() {
-    if (memoizedHashCode != 0) {
-      return memoizedHashCode;
-    }
-    int hash = 41;
-    hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + GREETING_FIELD_NUMBER;
-    hash = (53 * hash) + getGreeting().hashCode();
-    hash = (29 * hash) + unknownFields.hashCode();
-    memoizedHashCode = hash;
-    return hash;
-  }
-
-  public static org.apache.dubbo.samples.proto.GreetResponse parseFrom(
-      java.nio.ByteBuffer data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static org.apache.dubbo.samples.proto.GreetResponse parseFrom(
-      java.nio.ByteBuffer data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static org.apache.dubbo.samples.proto.GreetResponse parseFrom(
-      com.google.protobuf.ByteString data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static org.apache.dubbo.samples.proto.GreetResponse parseFrom(
-      com.google.protobuf.ByteString data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static org.apache.dubbo.samples.proto.GreetResponse parseFrom(byte[] data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static org.apache.dubbo.samples.proto.GreetResponse parseFrom(
-      byte[] data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static org.apache.dubbo.samples.proto.GreetResponse parseFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static org.apache.dubbo.samples.proto.GreetResponse 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 org.apache.dubbo.samples.proto.GreetResponse parseDelimitedFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseDelimitedWithIOException(PARSER, input);
-  }
-  public static org.apache.dubbo.samples.proto.GreetResponse 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 org.apache.dubbo.samples.proto.GreetResponse parseFrom(
-      com.google.protobuf.CodedInputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static org.apache.dubbo.samples.proto.GreetResponse parseFrom(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input, extensionRegistry);
-  }
-
-  @java.lang.Override
-  public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return DEFAULT_INSTANCE.toBuilder();
-  }
-  public static Builder newBuilder(org.apache.dubbo.samples.proto.GreetResponse prototype) {
-    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-  }
-  @java.lang.Override
-  public Builder toBuilder() {
-    return this == DEFAULT_INSTANCE
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
-
-  @java.lang.Override
-  protected Builder newBuilderForType(
-      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-    Builder builder = new Builder(parent);
-    return builder;
-  }
-  /**
-   * Protobuf type {@code org.apache.dubbo.samples.proto.GreetResponse}
-   */
-  public static final class Builder extends
-      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.proto.GreetResponse)
-      org.apache.dubbo.samples.proto.GreetResponseOrBuilder {
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetResponse_descriptor;
-    }
-
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetResponse_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.apache.dubbo.samples.proto.GreetResponse.class, org.apache.dubbo.samples.proto.GreetResponse.Builder.class);
-    }
-
-    // Construct using org.apache.dubbo.samples.proto.GreetResponse.newBuilder()
-    private Builder() {
-      maybeForceBuilderInitialization();
-    }
-
-    private Builder(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      super(parent);
-      maybeForceBuilderInitialization();
-    }
-    private void maybeForceBuilderInitialization() {
-      if (com.google.protobuf.GeneratedMessageV3
-              .alwaysUseFieldBuilders) {
-      }
-    }
-    @java.lang.Override
-    public Builder clear() {
-      super.clear();
-      greeting_ = "";
-
-      return this;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.Descriptor
-        getDescriptorForType() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetResponse_descriptor;
-    }
-
-    @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetResponse getDefaultInstanceForType() {
-      return org.apache.dubbo.samples.proto.GreetResponse.getDefaultInstance();
-    }
-
-    @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetResponse build() {
-      org.apache.dubbo.samples.proto.GreetResponse result = buildPartial();
-      if (!result.isInitialized()) {
-        throw newUninitializedMessageException(result);
-      }
-      return result;
-    }
-
-    @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetResponse buildPartial() {
-      org.apache.dubbo.samples.proto.GreetResponse result = new org.apache.dubbo.samples.proto.GreetResponse(this);
-      result.greeting_ = greeting_;
-      onBuilt();
-      return result;
-    }
-
-    @java.lang.Override
-    public Builder clone() {
-      return super.clone();
-    }
-    @java.lang.Override
-    public Builder setField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        java.lang.Object value) {
-      return super.setField(field, value);
-    }
-    @java.lang.Override
-    public Builder clearField(
-        com.google.protobuf.Descriptors.FieldDescriptor field) {
-      return super.clearField(field);
-    }
-    @java.lang.Override
-    public Builder clearOneof(
-        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-      return super.clearOneof(oneof);
-    }
-    @java.lang.Override
-    public Builder setRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        int index, java.lang.Object value) {
-      return super.setRepeatedField(field, index, value);
-    }
-    @java.lang.Override
-    public Builder addRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        java.lang.Object value) {
-      return super.addRepeatedField(field, value);
-    }
-    @java.lang.Override
-    public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof org.apache.dubbo.samples.proto.GreetResponse) {
-        return mergeFrom((org.apache.dubbo.samples.proto.GreetResponse)other);
-      } else {
-        super.mergeFrom(other);
-        return this;
-      }
-    }
-
-    public Builder mergeFrom(org.apache.dubbo.samples.proto.GreetResponse other) {
-      if (other == org.apache.dubbo.samples.proto.GreetResponse.getDefaultInstance()) return this;
-      if (!other.getGreeting().isEmpty()) {
-        greeting_ = other.greeting_;
-        onChanged();
-      }
-      this.mergeUnknownFields(other.unknownFields);
-      onChanged();
-      return this;
-    }
-
-    @java.lang.Override
-    public final boolean isInitialized() {
-      return true;
-    }
-
-    @java.lang.Override
-    public Builder mergeFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      org.apache.dubbo.samples.proto.GreetResponse parsedMessage = null;
-      try {
-        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (org.apache.dubbo.samples.proto.GreetResponse) e.getUnfinishedMessage();
-        throw e.unwrapIOException();
-      } finally {
-        if (parsedMessage != null) {
-          mergeFrom(parsedMessage);
-        }
-      }
-      return this;
-    }
-
-    private java.lang.Object greeting_ = "";
-    /**
-     * <code>string greeting = 1;</code>
-     * @return The greeting.
-     */
-    public java.lang.String getGreeting() {
-      java.lang.Object ref = greeting_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        greeting_ = s;
-        return s;
-      } else {
-        return (java.lang.String) ref;
-      }
-    }
-    /**
-     * <code>string greeting = 1;</code>
-     * @return The bytes for greeting.
-     */
-    public com.google.protobuf.ByteString
-        getGreetingBytes() {
-      java.lang.Object ref = greeting_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        greeting_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-    /**
-     * <code>string greeting = 1;</code>
-     * @param value The greeting to set.
-     * @return This builder for chaining.
-     */
-    public Builder setGreeting(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      greeting_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string greeting = 1;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearGreeting() {
-      
-      greeting_ = getDefaultInstance().getGreeting();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string greeting = 1;</code>
-     * @param value The bytes for greeting to set.
-     * @return This builder for chaining.
-     */
-    public Builder setGreetingBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      greeting_ = value;
-      onChanged();
-      return this;
-    }
-    @java.lang.Override
-    public final Builder setUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.setUnknownFields(unknownFields);
-    }
-
-    @java.lang.Override
-    public final Builder mergeUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.mergeUnknownFields(unknownFields);
-    }
-
-
-    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.proto.GreetResponse)
-  }
-
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.proto.GreetResponse)
-  private static final org.apache.dubbo.samples.proto.GreetResponse DEFAULT_INSTANCE;
-  static {
-    DEFAULT_INSTANCE = new org.apache.dubbo.samples.proto.GreetResponse();
-  }
-
-  public static org.apache.dubbo.samples.proto.GreetResponse getDefaultInstance() {
-    return DEFAULT_INSTANCE;
-  }
-
-  private static final com.google.protobuf.Parser<GreetResponse>
-      PARSER = new com.google.protobuf.AbstractParser<GreetResponse>() {
-    @java.lang.Override
-    public GreetResponse parsePartialFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return new GreetResponse(input, extensionRegistry);
-    }
-  };
-
-  public static com.google.protobuf.Parser<GreetResponse> parser() {
-    return PARSER;
-  }
-
-  @java.lang.Override
-  public com.google.protobuf.Parser<GreetResponse> getParserForType() {
-    return PARSER;
-  }
-
-  @java.lang.Override
-  public org.apache.dubbo.samples.proto.GreetResponse getDefaultInstanceForType() {
-    return DEFAULT_INSTANCE;
-  }
-
-}
-
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java b/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
deleted file mode 100644
index 1b0f285..0000000
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-public interface GreetResponseOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.GreetResponse)
-    com.google.protobuf.MessageOrBuilder {
-
-  /**
-   * <code>string greeting = 1;</code>
-   * @return The greeting.
-   */
-  java.lang.String getGreeting();
-  /**
-   * <code>string greeting = 1;</code>
-   * @return The bytes for greeting.
-   */
-  com.google.protobuf.ByteString
-      getGreetingBytes();
-}
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java b/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
deleted file mode 100644
index ea23cff..0000000
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
+++ /dev/null
@@ -1,557 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-/**
- * Protobuf type {@code org.apache.dubbo.samples.proto.SayHelloRequest}
- */
-public final class SayHelloRequest extends
-    com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.proto.SayHelloRequest)
-    SayHelloRequestOrBuilder {
-private static final long serialVersionUID = 0L;
-  // Use SayHelloRequest.newBuilder() to construct.
-  private SayHelloRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-    super(builder);
-  }
-  private SayHelloRequest() {
-    name_ = "";
-  }
-
-  @java.lang.Override
-  @SuppressWarnings({"unused"})
-  protected java.lang.Object newInstance(
-      UnusedPrivateParameter unused) {
-    return new SayHelloRequest();
-  }
-
-  @java.lang.Override
-  public final com.google.protobuf.UnknownFieldSet
-  getUnknownFields() {
-    return this.unknownFields;
-  }
-  private SayHelloRequest(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    this();
-    if (extensionRegistry == null) {
-      throw new java.lang.NullPointerException();
-    }
-    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-        com.google.protobuf.UnknownFieldSet.newBuilder();
-    try {
-      boolean done = false;
-      while (!done) {
-        int tag = input.readTag();
-        switch (tag) {
-          case 0:
-            done = true;
-            break;
-          case 10: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            name_ = s;
-            break;
-          }
-          default: {
-            if (!parseUnknownField(
-                input, unknownFields, extensionRegistry, tag)) {
-              done = true;
-            }
-            break;
-          }
-        }
-      }
-    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw e.setUnfinishedMessage(this);
-    } catch (java.io.IOException e) {
-      throw new com.google.protobuf.InvalidProtocolBufferException(
-          e).setUnfinishedMessage(this);
-    } finally {
-      this.unknownFields = unknownFields.build();
-      makeExtensionsImmutable();
-    }
-  }
-  public static final com.google.protobuf.Descriptors.Descriptor
-      getDescriptor() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_descriptor;
-  }
-
-  @java.lang.Override
-  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internalGetFieldAccessorTable() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_fieldAccessorTable
-        .ensureFieldAccessorsInitialized(
-            org.apache.dubbo.samples.proto.SayHelloRequest.class, org.apache.dubbo.samples.proto.SayHelloRequest.Builder.class);
-  }
-
-  public static final int NAME_FIELD_NUMBER = 1;
-  private volatile java.lang.Object name_;
-  /**
-   * <code>string name = 1;</code>
-   * @return The name.
-   */
-  @java.lang.Override
-  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;
-    }
-  }
-  /**
-   * <code>string name = 1;</code>
-   * @return The bytes for name.
-   */
-  @java.lang.Override
-  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;
-  @java.lang.Override
-  public final boolean isInitialized() {
-    byte isInitialized = memoizedIsInitialized;
-    if (isInitialized == 1) return true;
-    if (isInitialized == 0) return false;
-
-    memoizedIsInitialized = 1;
-    return true;
-  }
-
-  @java.lang.Override
-  public void writeTo(com.google.protobuf.CodedOutputStream output)
-                      throws java.io.IOException {
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
-    }
-    unknownFields.writeTo(output);
-  }
-
-  @java.lang.Override
-  public int getSerializedSize() {
-    int size = memoizedSize;
-    if (size != -1) return size;
-
-    size = 0;
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
-    }
-    size += unknownFields.getSerializedSize();
-    memoizedSize = size;
-    return size;
-  }
-
-  @java.lang.Override
-  public boolean equals(final java.lang.Object obj) {
-    if (obj == this) {
-     return true;
-    }
-    if (!(obj instanceof org.apache.dubbo.samples.proto.SayHelloRequest)) {
-      return super.equals(obj);
-    }
-    org.apache.dubbo.samples.proto.SayHelloRequest other = (org.apache.dubbo.samples.proto.SayHelloRequest) obj;
-
-    if (!getName()
-        .equals(other.getName())) return false;
-    if (!unknownFields.equals(other.unknownFields)) return false;
-    return true;
-  }
-
-  @java.lang.Override
-  public int hashCode() {
-    if (memoizedHashCode != 0) {
-      return memoizedHashCode;
-    }
-    int hash = 41;
-    hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + NAME_FIELD_NUMBER;
-    hash = (53 * hash) + getName().hashCode();
-    hash = (29 * hash) + unknownFields.hashCode();
-    memoizedHashCode = hash;
-    return hash;
-  }
-
-  public static org.apache.dubbo.samples.proto.SayHelloRequest parseFrom(
-      java.nio.ByteBuffer data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloRequest parseFrom(
-      java.nio.ByteBuffer data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloRequest parseFrom(
-      com.google.protobuf.ByteString data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloRequest parseFrom(
-      com.google.protobuf.ByteString data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloRequest parseFrom(byte[] data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloRequest parseFrom(
-      byte[] data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloRequest parseFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloRequest 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 org.apache.dubbo.samples.proto.SayHelloRequest parseDelimitedFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseDelimitedWithIOException(PARSER, input);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloRequest 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 org.apache.dubbo.samples.proto.SayHelloRequest parseFrom(
-      com.google.protobuf.CodedInputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloRequest parseFrom(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input, extensionRegistry);
-  }
-
-  @java.lang.Override
-  public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return DEFAULT_INSTANCE.toBuilder();
-  }
-  public static Builder newBuilder(org.apache.dubbo.samples.proto.SayHelloRequest prototype) {
-    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-  }
-  @java.lang.Override
-  public Builder toBuilder() {
-    return this == DEFAULT_INSTANCE
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
-
-  @java.lang.Override
-  protected Builder newBuilderForType(
-      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-    Builder builder = new Builder(parent);
-    return builder;
-  }
-  /**
-   * Protobuf type {@code org.apache.dubbo.samples.proto.SayHelloRequest}
-   */
-  public static final class Builder extends
-      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.proto.SayHelloRequest)
-      org.apache.dubbo.samples.proto.SayHelloRequestOrBuilder {
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_descriptor;
-    }
-
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.apache.dubbo.samples.proto.SayHelloRequest.class, org.apache.dubbo.samples.proto.SayHelloRequest.Builder.class);
-    }
-
-    // Construct using org.apache.dubbo.samples.proto.SayHelloRequest.newBuilder()
-    private Builder() {
-      maybeForceBuilderInitialization();
-    }
-
-    private Builder(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      super(parent);
-      maybeForceBuilderInitialization();
-    }
-    private void maybeForceBuilderInitialization() {
-      if (com.google.protobuf.GeneratedMessageV3
-              .alwaysUseFieldBuilders) {
-      }
-    }
-    @java.lang.Override
-    public Builder clear() {
-      super.clear();
-      name_ = "";
-
-      return this;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.Descriptor
-        getDescriptorForType() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_descriptor;
-    }
-
-    @java.lang.Override
-    public org.apache.dubbo.samples.proto.SayHelloRequest getDefaultInstanceForType() {
-      return org.apache.dubbo.samples.proto.SayHelloRequest.getDefaultInstance();
-    }
-
-    @java.lang.Override
-    public org.apache.dubbo.samples.proto.SayHelloRequest build() {
-      org.apache.dubbo.samples.proto.SayHelloRequest result = buildPartial();
-      if (!result.isInitialized()) {
-        throw newUninitializedMessageException(result);
-      }
-      return result;
-    }
-
-    @java.lang.Override
-    public org.apache.dubbo.samples.proto.SayHelloRequest buildPartial() {
-      org.apache.dubbo.samples.proto.SayHelloRequest result = new org.apache.dubbo.samples.proto.SayHelloRequest(this);
-      result.name_ = name_;
-      onBuilt();
-      return result;
-    }
-
-    @java.lang.Override
-    public Builder clone() {
-      return super.clone();
-    }
-    @java.lang.Override
-    public Builder setField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        java.lang.Object value) {
-      return super.setField(field, value);
-    }
-    @java.lang.Override
-    public Builder clearField(
-        com.google.protobuf.Descriptors.FieldDescriptor field) {
-      return super.clearField(field);
-    }
-    @java.lang.Override
-    public Builder clearOneof(
-        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-      return super.clearOneof(oneof);
-    }
-    @java.lang.Override
-    public Builder setRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        int index, java.lang.Object value) {
-      return super.setRepeatedField(field, index, value);
-    }
-    @java.lang.Override
-    public Builder addRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        java.lang.Object value) {
-      return super.addRepeatedField(field, value);
-    }
-    @java.lang.Override
-    public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof org.apache.dubbo.samples.proto.SayHelloRequest) {
-        return mergeFrom((org.apache.dubbo.samples.proto.SayHelloRequest)other);
-      } else {
-        super.mergeFrom(other);
-        return this;
-      }
-    }
-
-    public Builder mergeFrom(org.apache.dubbo.samples.proto.SayHelloRequest other) {
-      if (other == org.apache.dubbo.samples.proto.SayHelloRequest.getDefaultInstance()) return this;
-      if (!other.getName().isEmpty()) {
-        name_ = other.name_;
-        onChanged();
-      }
-      this.mergeUnknownFields(other.unknownFields);
-      onChanged();
-      return this;
-    }
-
-    @java.lang.Override
-    public final boolean isInitialized() {
-      return true;
-    }
-
-    @java.lang.Override
-    public Builder mergeFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      org.apache.dubbo.samples.proto.SayHelloRequest parsedMessage = null;
-      try {
-        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (org.apache.dubbo.samples.proto.SayHelloRequest) e.getUnfinishedMessage();
-        throw e.unwrapIOException();
-      } finally {
-        if (parsedMessage != null) {
-          mergeFrom(parsedMessage);
-        }
-      }
-      return this;
-    }
-
-    private java.lang.Object name_ = "";
-    /**
-     * <code>string name = 1;</code>
-     * @return The name.
-     */
-    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>string name = 1;</code>
-     * @return The bytes for name.
-     */
-    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>string name = 1;</code>
-     * @param value The name to set.
-     * @return This builder for chaining.
-     */
-    public Builder setName(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      name_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string name = 1;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearName() {
-      
-      name_ = getDefaultInstance().getName();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string name = 1;</code>
-     * @param value The bytes for name to set.
-     * @return This builder for chaining.
-     */
-    public Builder setNameBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      name_ = value;
-      onChanged();
-      return this;
-    }
-    @java.lang.Override
-    public final Builder setUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.setUnknownFields(unknownFields);
-    }
-
-    @java.lang.Override
-    public final Builder mergeUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.mergeUnknownFields(unknownFields);
-    }
-
-
-    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.proto.SayHelloRequest)
-  }
-
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.proto.SayHelloRequest)
-  private static final org.apache.dubbo.samples.proto.SayHelloRequest DEFAULT_INSTANCE;
-  static {
-    DEFAULT_INSTANCE = new org.apache.dubbo.samples.proto.SayHelloRequest();
-  }
-
-  public static org.apache.dubbo.samples.proto.SayHelloRequest getDefaultInstance() {
-    return DEFAULT_INSTANCE;
-  }
-
-  private static final com.google.protobuf.Parser<SayHelloRequest>
-      PARSER = new com.google.protobuf.AbstractParser<SayHelloRequest>() {
-    @java.lang.Override
-    public SayHelloRequest parsePartialFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return new SayHelloRequest(input, extensionRegistry);
-    }
-  };
-
-  public static com.google.protobuf.Parser<SayHelloRequest> parser() {
-    return PARSER;
-  }
-
-  @java.lang.Override
-  public com.google.protobuf.Parser<SayHelloRequest> getParserForType() {
-    return PARSER;
-  }
-
-  @java.lang.Override
-  public org.apache.dubbo.samples.proto.SayHelloRequest getDefaultInstanceForType() {
-    return DEFAULT_INSTANCE;
-  }
-
-}
-
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java b/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
deleted file mode 100644
index 293d833..0000000
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-public interface SayHelloRequestOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.SayHelloRequest)
-    com.google.protobuf.MessageOrBuilder {
-
-  /**
-   * <code>string name = 1;</code>
-   * @return The name.
-   */
-  java.lang.String getName();
-  /**
-   * <code>string name = 1;</code>
-   * @return The bytes for name.
-   */
-  com.google.protobuf.ByteString
-      getNameBytes();
-}
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java b/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
deleted file mode 100644
index e1426a8..0000000
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
+++ /dev/null
@@ -1,557 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-/**
- * Protobuf type {@code org.apache.dubbo.samples.proto.SayHelloResponse}
- */
-public final class SayHelloResponse extends
-    com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.proto.SayHelloResponse)
-    SayHelloResponseOrBuilder {
-private static final long serialVersionUID = 0L;
-  // Use SayHelloResponse.newBuilder() to construct.
-  private SayHelloResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-    super(builder);
-  }
-  private SayHelloResponse() {
-    hello_ = "";
-  }
-
-  @java.lang.Override
-  @SuppressWarnings({"unused"})
-  protected java.lang.Object newInstance(
-      UnusedPrivateParameter unused) {
-    return new SayHelloResponse();
-  }
-
-  @java.lang.Override
-  public final com.google.protobuf.UnknownFieldSet
-  getUnknownFields() {
-    return this.unknownFields;
-  }
-  private SayHelloResponse(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    this();
-    if (extensionRegistry == null) {
-      throw new java.lang.NullPointerException();
-    }
-    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-        com.google.protobuf.UnknownFieldSet.newBuilder();
-    try {
-      boolean done = false;
-      while (!done) {
-        int tag = input.readTag();
-        switch (tag) {
-          case 0:
-            done = true;
-            break;
-          case 10: {
-            java.lang.String s = input.readStringRequireUtf8();
-
-            hello_ = s;
-            break;
-          }
-          default: {
-            if (!parseUnknownField(
-                input, unknownFields, extensionRegistry, tag)) {
-              done = true;
-            }
-            break;
-          }
-        }
-      }
-    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw e.setUnfinishedMessage(this);
-    } catch (java.io.IOException e) {
-      throw new com.google.protobuf.InvalidProtocolBufferException(
-          e).setUnfinishedMessage(this);
-    } finally {
-      this.unknownFields = unknownFields.build();
-      makeExtensionsImmutable();
-    }
-  }
-  public static final com.google.protobuf.Descriptors.Descriptor
-      getDescriptor() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_descriptor;
-  }
-
-  @java.lang.Override
-  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internalGetFieldAccessorTable() {
-    return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_fieldAccessorTable
-        .ensureFieldAccessorsInitialized(
-            org.apache.dubbo.samples.proto.SayHelloResponse.class, org.apache.dubbo.samples.proto.SayHelloResponse.Builder.class);
-  }
-
-  public static final int HELLO_FIELD_NUMBER = 1;
-  private volatile java.lang.Object hello_;
-  /**
-   * <code>string hello = 1;</code>
-   * @return The hello.
-   */
-  @java.lang.Override
-  public java.lang.String getHello() {
-    java.lang.Object ref = hello_;
-    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();
-      hello_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string hello = 1;</code>
-   * @return The bytes for hello.
-   */
-  @java.lang.Override
-  public com.google.protobuf.ByteString
-      getHelloBytes() {
-    java.lang.Object ref = hello_;
-    if (ref instanceof java.lang.String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (java.lang.String) ref);
-      hello_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
-    }
-  }
-
-  private byte memoizedIsInitialized = -1;
-  @java.lang.Override
-  public final boolean isInitialized() {
-    byte isInitialized = memoizedIsInitialized;
-    if (isInitialized == 1) return true;
-    if (isInitialized == 0) return false;
-
-    memoizedIsInitialized = 1;
-    return true;
-  }
-
-  @java.lang.Override
-  public void writeTo(com.google.protobuf.CodedOutputStream output)
-                      throws java.io.IOException {
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hello_)) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, hello_);
-    }
-    unknownFields.writeTo(output);
-  }
-
-  @java.lang.Override
-  public int getSerializedSize() {
-    int size = memoizedSize;
-    if (size != -1) return size;
-
-    size = 0;
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hello_)) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, hello_);
-    }
-    size += unknownFields.getSerializedSize();
-    memoizedSize = size;
-    return size;
-  }
-
-  @java.lang.Override
-  public boolean equals(final java.lang.Object obj) {
-    if (obj == this) {
-     return true;
-    }
-    if (!(obj instanceof org.apache.dubbo.samples.proto.SayHelloResponse)) {
-      return super.equals(obj);
-    }
-    org.apache.dubbo.samples.proto.SayHelloResponse other = (org.apache.dubbo.samples.proto.SayHelloResponse) obj;
-
-    if (!getHello()
-        .equals(other.getHello())) return false;
-    if (!unknownFields.equals(other.unknownFields)) return false;
-    return true;
-  }
-
-  @java.lang.Override
-  public int hashCode() {
-    if (memoizedHashCode != 0) {
-      return memoizedHashCode;
-    }
-    int hash = 41;
-    hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + HELLO_FIELD_NUMBER;
-    hash = (53 * hash) + getHello().hashCode();
-    hash = (29 * hash) + unknownFields.hashCode();
-    memoizedHashCode = hash;
-    return hash;
-  }
-
-  public static org.apache.dubbo.samples.proto.SayHelloResponse parseFrom(
-      java.nio.ByteBuffer data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloResponse parseFrom(
-      java.nio.ByteBuffer data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloResponse parseFrom(
-      com.google.protobuf.ByteString data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloResponse parseFrom(
-      com.google.protobuf.ByteString data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloResponse parseFrom(byte[] data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloResponse parseFrom(
-      byte[] data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloResponse parseFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloResponse 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 org.apache.dubbo.samples.proto.SayHelloResponse parseDelimitedFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseDelimitedWithIOException(PARSER, input);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloResponse 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 org.apache.dubbo.samples.proto.SayHelloResponse parseFrom(
-      com.google.protobuf.CodedInputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static org.apache.dubbo.samples.proto.SayHelloResponse parseFrom(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input, extensionRegistry);
-  }
-
-  @java.lang.Override
-  public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return DEFAULT_INSTANCE.toBuilder();
-  }
-  public static Builder newBuilder(org.apache.dubbo.samples.proto.SayHelloResponse prototype) {
-    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-  }
-  @java.lang.Override
-  public Builder toBuilder() {
-    return this == DEFAULT_INSTANCE
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
-
-  @java.lang.Override
-  protected Builder newBuilderForType(
-      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-    Builder builder = new Builder(parent);
-    return builder;
-  }
-  /**
-   * Protobuf type {@code org.apache.dubbo.samples.proto.SayHelloResponse}
-   */
-  public static final class Builder extends
-      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.proto.SayHelloResponse)
-      org.apache.dubbo.samples.proto.SayHelloResponseOrBuilder {
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_descriptor;
-    }
-
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              org.apache.dubbo.samples.proto.SayHelloResponse.class, org.apache.dubbo.samples.proto.SayHelloResponse.Builder.class);
-    }
-
-    // Construct using org.apache.dubbo.samples.proto.SayHelloResponse.newBuilder()
-    private Builder() {
-      maybeForceBuilderInitialization();
-    }
-
-    private Builder(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      super(parent);
-      maybeForceBuilderInitialization();
-    }
-    private void maybeForceBuilderInitialization() {
-      if (com.google.protobuf.GeneratedMessageV3
-              .alwaysUseFieldBuilders) {
-      }
-    }
-    @java.lang.Override
-    public Builder clear() {
-      super.clear();
-      hello_ = "";
-
-      return this;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.Descriptor
-        getDescriptorForType() {
-      return org.apache.dubbo.samples.proto.GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_descriptor;
-    }
-
-    @java.lang.Override
-    public org.apache.dubbo.samples.proto.SayHelloResponse getDefaultInstanceForType() {
-      return org.apache.dubbo.samples.proto.SayHelloResponse.getDefaultInstance();
-    }
-
-    @java.lang.Override
-    public org.apache.dubbo.samples.proto.SayHelloResponse build() {
-      org.apache.dubbo.samples.proto.SayHelloResponse result = buildPartial();
-      if (!result.isInitialized()) {
-        throw newUninitializedMessageException(result);
-      }
-      return result;
-    }
-
-    @java.lang.Override
-    public org.apache.dubbo.samples.proto.SayHelloResponse buildPartial() {
-      org.apache.dubbo.samples.proto.SayHelloResponse result = new org.apache.dubbo.samples.proto.SayHelloResponse(this);
-      result.hello_ = hello_;
-      onBuilt();
-      return result;
-    }
-
-    @java.lang.Override
-    public Builder clone() {
-      return super.clone();
-    }
-    @java.lang.Override
-    public Builder setField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        java.lang.Object value) {
-      return super.setField(field, value);
-    }
-    @java.lang.Override
-    public Builder clearField(
-        com.google.protobuf.Descriptors.FieldDescriptor field) {
-      return super.clearField(field);
-    }
-    @java.lang.Override
-    public Builder clearOneof(
-        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-      return super.clearOneof(oneof);
-    }
-    @java.lang.Override
-    public Builder setRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        int index, java.lang.Object value) {
-      return super.setRepeatedField(field, index, value);
-    }
-    @java.lang.Override
-    public Builder addRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        java.lang.Object value) {
-      return super.addRepeatedField(field, value);
-    }
-    @java.lang.Override
-    public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof org.apache.dubbo.samples.proto.SayHelloResponse) {
-        return mergeFrom((org.apache.dubbo.samples.proto.SayHelloResponse)other);
-      } else {
-        super.mergeFrom(other);
-        return this;
-      }
-    }
-
-    public Builder mergeFrom(org.apache.dubbo.samples.proto.SayHelloResponse other) {
-      if (other == org.apache.dubbo.samples.proto.SayHelloResponse.getDefaultInstance()) return this;
-      if (!other.getHello().isEmpty()) {
-        hello_ = other.hello_;
-        onChanged();
-      }
-      this.mergeUnknownFields(other.unknownFields);
-      onChanged();
-      return this;
-    }
-
-    @java.lang.Override
-    public final boolean isInitialized() {
-      return true;
-    }
-
-    @java.lang.Override
-    public Builder mergeFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      org.apache.dubbo.samples.proto.SayHelloResponse parsedMessage = null;
-      try {
-        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (org.apache.dubbo.samples.proto.SayHelloResponse) e.getUnfinishedMessage();
-        throw e.unwrapIOException();
-      } finally {
-        if (parsedMessage != null) {
-          mergeFrom(parsedMessage);
-        }
-      }
-      return this;
-    }
-
-    private java.lang.Object hello_ = "";
-    /**
-     * <code>string hello = 1;</code>
-     * @return The hello.
-     */
-    public java.lang.String getHello() {
-      java.lang.Object ref = hello_;
-      if (!(ref instanceof java.lang.String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        hello_ = s;
-        return s;
-      } else {
-        return (java.lang.String) ref;
-      }
-    }
-    /**
-     * <code>string hello = 1;</code>
-     * @return The bytes for hello.
-     */
-    public com.google.protobuf.ByteString
-        getHelloBytes() {
-      java.lang.Object ref = hello_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        hello_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-    /**
-     * <code>string hello = 1;</code>
-     * @param value The hello to set.
-     * @return This builder for chaining.
-     */
-    public Builder setHello(
-        java.lang.String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      hello_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string hello = 1;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearHello() {
-      
-      hello_ = getDefaultInstance().getHello();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string hello = 1;</code>
-     * @param value The bytes for hello to set.
-     * @return This builder for chaining.
-     */
-    public Builder setHelloBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      hello_ = value;
-      onChanged();
-      return this;
-    }
-    @java.lang.Override
-    public final Builder setUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.setUnknownFields(unknownFields);
-    }
-
-    @java.lang.Override
-    public final Builder mergeUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.mergeUnknownFields(unknownFields);
-    }
-
-
-    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.proto.SayHelloResponse)
-  }
-
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.proto.SayHelloResponse)
-  private static final org.apache.dubbo.samples.proto.SayHelloResponse DEFAULT_INSTANCE;
-  static {
-    DEFAULT_INSTANCE = new org.apache.dubbo.samples.proto.SayHelloResponse();
-  }
-
-  public static org.apache.dubbo.samples.proto.SayHelloResponse getDefaultInstance() {
-    return DEFAULT_INSTANCE;
-  }
-
-  private static final com.google.protobuf.Parser<SayHelloResponse>
-      PARSER = new com.google.protobuf.AbstractParser<SayHelloResponse>() {
-    @java.lang.Override
-    public SayHelloResponse parsePartialFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return new SayHelloResponse(input, extensionRegistry);
-    }
-  };
-
-  public static com.google.protobuf.Parser<SayHelloResponse> parser() {
-    return PARSER;
-  }
-
-  @java.lang.Override
-  public com.google.protobuf.Parser<SayHelloResponse> getParserForType() {
-    return PARSER;
-  }
-
-  @java.lang.Override
-  public org.apache.dubbo.samples.proto.SayHelloResponse getDefaultInstanceForType() {
-    return DEFAULT_INSTANCE;
-  }
-
-}
-
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java b/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
deleted file mode 100644
index 30312ab..0000000
--- a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-public interface SayHelloResponseOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.SayHelloResponse)
-    com.google.protobuf.MessageOrBuilder {
-
-  /**
-   * <code>string hello = 1;</code>
-   * @return The hello.
-   */
-  java.lang.String getHello();
-  /**
-   * <code>string hello = 1;</code>
-   * @return The bytes for hello.
-   */
-  com.google.protobuf.ByteString
-      getHelloBytes();
-}
diff --git a/service_discovery/service/java-client/src/main/resources/spring/dubbo.consumer.xml b/service_discovery/service/java-client/src/main/resources/spring/dubbo.consumer.xml
deleted file mode 100644
index 5218ef3..0000000
--- a/service_discovery/service/java-client/src/main/resources/spring/dubbo.consumer.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-       Licensed to the Apache Software Foundation (ASF) under one or more
-      contributor license agreements.  See the NOTICE file distributed with
-      this work for additional information regarding copyright ownership.
-      The ASF licenses this file to You under the Apache License, Version 2.0
-      (the "License"); you may not use this file except in compliance with
-      the License.  You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-      Unless required by applicable law or agreed to in writing, software
-      distributed under the License is distributed on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-      See the License for the specific language governing permissions and
-      limitations under the License.
--->
-
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
-	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
-
-
-    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
-    <dubbo:application name="greet-client" />
-    <!-- 连接到哪个本地注册中心 -->
-    <dubbo:registry id="dubbogo"  address="nacos://127.0.0.1:8848" />
-<!--     dubbo.registry.address from dubbo.properties -->
-    <!-- dubbo:registry address="${dubbo.registry.address}" / -->
-    <!-- 用dubbo协议在20880端口暴露服务 -->
-    <dubbo:protocol id="tri" name="tri"  host="127.0.0.1" port="20057"/>
-    <!-- 声明需要使用的服务接口 -->
-    <dubbo:reference registry="dubbogo" check="true" id="GreetService" protocol="tri" interface="org.apache.dubbo.samples.proto.GreetService">
-        <dubbo:method name="greet" async="false"/>
-    </dubbo:reference>
-
-</beans>
\ No newline at end of file
diff --git a/service_discovery/service/java-server/pom.xml b/service_discovery/service/java-server/pom.xml
deleted file mode 100644
index fdf6f09..0000000
--- a/service_discovery/service/java-server/pom.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~  Licensed to the Apache Software Foundation (ASF) under one or more
-  ~  contributor license agreements.  See the NOTICE file distributed with
-  ~  this work for additional information regarding copyright ownership.
-  ~  The ASF licenses this file to You under the Apache License, Version 2.0
-  ~  (the "License"); you may not use this file except in compliance with
-  ~  the License.  You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~  Unless required by applicable law or agreed to in writing, software
-  ~  distributed under the License is distributed on an "AS IS" BASIS,
-  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~  See the License for the specific language governing permissions and
-  ~  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>java-server-interface</artifactId>
-    <version>1.0-SNAPSHOT</version>
-
-    <properties>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <dubbo.version>3.3.0-beta.1</dubbo.version>
-        <log4j2.version>2.20.0</log4j2.version>
-        <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
-    </properties>
-
-
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.13</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo</artifactId>
-            <version>${dubbo.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-registry-nacos</artifactId>
-            <version>${dubbo.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.protobuf</groupId>
-            <artifactId>protobuf-java</artifactId>
-            <version>3.19.4</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-spring-boot-starter</artifactId>
-            <version>${dubbo.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.testcontainers</groupId>
-            <artifactId>testcontainers</artifactId>
-            <version>1.12.3</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <version>1.18.20</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-slf4j-impl</artifactId>
-            <version>${log4j2.version}</version>
-        </dependency>
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>${maven-compiler-plugin.version}</version>
-                <configuration>
-                    <source>${maven.compiler.source}</source>
-                    <target>${maven.compiler.target}</target>
-                </configuration>
-            </plugin>
-                         <plugin>
-                <groupId>com.diffplug.spotless</groupId>
-                <artifactId>spotless-maven-plugin</artifactId>
-                <version>2.22.1</version>
-                <configuration>
-                    <java>
-                        <googleJavaFormat>
-                        <version>1.7</version>
-                        <style>GOOGLE</style>
-                        </googleJavaFormat>
-                        <removeUnusedImports/>
-                    </java>
-                    <lineEndings>UNIX</lineEndings>
-                </configuration>
-                <executions>
-                    <execution>
-                        <goals>
-                        <goal>apply</goal>
-                        </goals>
-                        <phase>compile</phase>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-
-</project>
\ No newline at end of file
diff --git a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java b/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
deleted file mode 100644
index 618b625..0000000
--- a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/DubboGreetServiceTriple.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-    package org.apache.dubbo.samples.proto;
-
-import com.google.protobuf.Message;
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.stream.StreamObserver;
-import org.apache.dubbo.rpc.*;
-import org.apache.dubbo.rpc.model.MethodDescriptor;
-import org.apache.dubbo.rpc.model.ServiceDescriptor;
-import org.apache.dubbo.rpc.model.StubMethodDescriptor;
-import org.apache.dubbo.rpc.model.StubServiceDescriptor;
-import org.apache.dubbo.rpc.stub.*;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.function.BiConsumer;
-
-public final class DubboGreetServiceTriple {
-
-    public static final String SERVICE_NAME = GreetService.SERVICE_NAME;
-
-    private static final StubServiceDescriptor serviceDescriptor = new StubServiceDescriptor(SERVICE_NAME,GreetService.class);
-
-    static {
-        org.apache.dubbo.rpc.protocol.tri.service.SchemaDescriptorRegistry.addSchemaDescriptor(SERVICE_NAME,GreetProto.getDescriptor());
-        StubSuppliers.addSupplier(SERVICE_NAME, DubboGreetServiceTriple::newStub);
-        StubSuppliers.addSupplier(GreetService.JAVA_SERVICE_NAME,  DubboGreetServiceTriple::newStub);
-        StubSuppliers.addDescriptor(SERVICE_NAME, serviceDescriptor);
-        StubSuppliers.addDescriptor(GreetService.JAVA_SERVICE_NAME, serviceDescriptor);
-    }
-
-    @SuppressWarnings("all")
-    public static GreetService newStub(Invoker<?> invoker) {
-        return new GreetServiceStub((Invoker<GreetService>)invoker);
-    }
-
-    private static final StubMethodDescriptor greetMethod = new StubMethodDescriptor("Greet",
-    GreetRequest.class, GreetResponse.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY,
-    obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), GreetRequest::parseFrom,
-    GreetResponse::parseFrom);
-
-    private static final StubMethodDescriptor greetAsyncMethod = new StubMethodDescriptor("Greet",
-    GreetRequest.class, CompletableFuture.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY,
-    obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), GreetRequest::parseFrom,
-    GreetResponse::parseFrom);
-
-    private static final StubMethodDescriptor greetProxyAsyncMethod = new StubMethodDescriptor("GreetAsync",
-    GreetRequest.class, GreetResponse.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY,
-    obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), GreetRequest::parseFrom,
-    GreetResponse::parseFrom);
-
-    private static final StubMethodDescriptor sayHelloMethod = new StubMethodDescriptor("SayHello",
-    SayHelloRequest.class, SayHelloResponse.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY,
-    obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), SayHelloRequest::parseFrom,
-    SayHelloResponse::parseFrom);
-
-    private static final StubMethodDescriptor sayHelloAsyncMethod = new StubMethodDescriptor("SayHello",
-    SayHelloRequest.class, CompletableFuture.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY,
-    obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), SayHelloRequest::parseFrom,
-    SayHelloResponse::parseFrom);
-
-    private static final StubMethodDescriptor sayHelloProxyAsyncMethod = new StubMethodDescriptor("SayHelloAsync",
-    SayHelloRequest.class, SayHelloResponse.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY,
-    obj -> ((Message) obj).toByteArray(), obj -> ((Message) obj).toByteArray(), SayHelloRequest::parseFrom,
-    SayHelloResponse::parseFrom);
-
-
-
-
-
-    public static class GreetServiceStub implements GreetService{
-        private final Invoker<GreetService> invoker;
-
-        public GreetServiceStub(Invoker<GreetService> invoker) {
-            this.invoker = invoker;
-        }
-
-        @Override
-        public GreetResponse greet(GreetRequest request){
-            return StubInvocationUtil.unaryCall(invoker, greetMethod, request);
-        }
-
-        public CompletableFuture<GreetResponse> greetAsync(GreetRequest request){
-            return StubInvocationUtil.unaryCall(invoker, greetAsyncMethod, request);
-        }
-
-        @Override
-        public void greet(GreetRequest request, StreamObserver<GreetResponse> responseObserver){
-            StubInvocationUtil.unaryCall(invoker, greetMethod , request, responseObserver);
-        }
-        @Override
-        public SayHelloResponse sayHello(SayHelloRequest request){
-            return StubInvocationUtil.unaryCall(invoker, sayHelloMethod, request);
-        }
-
-        public CompletableFuture<SayHelloResponse> sayHelloAsync(SayHelloRequest request){
-            return StubInvocationUtil.unaryCall(invoker, sayHelloAsyncMethod, request);
-        }
-
-        @Override
-        public void sayHello(SayHelloRequest request, StreamObserver<SayHelloResponse> responseObserver){
-            StubInvocationUtil.unaryCall(invoker, sayHelloMethod , request, responseObserver);
-        }
-
-
-
-    }
-
-    public static abstract class GreetServiceImplBase implements GreetService, ServerService<GreetService> {
-
-        private <T, R> BiConsumer<T, StreamObserver<R>> syncToAsync(java.util.function.Function<T, R> syncFun) {
-            return new BiConsumer<T, StreamObserver<R>>() {
-                @Override
-                public void accept(T t, StreamObserver<R> observer) {
-                    try {
-                        R ret = syncFun.apply(t);
-                        observer.onNext(ret);
-                        observer.onCompleted();
-                    } catch (Throwable e) {
-                        observer.onError(e);
-                    }
-                }
-            };
-        }
-
-        @Override
-        public final Invoker<GreetService> getInvoker(URL url) {
-            PathResolver pathResolver = url.getOrDefaultFrameworkModel()
-            .getExtensionLoader(PathResolver.class)
-            .getDefaultExtension();
-            Map<String,StubMethodHandler<?, ?>> handlers = new HashMap<>();
-
-            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/Greet" );
-            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/GreetAsync" );
-            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHello" );
-            pathResolver.addNativeStub( "/" + SERVICE_NAME + "/SayHelloAsync" );
-
-            BiConsumer<GreetRequest, StreamObserver<GreetResponse>> greetFunc = this::greet;
-            handlers.put(greetMethod.getMethodName(), new UnaryStubMethodHandler<>(greetFunc));
-            BiConsumer<GreetRequest, StreamObserver<GreetResponse>> greetAsyncFunc = syncToAsync(this::greet);
-            handlers.put(greetProxyAsyncMethod.getMethodName(), new UnaryStubMethodHandler<>(greetAsyncFunc));
-            BiConsumer<SayHelloRequest, StreamObserver<SayHelloResponse>> sayHelloFunc = this::sayHello;
-            handlers.put(sayHelloMethod.getMethodName(), new UnaryStubMethodHandler<>(sayHelloFunc));
-            BiConsumer<SayHelloRequest, StreamObserver<SayHelloResponse>> sayHelloAsyncFunc = syncToAsync(this::sayHello);
-            handlers.put(sayHelloProxyAsyncMethod.getMethodName(), new UnaryStubMethodHandler<>(sayHelloAsyncFunc));
-
-
-
-
-            return new StubInvoker<>(this, url, GreetService.class, handlers);
-        }
-
-
-        @Override
-        public GreetResponse greet(GreetRequest request){
-            throw unimplementedMethodException(greetMethod);
-        }
-
-        @Override
-        public SayHelloResponse sayHello(SayHelloRequest request){
-            throw unimplementedMethodException(sayHelloMethod);
-        }
-
-
-
-
-
-        @Override
-        public final ServiceDescriptor getServiceDescriptor() {
-            return serviceDescriptor;
-        }
-        private RpcException unimplementedMethodException(StubMethodDescriptor methodDescriptor) {
-            return TriRpcStatus.UNIMPLEMENTED.withDescription(String.format("Method %s is unimplemented",
-                "/" + serviceDescriptor.getInterfaceName() + "/" + methodDescriptor.getMethodName())).asException();
-        }
-    }
-
-}
diff --git a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java b/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java
deleted file mode 100644
index e5927b0..0000000
--- a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetProto.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-public final class GreetProto {
-  private GreetProto() {}
-  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_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
-  static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable;
-  static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_org_apache_dubbo_samples_proto_GreetResponse_descriptor;
-  static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_org_apache_dubbo_samples_proto_GreetResponse_fieldAccessorTable;
-  static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_descriptor;
-  static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_fieldAccessorTable;
-  static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_descriptor;
-  static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_fieldAccessorTable;
-
-  public static com.google.protobuf.Descriptors.FileDescriptor
-      getDescriptor() {
-    return descriptor;
-  }
-  private static  com.google.protobuf.Descriptors.FileDescriptor
-      descriptor;
-  static {
-    String[] descriptorData = {
-      "\n\013greet.proto\022\036org.apache.dubbo.samples." +
-      "proto\"\034\n\014GreetRequest\022\014\n\004name\030\001 \001(\t\"!\n\rG" +
-      "reetResponse\022\020\n\010greeting\030\001 \001(\t\"\037\n\017SayHel" +
-      "loRequest\022\014\n\004name\030\001 \001(\t\"!\n\020SayHelloRespo" +
-      "nse\022\r\n\005hello\030\001 \001(\t2\347\001\n\014GreetService\022f\n\005G" +
-      "reet\022,.org.apache.dubbo.samples.proto.Gr" +
-      "eetRequest\032-.org.apache.dubbo.samples.pr" +
-      "oto.GreetResponse\"\000\022o\n\010SayHello\022/.org.ap" +
-      "ache.dubbo.samples.proto.SayHelloRequest" +
-      "\0320.org.apache.dubbo.samples.proto.SayHel" +
-      "loResponse\"\000B4\n\036org.apache.dubbo.samples" +
-      ".protoB\nGreetProtoP\001\242\002\003HLWb\006proto3"
-    };
-    descriptor = com.google.protobuf.Descriptors.FileDescriptor
-      .internalBuildGeneratedFileFrom(descriptorData,
-        new com.google.protobuf.Descriptors.FileDescriptor[] {
-        });
-    internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor =
-      getDescriptor().getMessageTypes().get(0);
-    internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor,
-        new String[] { "Name", });
-    internal_static_org_apache_dubbo_samples_proto_GreetResponse_descriptor =
-      getDescriptor().getMessageTypes().get(1);
-    internal_static_org_apache_dubbo_samples_proto_GreetResponse_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_org_apache_dubbo_samples_proto_GreetResponse_descriptor,
-        new String[] { "Greeting", });
-    internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_descriptor =
-      getDescriptor().getMessageTypes().get(2);
-    internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_descriptor,
-        new String[] { "Name", });
-    internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_descriptor =
-      getDescriptor().getMessageTypes().get(3);
-    internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_descriptor,
-        new String[] { "Hello", });
-  }
-
-  // @@protoc_insertion_point(outer_class_scope)
-}
diff --git a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java b/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
deleted file mode 100644
index 8ac8797..0000000
--- a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
+++ /dev/null
@@ -1,557 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-/**
- * Protobuf type {@code org.apache.dubbo.samples.proto.GreetRequest}
- */
-public final class GreetRequest extends
-    com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.proto.GreetRequest)
-    GreetRequestOrBuilder {
-private static final long serialVersionUID = 0L;
-  // Use GreetRequest.newBuilder() to construct.
-  private GreetRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-    super(builder);
-  }
-  private GreetRequest() {
-    name_ = "";
-  }
-
-  @Override
-  @SuppressWarnings({"unused"})
-  protected Object newInstance(
-      UnusedPrivateParameter unused) {
-    return new GreetRequest();
-  }
-
-  @Override
-  public final com.google.protobuf.UnknownFieldSet
-  getUnknownFields() {
-    return this.unknownFields;
-  }
-  private GreetRequest(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    this();
-    if (extensionRegistry == null) {
-      throw new NullPointerException();
-    }
-    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-        com.google.protobuf.UnknownFieldSet.newBuilder();
-    try {
-      boolean done = false;
-      while (!done) {
-        int tag = input.readTag();
-        switch (tag) {
-          case 0:
-            done = true;
-            break;
-          case 10: {
-            String s = input.readStringRequireUtf8();
-
-            name_ = s;
-            break;
-          }
-          default: {
-            if (!parseUnknownField(
-                input, unknownFields, extensionRegistry, tag)) {
-              done = true;
-            }
-            break;
-          }
-        }
-      }
-    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw e.setUnfinishedMessage(this);
-    } catch (java.io.IOException e) {
-      throw new com.google.protobuf.InvalidProtocolBufferException(
-          e).setUnfinishedMessage(this);
-    } finally {
-      this.unknownFields = unknownFields.build();
-      makeExtensionsImmutable();
-    }
-  }
-  public static final com.google.protobuf.Descriptors.Descriptor
-      getDescriptor() {
-    return GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
-  }
-
-  @Override
-  protected FieldAccessorTable
-      internalGetFieldAccessorTable() {
-    return GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable
-        .ensureFieldAccessorsInitialized(
-            GreetRequest.class, Builder.class);
-  }
-
-  public static final int NAME_FIELD_NUMBER = 1;
-  private volatile Object name_;
-  /**
-   * <code>string name = 1;</code>
-   * @return The name.
-   */
-  @Override
-  public String getName() {
-    Object ref = name_;
-    if (ref instanceof String) {
-      return (String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      String s = bs.toStringUtf8();
-      name_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string name = 1;</code>
-   * @return The bytes for name.
-   */
-  @Override
-  public com.google.protobuf.ByteString
-      getNameBytes() {
-    Object ref = name_;
-    if (ref instanceof String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (String) ref);
-      name_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
-    }
-  }
-
-  private byte memoizedIsInitialized = -1;
-  @Override
-  public final boolean isInitialized() {
-    byte isInitialized = memoizedIsInitialized;
-    if (isInitialized == 1) return true;
-    if (isInitialized == 0) return false;
-
-    memoizedIsInitialized = 1;
-    return true;
-  }
-
-  @Override
-  public void writeTo(com.google.protobuf.CodedOutputStream output)
-                      throws java.io.IOException {
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
-    }
-    unknownFields.writeTo(output);
-  }
-
-  @Override
-  public int getSerializedSize() {
-    int size = memoizedSize;
-    if (size != -1) return size;
-
-    size = 0;
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
-    }
-    size += unknownFields.getSerializedSize();
-    memoizedSize = size;
-    return size;
-  }
-
-  @Override
-  public boolean equals(final Object obj) {
-    if (obj == this) {
-     return true;
-    }
-    if (!(obj instanceof GreetRequest)) {
-      return super.equals(obj);
-    }
-    GreetRequest other = (GreetRequest) obj;
-
-    if (!getName()
-        .equals(other.getName())) return false;
-    if (!unknownFields.equals(other.unknownFields)) return false;
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    if (memoizedHashCode != 0) {
-      return memoizedHashCode;
-    }
-    int hash = 41;
-    hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + NAME_FIELD_NUMBER;
-    hash = (53 * hash) + getName().hashCode();
-    hash = (29 * hash) + unknownFields.hashCode();
-    memoizedHashCode = hash;
-    return hash;
-  }
-
-  public static GreetRequest parseFrom(
-      java.nio.ByteBuffer data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static GreetRequest parseFrom(
-      java.nio.ByteBuffer data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static GreetRequest parseFrom(
-      com.google.protobuf.ByteString data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static GreetRequest parseFrom(
-      com.google.protobuf.ByteString data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static GreetRequest parseFrom(byte[] data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static GreetRequest parseFrom(
-      byte[] data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static GreetRequest parseFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static GreetRequest 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 GreetRequest parseDelimitedFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseDelimitedWithIOException(PARSER, input);
-  }
-  public static GreetRequest 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 GreetRequest parseFrom(
-      com.google.protobuf.CodedInputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static GreetRequest parseFrom(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input, extensionRegistry);
-  }
-
-  @Override
-  public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return DEFAULT_INSTANCE.toBuilder();
-  }
-  public static Builder newBuilder(GreetRequest prototype) {
-    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-  }
-  @Override
-  public Builder toBuilder() {
-    return this == DEFAULT_INSTANCE
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
-
-  @Override
-  protected Builder newBuilderForType(
-      BuilderParent parent) {
-    Builder builder = new Builder(parent);
-    return builder;
-  }
-  /**
-   * Protobuf type {@code org.apache.dubbo.samples.proto.GreetRequest}
-   */
-  public static final class Builder extends
-      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.proto.GreetRequest)
-      GreetRequestOrBuilder {
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
-    }
-
-    @Override
-    protected FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              GreetRequest.class, Builder.class);
-    }
-
-    // Construct using org.apache.dubbo.samples.proto.GreetRequest.newBuilder()
-    private Builder() {
-      maybeForceBuilderInitialization();
-    }
-
-    private Builder(
-        BuilderParent parent) {
-      super(parent);
-      maybeForceBuilderInitialization();
-    }
-    private void maybeForceBuilderInitialization() {
-      if (com.google.protobuf.GeneratedMessageV3
-              .alwaysUseFieldBuilders) {
-      }
-    }
-    @Override
-    public Builder clear() {
-      super.clear();
-      name_ = "";
-
-      return this;
-    }
-
-    @Override
-    public com.google.protobuf.Descriptors.Descriptor
-        getDescriptorForType() {
-      return GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetRequest_descriptor;
-    }
-
-    @Override
-    public GreetRequest getDefaultInstanceForType() {
-      return GreetRequest.getDefaultInstance();
-    }
-
-    @Override
-    public GreetRequest build() {
-      GreetRequest result = buildPartial();
-      if (!result.isInitialized()) {
-        throw newUninitializedMessageException(result);
-      }
-      return result;
-    }
-
-    @Override
-    public GreetRequest buildPartial() {
-      GreetRequest result = new GreetRequest(this);
-      result.name_ = name_;
-      onBuilt();
-      return result;
-    }
-
-    @Override
-    public Builder clone() {
-      return super.clone();
-    }
-    @Override
-    public Builder setField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        Object value) {
-      return super.setField(field, value);
-    }
-    @Override
-    public Builder clearField(
-        com.google.protobuf.Descriptors.FieldDescriptor field) {
-      return super.clearField(field);
-    }
-    @Override
-    public Builder clearOneof(
-        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-      return super.clearOneof(oneof);
-    }
-    @Override
-    public Builder setRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        int index, Object value) {
-      return super.setRepeatedField(field, index, value);
-    }
-    @Override
-    public Builder addRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        Object value) {
-      return super.addRepeatedField(field, value);
-    }
-    @Override
-    public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof GreetRequest) {
-        return mergeFrom((GreetRequest)other);
-      } else {
-        super.mergeFrom(other);
-        return this;
-      }
-    }
-
-    public Builder mergeFrom(GreetRequest other) {
-      if (other == GreetRequest.getDefaultInstance()) return this;
-      if (!other.getName().isEmpty()) {
-        name_ = other.name_;
-        onChanged();
-      }
-      this.mergeUnknownFields(other.unknownFields);
-      onChanged();
-      return this;
-    }
-
-    @Override
-    public final boolean isInitialized() {
-      return true;
-    }
-
-    @Override
-    public Builder mergeFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      GreetRequest parsedMessage = null;
-      try {
-        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (GreetRequest) e.getUnfinishedMessage();
-        throw e.unwrapIOException();
-      } finally {
-        if (parsedMessage != null) {
-          mergeFrom(parsedMessage);
-        }
-      }
-      return this;
-    }
-
-    private Object name_ = "";
-    /**
-     * <code>string name = 1;</code>
-     * @return The name.
-     */
-    public String getName() {
-      Object ref = name_;
-      if (!(ref instanceof String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        String s = bs.toStringUtf8();
-        name_ = s;
-        return s;
-      } else {
-        return (String) ref;
-      }
-    }
-    /**
-     * <code>string name = 1;</code>
-     * @return The bytes for name.
-     */
-    public com.google.protobuf.ByteString
-        getNameBytes() {
-      Object ref = name_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (String) ref);
-        name_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-    /**
-     * <code>string name = 1;</code>
-     * @param value The name to set.
-     * @return This builder for chaining.
-     */
-    public Builder setName(
-        String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      name_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string name = 1;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearName() {
-      
-      name_ = getDefaultInstance().getName();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string name = 1;</code>
-     * @param value The bytes for name to set.
-     * @return This builder for chaining.
-     */
-    public Builder setNameBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      name_ = value;
-      onChanged();
-      return this;
-    }
-    @Override
-    public final Builder setUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.setUnknownFields(unknownFields);
-    }
-
-    @Override
-    public final Builder mergeUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.mergeUnknownFields(unknownFields);
-    }
-
-
-    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.proto.GreetRequest)
-  }
-
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.proto.GreetRequest)
-  private static final GreetRequest DEFAULT_INSTANCE;
-  static {
-    DEFAULT_INSTANCE = new GreetRequest();
-  }
-
-  public static GreetRequest getDefaultInstance() {
-    return DEFAULT_INSTANCE;
-  }
-
-  private static final com.google.protobuf.Parser<GreetRequest>
-      PARSER = new com.google.protobuf.AbstractParser<GreetRequest>() {
-    @Override
-    public GreetRequest parsePartialFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return new GreetRequest(input, extensionRegistry);
-    }
-  };
-
-  public static com.google.protobuf.Parser<GreetRequest> parser() {
-    return PARSER;
-  }
-
-  @Override
-  public com.google.protobuf.Parser<GreetRequest> getParserForType() {
-    return PARSER;
-  }
-
-  @Override
-  public GreetRequest getDefaultInstanceForType() {
-    return DEFAULT_INSTANCE;
-  }
-
-}
-
diff --git a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java b/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
deleted file mode 100644
index 584d4a9..0000000
--- a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-public interface GreetRequestOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.GreetRequest)
-    com.google.protobuf.MessageOrBuilder {
-
-  /**
-   * <code>string name = 1;</code>
-   * @return The name.
-   */
-  String getName();
-  /**
-   * <code>string name = 1;</code>
-   * @return The bytes for name.
-   */
-  com.google.protobuf.ByteString
-      getNameBytes();
-}
diff --git a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java b/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java
deleted file mode 100644
index b412626..0000000
--- a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponse.java
+++ /dev/null
@@ -1,557 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-/**
- * Protobuf type {@code org.apache.dubbo.samples.proto.GreetResponse}
- */
-public final class GreetResponse extends
-    com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.proto.GreetResponse)
-    GreetResponseOrBuilder {
-private static final long serialVersionUID = 0L;
-  // Use GreetResponse.newBuilder() to construct.
-  private GreetResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-    super(builder);
-  }
-  private GreetResponse() {
-    greeting_ = "";
-  }
-
-  @Override
-  @SuppressWarnings({"unused"})
-  protected Object newInstance(
-      UnusedPrivateParameter unused) {
-    return new GreetResponse();
-  }
-
-  @Override
-  public final com.google.protobuf.UnknownFieldSet
-  getUnknownFields() {
-    return this.unknownFields;
-  }
-  private GreetResponse(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    this();
-    if (extensionRegistry == null) {
-      throw new NullPointerException();
-    }
-    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-        com.google.protobuf.UnknownFieldSet.newBuilder();
-    try {
-      boolean done = false;
-      while (!done) {
-        int tag = input.readTag();
-        switch (tag) {
-          case 0:
-            done = true;
-            break;
-          case 10: {
-            String s = input.readStringRequireUtf8();
-
-            greeting_ = s;
-            break;
-          }
-          default: {
-            if (!parseUnknownField(
-                input, unknownFields, extensionRegistry, tag)) {
-              done = true;
-            }
-            break;
-          }
-        }
-      }
-    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw e.setUnfinishedMessage(this);
-    } catch (java.io.IOException e) {
-      throw new com.google.protobuf.InvalidProtocolBufferException(
-          e).setUnfinishedMessage(this);
-    } finally {
-      this.unknownFields = unknownFields.build();
-      makeExtensionsImmutable();
-    }
-  }
-  public static final com.google.protobuf.Descriptors.Descriptor
-      getDescriptor() {
-    return GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetResponse_descriptor;
-  }
-
-  @Override
-  protected FieldAccessorTable
-      internalGetFieldAccessorTable() {
-    return GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetResponse_fieldAccessorTable
-        .ensureFieldAccessorsInitialized(
-            GreetResponse.class, Builder.class);
-  }
-
-  public static final int GREETING_FIELD_NUMBER = 1;
-  private volatile Object greeting_;
-  /**
-   * <code>string greeting = 1;</code>
-   * @return The greeting.
-   */
-  @Override
-  public String getGreeting() {
-    Object ref = greeting_;
-    if (ref instanceof String) {
-      return (String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      String s = bs.toStringUtf8();
-      greeting_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string greeting = 1;</code>
-   * @return The bytes for greeting.
-   */
-  @Override
-  public com.google.protobuf.ByteString
-      getGreetingBytes() {
-    Object ref = greeting_;
-    if (ref instanceof String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (String) ref);
-      greeting_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
-    }
-  }
-
-  private byte memoizedIsInitialized = -1;
-  @Override
-  public final boolean isInitialized() {
-    byte isInitialized = memoizedIsInitialized;
-    if (isInitialized == 1) return true;
-    if (isInitialized == 0) return false;
-
-    memoizedIsInitialized = 1;
-    return true;
-  }
-
-  @Override
-  public void writeTo(com.google.protobuf.CodedOutputStream output)
-                      throws java.io.IOException {
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(greeting_)) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, greeting_);
-    }
-    unknownFields.writeTo(output);
-  }
-
-  @Override
-  public int getSerializedSize() {
-    int size = memoizedSize;
-    if (size != -1) return size;
-
-    size = 0;
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(greeting_)) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, greeting_);
-    }
-    size += unknownFields.getSerializedSize();
-    memoizedSize = size;
-    return size;
-  }
-
-  @Override
-  public boolean equals(final Object obj) {
-    if (obj == this) {
-     return true;
-    }
-    if (!(obj instanceof GreetResponse)) {
-      return super.equals(obj);
-    }
-    GreetResponse other = (GreetResponse) obj;
-
-    if (!getGreeting()
-        .equals(other.getGreeting())) return false;
-    if (!unknownFields.equals(other.unknownFields)) return false;
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    if (memoizedHashCode != 0) {
-      return memoizedHashCode;
-    }
-    int hash = 41;
-    hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + GREETING_FIELD_NUMBER;
-    hash = (53 * hash) + getGreeting().hashCode();
-    hash = (29 * hash) + unknownFields.hashCode();
-    memoizedHashCode = hash;
-    return hash;
-  }
-
-  public static GreetResponse parseFrom(
-      java.nio.ByteBuffer data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static GreetResponse parseFrom(
-      java.nio.ByteBuffer data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static GreetResponse parseFrom(
-      com.google.protobuf.ByteString data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static GreetResponse parseFrom(
-      com.google.protobuf.ByteString data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static GreetResponse parseFrom(byte[] data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static GreetResponse parseFrom(
-      byte[] data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static GreetResponse parseFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static GreetResponse 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 GreetResponse parseDelimitedFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseDelimitedWithIOException(PARSER, input);
-  }
-  public static GreetResponse 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 GreetResponse parseFrom(
-      com.google.protobuf.CodedInputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static GreetResponse parseFrom(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input, extensionRegistry);
-  }
-
-  @Override
-  public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return DEFAULT_INSTANCE.toBuilder();
-  }
-  public static Builder newBuilder(GreetResponse prototype) {
-    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-  }
-  @Override
-  public Builder toBuilder() {
-    return this == DEFAULT_INSTANCE
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
-
-  @Override
-  protected Builder newBuilderForType(
-      BuilderParent parent) {
-    Builder builder = new Builder(parent);
-    return builder;
-  }
-  /**
-   * Protobuf type {@code org.apache.dubbo.samples.proto.GreetResponse}
-   */
-  public static final class Builder extends
-      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.proto.GreetResponse)
-      GreetResponseOrBuilder {
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetResponse_descriptor;
-    }
-
-    @Override
-    protected FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetResponse_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              GreetResponse.class, Builder.class);
-    }
-
-    // Construct using org.apache.dubbo.samples.proto.GreetResponse.newBuilder()
-    private Builder() {
-      maybeForceBuilderInitialization();
-    }
-
-    private Builder(
-        BuilderParent parent) {
-      super(parent);
-      maybeForceBuilderInitialization();
-    }
-    private void maybeForceBuilderInitialization() {
-      if (com.google.protobuf.GeneratedMessageV3
-              .alwaysUseFieldBuilders) {
-      }
-    }
-    @Override
-    public Builder clear() {
-      super.clear();
-      greeting_ = "";
-
-      return this;
-    }
-
-    @Override
-    public com.google.protobuf.Descriptors.Descriptor
-        getDescriptorForType() {
-      return GreetProto.internal_static_org_apache_dubbo_samples_proto_GreetResponse_descriptor;
-    }
-
-    @Override
-    public GreetResponse getDefaultInstanceForType() {
-      return GreetResponse.getDefaultInstance();
-    }
-
-    @Override
-    public GreetResponse build() {
-      GreetResponse result = buildPartial();
-      if (!result.isInitialized()) {
-        throw newUninitializedMessageException(result);
-      }
-      return result;
-    }
-
-    @Override
-    public GreetResponse buildPartial() {
-      GreetResponse result = new GreetResponse(this);
-      result.greeting_ = greeting_;
-      onBuilt();
-      return result;
-    }
-
-    @Override
-    public Builder clone() {
-      return super.clone();
-    }
-    @Override
-    public Builder setField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        Object value) {
-      return super.setField(field, value);
-    }
-    @Override
-    public Builder clearField(
-        com.google.protobuf.Descriptors.FieldDescriptor field) {
-      return super.clearField(field);
-    }
-    @Override
-    public Builder clearOneof(
-        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-      return super.clearOneof(oneof);
-    }
-    @Override
-    public Builder setRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        int index, Object value) {
-      return super.setRepeatedField(field, index, value);
-    }
-    @Override
-    public Builder addRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        Object value) {
-      return super.addRepeatedField(field, value);
-    }
-    @Override
-    public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof GreetResponse) {
-        return mergeFrom((GreetResponse)other);
-      } else {
-        super.mergeFrom(other);
-        return this;
-      }
-    }
-
-    public Builder mergeFrom(GreetResponse other) {
-      if (other == GreetResponse.getDefaultInstance()) return this;
-      if (!other.getGreeting().isEmpty()) {
-        greeting_ = other.greeting_;
-        onChanged();
-      }
-      this.mergeUnknownFields(other.unknownFields);
-      onChanged();
-      return this;
-    }
-
-    @Override
-    public final boolean isInitialized() {
-      return true;
-    }
-
-    @Override
-    public Builder mergeFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      GreetResponse parsedMessage = null;
-      try {
-        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (GreetResponse) e.getUnfinishedMessage();
-        throw e.unwrapIOException();
-      } finally {
-        if (parsedMessage != null) {
-          mergeFrom(parsedMessage);
-        }
-      }
-      return this;
-    }
-
-    private Object greeting_ = "";
-    /**
-     * <code>string greeting = 1;</code>
-     * @return The greeting.
-     */
-    public String getGreeting() {
-      Object ref = greeting_;
-      if (!(ref instanceof String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        String s = bs.toStringUtf8();
-        greeting_ = s;
-        return s;
-      } else {
-        return (String) ref;
-      }
-    }
-    /**
-     * <code>string greeting = 1;</code>
-     * @return The bytes for greeting.
-     */
-    public com.google.protobuf.ByteString
-        getGreetingBytes() {
-      Object ref = greeting_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (String) ref);
-        greeting_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-    /**
-     * <code>string greeting = 1;</code>
-     * @param value The greeting to set.
-     * @return This builder for chaining.
-     */
-    public Builder setGreeting(
-        String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      greeting_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string greeting = 1;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearGreeting() {
-      
-      greeting_ = getDefaultInstance().getGreeting();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string greeting = 1;</code>
-     * @param value The bytes for greeting to set.
-     * @return This builder for chaining.
-     */
-    public Builder setGreetingBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      greeting_ = value;
-      onChanged();
-      return this;
-    }
-    @Override
-    public final Builder setUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.setUnknownFields(unknownFields);
-    }
-
-    @Override
-    public final Builder mergeUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.mergeUnknownFields(unknownFields);
-    }
-
-
-    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.proto.GreetResponse)
-  }
-
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.proto.GreetResponse)
-  private static final GreetResponse DEFAULT_INSTANCE;
-  static {
-    DEFAULT_INSTANCE = new GreetResponse();
-  }
-
-  public static GreetResponse getDefaultInstance() {
-    return DEFAULT_INSTANCE;
-  }
-
-  private static final com.google.protobuf.Parser<GreetResponse>
-      PARSER = new com.google.protobuf.AbstractParser<GreetResponse>() {
-    @Override
-    public GreetResponse parsePartialFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return new GreetResponse(input, extensionRegistry);
-    }
-  };
-
-  public static com.google.protobuf.Parser<GreetResponse> parser() {
-    return PARSER;
-  }
-
-  @Override
-  public com.google.protobuf.Parser<GreetResponse> getParserForType() {
-    return PARSER;
-  }
-
-  @Override
-  public GreetResponse getDefaultInstanceForType() {
-    return DEFAULT_INSTANCE;
-  }
-
-}
-
diff --git a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java b/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
deleted file mode 100644
index 9684baa..0000000
--- a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetResponseOrBuilder.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-public interface GreetResponseOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.GreetResponse)
-    com.google.protobuf.MessageOrBuilder {
-
-  /**
-   * <code>string greeting = 1;</code>
-   * @return The greeting.
-   */
-  String getGreeting();
-  /**
-   * <code>string greeting = 1;</code>
-   * @return The bytes for greeting.
-   */
-  com.google.protobuf.ByteString
-      getGreetingBytes();
-}
diff --git a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetService.java b/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetService.java
deleted file mode 100644
index bc53a73..0000000
--- a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/GreetService.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-    package org.apache.dubbo.samples.proto;
-
-import org.apache.dubbo.common.stream.StreamObserver;
-
-import java.util.concurrent.CompletableFuture;
-
-public interface GreetService extends org.apache.dubbo.rpc.model.DubboStub {
-
-    String JAVA_SERVICE_NAME = "org.apache.dubbo.samples.proto.GreetService";
-    String SERVICE_NAME = "org.apache.dubbo.samples.proto.GreetService";
-
-    GreetResponse greet(GreetRequest request);
-
-    default CompletableFuture<GreetResponse> greetAsync(GreetRequest request){
-        return CompletableFuture.completedFuture(greet(request));
-    }
-
-    /**
-    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
-    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
-    */
-    default void greet(GreetRequest request, StreamObserver<GreetResponse> responseObserver){
-        greetAsync(request).whenComplete((r, t) -> {
-            if (t != null) {
-                responseObserver.onError(t);
-            } else {
-                responseObserver.onNext(r);
-                responseObserver.onCompleted();
-            }
-        });
-    }
-
-    SayHelloResponse sayHello(SayHelloRequest request);
-
-    default CompletableFuture<SayHelloResponse> sayHelloAsync(SayHelloRequest request){
-        return CompletableFuture.completedFuture(sayHello(request));
-    }
-
-    /**
-    * This server stream type unary method is <b>only</b> used for generated stub to support async unary method.
-    * It will not be called if you are NOT using Dubbo3 generated triple stub and <b>DO NOT</b> implement this method.
-    */
-    default void sayHello(SayHelloRequest request, StreamObserver<SayHelloResponse> responseObserver){
-        sayHelloAsync(request).whenComplete((r, t) -> {
-            if (t != null) {
-                responseObserver.onError(t);
-            } else {
-                responseObserver.onNext(r);
-                responseObserver.onCompleted();
-            }
-        });
-    }
-
-
-
-
-
-
-}
diff --git a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java b/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
deleted file mode 100644
index 914c628..0000000
--- a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequest.java
+++ /dev/null
@@ -1,557 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-/**
- * Protobuf type {@code org.apache.dubbo.samples.proto.SayHelloRequest}
- */
-public final class SayHelloRequest extends
-    com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.proto.SayHelloRequest)
-    SayHelloRequestOrBuilder {
-private static final long serialVersionUID = 0L;
-  // Use SayHelloRequest.newBuilder() to construct.
-  private SayHelloRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-    super(builder);
-  }
-  private SayHelloRequest() {
-    name_ = "";
-  }
-
-  @Override
-  @SuppressWarnings({"unused"})
-  protected Object newInstance(
-      UnusedPrivateParameter unused) {
-    return new SayHelloRequest();
-  }
-
-  @Override
-  public final com.google.protobuf.UnknownFieldSet
-  getUnknownFields() {
-    return this.unknownFields;
-  }
-  private SayHelloRequest(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    this();
-    if (extensionRegistry == null) {
-      throw new NullPointerException();
-    }
-    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-        com.google.protobuf.UnknownFieldSet.newBuilder();
-    try {
-      boolean done = false;
-      while (!done) {
-        int tag = input.readTag();
-        switch (tag) {
-          case 0:
-            done = true;
-            break;
-          case 10: {
-            String s = input.readStringRequireUtf8();
-
-            name_ = s;
-            break;
-          }
-          default: {
-            if (!parseUnknownField(
-                input, unknownFields, extensionRegistry, tag)) {
-              done = true;
-            }
-            break;
-          }
-        }
-      }
-    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw e.setUnfinishedMessage(this);
-    } catch (java.io.IOException e) {
-      throw new com.google.protobuf.InvalidProtocolBufferException(
-          e).setUnfinishedMessage(this);
-    } finally {
-      this.unknownFields = unknownFields.build();
-      makeExtensionsImmutable();
-    }
-  }
-  public static final com.google.protobuf.Descriptors.Descriptor
-      getDescriptor() {
-    return GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_descriptor;
-  }
-
-  @Override
-  protected FieldAccessorTable
-      internalGetFieldAccessorTable() {
-    return GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_fieldAccessorTable
-        .ensureFieldAccessorsInitialized(
-            SayHelloRequest.class, Builder.class);
-  }
-
-  public static final int NAME_FIELD_NUMBER = 1;
-  private volatile Object name_;
-  /**
-   * <code>string name = 1;</code>
-   * @return The name.
-   */
-  @Override
-  public String getName() {
-    Object ref = name_;
-    if (ref instanceof String) {
-      return (String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      String s = bs.toStringUtf8();
-      name_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string name = 1;</code>
-   * @return The bytes for name.
-   */
-  @Override
-  public com.google.protobuf.ByteString
-      getNameBytes() {
-    Object ref = name_;
-    if (ref instanceof String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (String) ref);
-      name_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
-    }
-  }
-
-  private byte memoizedIsInitialized = -1;
-  @Override
-  public final boolean isInitialized() {
-    byte isInitialized = memoizedIsInitialized;
-    if (isInitialized == 1) return true;
-    if (isInitialized == 0) return false;
-
-    memoizedIsInitialized = 1;
-    return true;
-  }
-
-  @Override
-  public void writeTo(com.google.protobuf.CodedOutputStream output)
-                      throws java.io.IOException {
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
-    }
-    unknownFields.writeTo(output);
-  }
-
-  @Override
-  public int getSerializedSize() {
-    int size = memoizedSize;
-    if (size != -1) return size;
-
-    size = 0;
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
-    }
-    size += unknownFields.getSerializedSize();
-    memoizedSize = size;
-    return size;
-  }
-
-  @Override
-  public boolean equals(final Object obj) {
-    if (obj == this) {
-     return true;
-    }
-    if (!(obj instanceof SayHelloRequest)) {
-      return super.equals(obj);
-    }
-    SayHelloRequest other = (SayHelloRequest) obj;
-
-    if (!getName()
-        .equals(other.getName())) return false;
-    if (!unknownFields.equals(other.unknownFields)) return false;
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    if (memoizedHashCode != 0) {
-      return memoizedHashCode;
-    }
-    int hash = 41;
-    hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + NAME_FIELD_NUMBER;
-    hash = (53 * hash) + getName().hashCode();
-    hash = (29 * hash) + unknownFields.hashCode();
-    memoizedHashCode = hash;
-    return hash;
-  }
-
-  public static SayHelloRequest parseFrom(
-      java.nio.ByteBuffer data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static SayHelloRequest parseFrom(
-      java.nio.ByteBuffer data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static SayHelloRequest parseFrom(
-      com.google.protobuf.ByteString data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static SayHelloRequest parseFrom(
-      com.google.protobuf.ByteString data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static SayHelloRequest parseFrom(byte[] data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static SayHelloRequest parseFrom(
-      byte[] data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static SayHelloRequest parseFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static SayHelloRequest 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 SayHelloRequest parseDelimitedFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseDelimitedWithIOException(PARSER, input);
-  }
-  public static SayHelloRequest 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 SayHelloRequest parseFrom(
-      com.google.protobuf.CodedInputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static SayHelloRequest parseFrom(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input, extensionRegistry);
-  }
-
-  @Override
-  public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return DEFAULT_INSTANCE.toBuilder();
-  }
-  public static Builder newBuilder(SayHelloRequest prototype) {
-    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-  }
-  @Override
-  public Builder toBuilder() {
-    return this == DEFAULT_INSTANCE
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
-
-  @Override
-  protected Builder newBuilderForType(
-      BuilderParent parent) {
-    Builder builder = new Builder(parent);
-    return builder;
-  }
-  /**
-   * Protobuf type {@code org.apache.dubbo.samples.proto.SayHelloRequest}
-   */
-  public static final class Builder extends
-      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.proto.SayHelloRequest)
-      SayHelloRequestOrBuilder {
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_descriptor;
-    }
-
-    @Override
-    protected FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              SayHelloRequest.class, Builder.class);
-    }
-
-    // Construct using org.apache.dubbo.samples.proto.SayHelloRequest.newBuilder()
-    private Builder() {
-      maybeForceBuilderInitialization();
-    }
-
-    private Builder(
-        BuilderParent parent) {
-      super(parent);
-      maybeForceBuilderInitialization();
-    }
-    private void maybeForceBuilderInitialization() {
-      if (com.google.protobuf.GeneratedMessageV3
-              .alwaysUseFieldBuilders) {
-      }
-    }
-    @Override
-    public Builder clear() {
-      super.clear();
-      name_ = "";
-
-      return this;
-    }
-
-    @Override
-    public com.google.protobuf.Descriptors.Descriptor
-        getDescriptorForType() {
-      return GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloRequest_descriptor;
-    }
-
-    @Override
-    public SayHelloRequest getDefaultInstanceForType() {
-      return SayHelloRequest.getDefaultInstance();
-    }
-
-    @Override
-    public SayHelloRequest build() {
-      SayHelloRequest result = buildPartial();
-      if (!result.isInitialized()) {
-        throw newUninitializedMessageException(result);
-      }
-      return result;
-    }
-
-    @Override
-    public SayHelloRequest buildPartial() {
-      SayHelloRequest result = new SayHelloRequest(this);
-      result.name_ = name_;
-      onBuilt();
-      return result;
-    }
-
-    @Override
-    public Builder clone() {
-      return super.clone();
-    }
-    @Override
-    public Builder setField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        Object value) {
-      return super.setField(field, value);
-    }
-    @Override
-    public Builder clearField(
-        com.google.protobuf.Descriptors.FieldDescriptor field) {
-      return super.clearField(field);
-    }
-    @Override
-    public Builder clearOneof(
-        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-      return super.clearOneof(oneof);
-    }
-    @Override
-    public Builder setRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        int index, Object value) {
-      return super.setRepeatedField(field, index, value);
-    }
-    @Override
-    public Builder addRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        Object value) {
-      return super.addRepeatedField(field, value);
-    }
-    @Override
-    public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof SayHelloRequest) {
-        return mergeFrom((SayHelloRequest)other);
-      } else {
-        super.mergeFrom(other);
-        return this;
-      }
-    }
-
-    public Builder mergeFrom(SayHelloRequest other) {
-      if (other == SayHelloRequest.getDefaultInstance()) return this;
-      if (!other.getName().isEmpty()) {
-        name_ = other.name_;
-        onChanged();
-      }
-      this.mergeUnknownFields(other.unknownFields);
-      onChanged();
-      return this;
-    }
-
-    @Override
-    public final boolean isInitialized() {
-      return true;
-    }
-
-    @Override
-    public Builder mergeFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      SayHelloRequest parsedMessage = null;
-      try {
-        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (SayHelloRequest) e.getUnfinishedMessage();
-        throw e.unwrapIOException();
-      } finally {
-        if (parsedMessage != null) {
-          mergeFrom(parsedMessage);
-        }
-      }
-      return this;
-    }
-
-    private Object name_ = "";
-    /**
-     * <code>string name = 1;</code>
-     * @return The name.
-     */
-    public String getName() {
-      Object ref = name_;
-      if (!(ref instanceof String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        String s = bs.toStringUtf8();
-        name_ = s;
-        return s;
-      } else {
-        return (String) ref;
-      }
-    }
-    /**
-     * <code>string name = 1;</code>
-     * @return The bytes for name.
-     */
-    public com.google.protobuf.ByteString
-        getNameBytes() {
-      Object ref = name_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (String) ref);
-        name_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-    /**
-     * <code>string name = 1;</code>
-     * @param value The name to set.
-     * @return This builder for chaining.
-     */
-    public Builder setName(
-        String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      name_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string name = 1;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearName() {
-      
-      name_ = getDefaultInstance().getName();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string name = 1;</code>
-     * @param value The bytes for name to set.
-     * @return This builder for chaining.
-     */
-    public Builder setNameBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      name_ = value;
-      onChanged();
-      return this;
-    }
-    @Override
-    public final Builder setUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.setUnknownFields(unknownFields);
-    }
-
-    @Override
-    public final Builder mergeUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.mergeUnknownFields(unknownFields);
-    }
-
-
-    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.proto.SayHelloRequest)
-  }
-
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.proto.SayHelloRequest)
-  private static final SayHelloRequest DEFAULT_INSTANCE;
-  static {
-    DEFAULT_INSTANCE = new SayHelloRequest();
-  }
-
-  public static SayHelloRequest getDefaultInstance() {
-    return DEFAULT_INSTANCE;
-  }
-
-  private static final com.google.protobuf.Parser<SayHelloRequest>
-      PARSER = new com.google.protobuf.AbstractParser<SayHelloRequest>() {
-    @Override
-    public SayHelloRequest parsePartialFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return new SayHelloRequest(input, extensionRegistry);
-    }
-  };
-
-  public static com.google.protobuf.Parser<SayHelloRequest> parser() {
-    return PARSER;
-  }
-
-  @Override
-  public com.google.protobuf.Parser<SayHelloRequest> getParserForType() {
-    return PARSER;
-  }
-
-  @Override
-  public SayHelloRequest getDefaultInstanceForType() {
-    return DEFAULT_INSTANCE;
-  }
-
-}
-
diff --git a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java b/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
deleted file mode 100644
index 295032b..0000000
--- a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloRequestOrBuilder.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-public interface SayHelloRequestOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.SayHelloRequest)
-    com.google.protobuf.MessageOrBuilder {
-
-  /**
-   * <code>string name = 1;</code>
-   * @return The name.
-   */
-  String getName();
-  /**
-   * <code>string name = 1;</code>
-   * @return The bytes for name.
-   */
-  com.google.protobuf.ByteString
-      getNameBytes();
-}
diff --git a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java b/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
deleted file mode 100644
index b331f54..0000000
--- a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponse.java
+++ /dev/null
@@ -1,557 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-/**
- * Protobuf type {@code org.apache.dubbo.samples.proto.SayHelloResponse}
- */
-public final class SayHelloResponse extends
-    com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.proto.SayHelloResponse)
-    SayHelloResponseOrBuilder {
-private static final long serialVersionUID = 0L;
-  // Use SayHelloResponse.newBuilder() to construct.
-  private SayHelloResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
-    super(builder);
-  }
-  private SayHelloResponse() {
-    hello_ = "";
-  }
-
-  @Override
-  @SuppressWarnings({"unused"})
-  protected Object newInstance(
-      UnusedPrivateParameter unused) {
-    return new SayHelloResponse();
-  }
-
-  @Override
-  public final com.google.protobuf.UnknownFieldSet
-  getUnknownFields() {
-    return this.unknownFields;
-  }
-  private SayHelloResponse(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    this();
-    if (extensionRegistry == null) {
-      throw new NullPointerException();
-    }
-    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-        com.google.protobuf.UnknownFieldSet.newBuilder();
-    try {
-      boolean done = false;
-      while (!done) {
-        int tag = input.readTag();
-        switch (tag) {
-          case 0:
-            done = true;
-            break;
-          case 10: {
-            String s = input.readStringRequireUtf8();
-
-            hello_ = s;
-            break;
-          }
-          default: {
-            if (!parseUnknownField(
-                input, unknownFields, extensionRegistry, tag)) {
-              done = true;
-            }
-            break;
-          }
-        }
-      }
-    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-      throw e.setUnfinishedMessage(this);
-    } catch (java.io.IOException e) {
-      throw new com.google.protobuf.InvalidProtocolBufferException(
-          e).setUnfinishedMessage(this);
-    } finally {
-      this.unknownFields = unknownFields.build();
-      makeExtensionsImmutable();
-    }
-  }
-  public static final com.google.protobuf.Descriptors.Descriptor
-      getDescriptor() {
-    return GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_descriptor;
-  }
-
-  @Override
-  protected FieldAccessorTable
-      internalGetFieldAccessorTable() {
-    return GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_fieldAccessorTable
-        .ensureFieldAccessorsInitialized(
-            SayHelloResponse.class, Builder.class);
-  }
-
-  public static final int HELLO_FIELD_NUMBER = 1;
-  private volatile Object hello_;
-  /**
-   * <code>string hello = 1;</code>
-   * @return The hello.
-   */
-  @Override
-  public String getHello() {
-    Object ref = hello_;
-    if (ref instanceof String) {
-      return (String) ref;
-    } else {
-      com.google.protobuf.ByteString bs = 
-          (com.google.protobuf.ByteString) ref;
-      String s = bs.toStringUtf8();
-      hello_ = s;
-      return s;
-    }
-  }
-  /**
-   * <code>string hello = 1;</code>
-   * @return The bytes for hello.
-   */
-  @Override
-  public com.google.protobuf.ByteString
-      getHelloBytes() {
-    Object ref = hello_;
-    if (ref instanceof String) {
-      com.google.protobuf.ByteString b = 
-          com.google.protobuf.ByteString.copyFromUtf8(
-              (String) ref);
-      hello_ = b;
-      return b;
-    } else {
-      return (com.google.protobuf.ByteString) ref;
-    }
-  }
-
-  private byte memoizedIsInitialized = -1;
-  @Override
-  public final boolean isInitialized() {
-    byte isInitialized = memoizedIsInitialized;
-    if (isInitialized == 1) return true;
-    if (isInitialized == 0) return false;
-
-    memoizedIsInitialized = 1;
-    return true;
-  }
-
-  @Override
-  public void writeTo(com.google.protobuf.CodedOutputStream output)
-                      throws java.io.IOException {
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hello_)) {
-      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, hello_);
-    }
-    unknownFields.writeTo(output);
-  }
-
-  @Override
-  public int getSerializedSize() {
-    int size = memoizedSize;
-    if (size != -1) return size;
-
-    size = 0;
-    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hello_)) {
-      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, hello_);
-    }
-    size += unknownFields.getSerializedSize();
-    memoizedSize = size;
-    return size;
-  }
-
-  @Override
-  public boolean equals(final Object obj) {
-    if (obj == this) {
-     return true;
-    }
-    if (!(obj instanceof SayHelloResponse)) {
-      return super.equals(obj);
-    }
-    SayHelloResponse other = (SayHelloResponse) obj;
-
-    if (!getHello()
-        .equals(other.getHello())) return false;
-    if (!unknownFields.equals(other.unknownFields)) return false;
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    if (memoizedHashCode != 0) {
-      return memoizedHashCode;
-    }
-    int hash = 41;
-    hash = (19 * hash) + getDescriptor().hashCode();
-    hash = (37 * hash) + HELLO_FIELD_NUMBER;
-    hash = (53 * hash) + getHello().hashCode();
-    hash = (29 * hash) + unknownFields.hashCode();
-    memoizedHashCode = hash;
-    return hash;
-  }
-
-  public static SayHelloResponse parseFrom(
-      java.nio.ByteBuffer data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static SayHelloResponse parseFrom(
-      java.nio.ByteBuffer data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static SayHelloResponse parseFrom(
-      com.google.protobuf.ByteString data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static SayHelloResponse parseFrom(
-      com.google.protobuf.ByteString data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static SayHelloResponse parseFrom(byte[] data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static SayHelloResponse parseFrom(
-      byte[] data,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data, extensionRegistry);
-  }
-  public static SayHelloResponse parseFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static SayHelloResponse 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 SayHelloResponse parseDelimitedFrom(java.io.InputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseDelimitedWithIOException(PARSER, input);
-  }
-  public static SayHelloResponse 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 SayHelloResponse parseFrom(
-      com.google.protobuf.CodedInputStream input)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static SayHelloResponse parseFrom(
-      com.google.protobuf.CodedInputStream input,
-      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input, extensionRegistry);
-  }
-
-  @Override
-  public Builder newBuilderForType() { return newBuilder(); }
-  public static Builder newBuilder() {
-    return DEFAULT_INSTANCE.toBuilder();
-  }
-  public static Builder newBuilder(SayHelloResponse prototype) {
-    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-  }
-  @Override
-  public Builder toBuilder() {
-    return this == DEFAULT_INSTANCE
-        ? new Builder() : new Builder().mergeFrom(this);
-  }
-
-  @Override
-  protected Builder newBuilderForType(
-      BuilderParent parent) {
-    Builder builder = new Builder(parent);
-    return builder;
-  }
-  /**
-   * Protobuf type {@code org.apache.dubbo.samples.proto.SayHelloResponse}
-   */
-  public static final class Builder extends
-      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-      // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.proto.SayHelloResponse)
-      SayHelloResponseOrBuilder {
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_descriptor;
-    }
-
-    @Override
-    protected FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              SayHelloResponse.class, Builder.class);
-    }
-
-    // Construct using org.apache.dubbo.samples.proto.SayHelloResponse.newBuilder()
-    private Builder() {
-      maybeForceBuilderInitialization();
-    }
-
-    private Builder(
-        BuilderParent parent) {
-      super(parent);
-      maybeForceBuilderInitialization();
-    }
-    private void maybeForceBuilderInitialization() {
-      if (com.google.protobuf.GeneratedMessageV3
-              .alwaysUseFieldBuilders) {
-      }
-    }
-    @Override
-    public Builder clear() {
-      super.clear();
-      hello_ = "";
-
-      return this;
-    }
-
-    @Override
-    public com.google.protobuf.Descriptors.Descriptor
-        getDescriptorForType() {
-      return GreetProto.internal_static_org_apache_dubbo_samples_proto_SayHelloResponse_descriptor;
-    }
-
-    @Override
-    public SayHelloResponse getDefaultInstanceForType() {
-      return SayHelloResponse.getDefaultInstance();
-    }
-
-    @Override
-    public SayHelloResponse build() {
-      SayHelloResponse result = buildPartial();
-      if (!result.isInitialized()) {
-        throw newUninitializedMessageException(result);
-      }
-      return result;
-    }
-
-    @Override
-    public SayHelloResponse buildPartial() {
-      SayHelloResponse result = new SayHelloResponse(this);
-      result.hello_ = hello_;
-      onBuilt();
-      return result;
-    }
-
-    @Override
-    public Builder clone() {
-      return super.clone();
-    }
-    @Override
-    public Builder setField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        Object value) {
-      return super.setField(field, value);
-    }
-    @Override
-    public Builder clearField(
-        com.google.protobuf.Descriptors.FieldDescriptor field) {
-      return super.clearField(field);
-    }
-    @Override
-    public Builder clearOneof(
-        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-      return super.clearOneof(oneof);
-    }
-    @Override
-    public Builder setRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        int index, Object value) {
-      return super.setRepeatedField(field, index, value);
-    }
-    @Override
-    public Builder addRepeatedField(
-        com.google.protobuf.Descriptors.FieldDescriptor field,
-        Object value) {
-      return super.addRepeatedField(field, value);
-    }
-    @Override
-    public Builder mergeFrom(com.google.protobuf.Message other) {
-      if (other instanceof SayHelloResponse) {
-        return mergeFrom((SayHelloResponse)other);
-      } else {
-        super.mergeFrom(other);
-        return this;
-      }
-    }
-
-    public Builder mergeFrom(SayHelloResponse other) {
-      if (other == SayHelloResponse.getDefaultInstance()) return this;
-      if (!other.getHello().isEmpty()) {
-        hello_ = other.hello_;
-        onChanged();
-      }
-      this.mergeUnknownFields(other.unknownFields);
-      onChanged();
-      return this;
-    }
-
-    @Override
-    public final boolean isInitialized() {
-      return true;
-    }
-
-    @Override
-    public Builder mergeFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      SayHelloResponse parsedMessage = null;
-      try {
-        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (SayHelloResponse) e.getUnfinishedMessage();
-        throw e.unwrapIOException();
-      } finally {
-        if (parsedMessage != null) {
-          mergeFrom(parsedMessage);
-        }
-      }
-      return this;
-    }
-
-    private Object hello_ = "";
-    /**
-     * <code>string hello = 1;</code>
-     * @return The hello.
-     */
-    public String getHello() {
-      Object ref = hello_;
-      if (!(ref instanceof String)) {
-        com.google.protobuf.ByteString bs =
-            (com.google.protobuf.ByteString) ref;
-        String s = bs.toStringUtf8();
-        hello_ = s;
-        return s;
-      } else {
-        return (String) ref;
-      }
-    }
-    /**
-     * <code>string hello = 1;</code>
-     * @return The bytes for hello.
-     */
-    public com.google.protobuf.ByteString
-        getHelloBytes() {
-      Object ref = hello_;
-      if (ref instanceof String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (String) ref);
-        hello_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-    /**
-     * <code>string hello = 1;</code>
-     * @param value The hello to set.
-     * @return This builder for chaining.
-     */
-    public Builder setHello(
-        String value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  
-      hello_ = value;
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string hello = 1;</code>
-     * @return This builder for chaining.
-     */
-    public Builder clearHello() {
-      
-      hello_ = getDefaultInstance().getHello();
-      onChanged();
-      return this;
-    }
-    /**
-     * <code>string hello = 1;</code>
-     * @param value The bytes for hello to set.
-     * @return This builder for chaining.
-     */
-    public Builder setHelloBytes(
-        com.google.protobuf.ByteString value) {
-      if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-      
-      hello_ = value;
-      onChanged();
-      return this;
-    }
-    @Override
-    public final Builder setUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.setUnknownFields(unknownFields);
-    }
-
-    @Override
-    public final Builder mergeUnknownFields(
-        final com.google.protobuf.UnknownFieldSet unknownFields) {
-      return super.mergeUnknownFields(unknownFields);
-    }
-
-
-    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.proto.SayHelloResponse)
-  }
-
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.proto.SayHelloResponse)
-  private static final SayHelloResponse DEFAULT_INSTANCE;
-  static {
-    DEFAULT_INSTANCE = new SayHelloResponse();
-  }
-
-  public static SayHelloResponse getDefaultInstance() {
-    return DEFAULT_INSTANCE;
-  }
-
-  private static final com.google.protobuf.Parser<SayHelloResponse>
-      PARSER = new com.google.protobuf.AbstractParser<SayHelloResponse>() {
-    @Override
-    public SayHelloResponse parsePartialFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return new SayHelloResponse(input, extensionRegistry);
-    }
-  };
-
-  public static com.google.protobuf.Parser<SayHelloResponse> parser() {
-    return PARSER;
-  }
-
-  @Override
-  public com.google.protobuf.Parser<SayHelloResponse> getParserForType() {
-    return PARSER;
-  }
-
-  @Override
-  public SayHelloResponse getDefaultInstanceForType() {
-    return DEFAULT_INSTANCE;
-  }
-
-}
-
diff --git a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java b/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
deleted file mode 100644
index 92e0894..0000000
--- a/service_discovery/service/java-server/src/main/java/org/apache/dubbo/samples/proto/SayHelloResponseOrBuilder.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: greet.proto
-
-package org.apache.dubbo.samples.proto;
-
-public interface SayHelloResponseOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.proto.SayHelloResponse)
-    com.google.protobuf.MessageOrBuilder {
-
-  /**
-   * <code>string hello = 1;</code>
-   * @return The hello.
-   */
-  String getHello();
-  /**
-   * <code>string hello = 1;</code>
-   * @return The bytes for hello.
-   */
-  com.google.protobuf.ByteString
-      getHelloBytes();
-}
diff --git a/service_discovery/service/java-server/src/main/resources/spring/dubbo.server.xml b/service_discovery/service/java-server/src/main/resources/spring/dubbo.server.xml
deleted file mode 100644
index 472be44..0000000
--- a/service_discovery/service/java-server/src/main/resources/spring/dubbo.server.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-       Licensed to the Apache Software Foundation (ASF) under one or more
-      contributor license agreements.  See the NOTICE file distributed with
-      this work for additional information regarding copyright ownership.
-      The ASF licenses this file to You under the Apache License, Version 2.0
-      (the "License"); you may not use this file except in compliance with
-      the License.  You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-      Unless required by applicable law or agreed to in writing, software
-      distributed under the License is distributed on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-      See the License for the specific language governing permissions and
-      limitations under the License.
--->
-
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
-	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
-
-    <!-- 应用名 -->
-    <dubbo:application name="greet-java-server"/>
-    <!-- 连接到哪个本地注册中心 -->
-    <dubbo:registry id="dubbogo"  address="nacos://127.0.0.1:8848?registry-type=service" />
-    <!-- 用dubbo协议在20880端口暴露服务 -->
-    <dubbo:protocol id="tri" name="tri" host="127.0.0.1" port="20055" />
-    <!-- 声明需要暴露的服务接口 -->
-    <dubbo:service id="aaa" registry="dubbogo" timeout="3000" interface="org.apache.dubbo.samples.proto.GreetService" ref="greetService"/>
-
-    <bean id="greetService" class="org.apache.dubbo.samples.service.GreetServiceImpl" />
-
-
-</beans>
\ No newline at end of file