Merge pull request #747 from chickenlj/helloworld-upate

Update helloworld
diff --git a/.run/api-triple-server.run.xml b/.run/api-triple-server.run.xml
deleted file mode 100644
index 668c45d..0000000
--- a/.run/api-triple-server.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="api-triple-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="config-api">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/config-api/rpc/triple/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/config-api/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/configcenter-zk-client.run.xml b/.run/configcenter-zk-client.run.xml
deleted file mode 100644
index 118be72..0000000
--- a/.run/configcenter-zk-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="configcenter-zk-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="configcenter">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/configcenter/zookeeper/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/configcenter/zookeeper/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/configcenter/nacos/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/configcenter-zk-server.run.xml b/.run/configcenter-zk-server.run.xml
deleted file mode 100644
index d275c1b..0000000
--- a/.run/configcenter-zk-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="configcenter-zk-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="configcenter">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/configcenter/zookeeper/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/configcenter/zookeeper/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/configcenter/nacos/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/configcenter/configcenter-nacos-client.run.xml b/.run/configcenter/configcenter-nacos-client.run.xml
deleted file mode 100644
index db8036b..0000000
--- a/.run/configcenter/configcenter-nacos-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="configcenter-nacos-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="configcenter" singleton="true">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/configcenter/nacos/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/configcenter/nacos/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/configcenter/nacos/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/configcenter/configcenter-nacos-server.run.xml b/.run/configcenter/configcenter-nacos-server.run.xml
deleted file mode 100644
index c79be08..0000000
--- a/.run/configcenter/configcenter-nacos-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="configcenter-nacos-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="configcenter">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/configcenter/nacos/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/configcenter/nacos/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/configcenter/nacos/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/context-dubbo-client.run.xml b/.run/context-dubbo-client.run.xml
deleted file mode 100644
index ba139fa..0000000
--- a/.run/context-dubbo-client.run.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="context-dubbo-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="context" singleton="false">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/context/dubbo/go-client/conf/log.yml" />
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/context/dubbo/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/context/dubbo/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/context/go-client/dubbo/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/context-dubbo-server.run.xml b/.run/context-dubbo-server.run.xml
deleted file mode 100644
index 3bf6451..0000000
--- a/.run/context-dubbo-server.run.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="context-dubbo-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="context" singleton="false">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/context/dubbo/go-server/conf/dubbogo.yml" />
-      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/context/dubbo/go-server/conf/log.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/context/dubbo/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/context/dubbo/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/context-triple-client.run.xml b/.run/context-triple-client.run.xml
deleted file mode 100644
index 9ea6b92..0000000
--- a/.run/context-triple-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="context-triple-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="context">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/context/triple/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/context/triple/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/helloworld/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/context-triple-server.run.xml b/.run/context-triple-server.run.xml
deleted file mode 100644
index f92fa20..0000000
--- a/.run/context-triple-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="context-triple-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="context">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/context/triple/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/context/triple/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/helloworld/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/custom-client.run.xml b/.run/custom-client.run.xml
deleted file mode 100644
index a2739f6..0000000
--- a/.run/custom-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="custom-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="filter">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/filter/custom/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/filter/custom/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/rpc/dubbo/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/custom-server.run.xml b/.run/custom-server.run.xml
deleted file mode 100644
index 7c5d1b3..0000000
--- a/.run/custom-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="custom-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="filter">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/filter/custom/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/filter/custom/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/rpc/dubbo/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/direct-client.run.xml b/.run/direct-client.run.xml
deleted file mode 100644
index 1461592..0000000
--- a/.run/direct-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="direct-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="direct">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/direct/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/direct/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/helloworld/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/direct-server.run.xml b/.run/direct-server.run.xml
deleted file mode 100644
index 7bbb53e..0000000
--- a/.run/direct-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="direct-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="direct">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/direct/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/direct/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/helloworld/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/error-triple-hessian-client.run.xml b/.run/error-triple-hessian-client.run.xml
deleted file mode 100644
index a19c156..0000000
--- a/.run/error-triple-hessian-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="error-triple-hessian-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="error">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/error/triple/hessian2/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/error/triple/hessian2/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/rpc/triple/pb/dubbogo-grpc/grpc-client/main.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/filter/filter-tpslimit-client.run.xml b/.run/filter/filter-tpslimit-client.run.xml
deleted file mode 100644
index e785ddc..0000000
--- a/.run/filter/filter-tpslimit-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="filter-tpslimit-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="filter">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/filter/tpslimit/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/filter/tpslimit/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/filter/tpslimit/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/filter/filter-tpslimit-server.run.xml b/.run/filter/filter-tpslimit-server.run.xml
deleted file mode 100644
index 6e9c3e0..0000000
--- a/.run/filter/filter-tpslimit-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="filter-tpslimit-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="filter" singleton="true">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/../dubbo-go-sample/filter/tpslimit/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/filter/tpslimit/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/filter/tpslimit/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/game-go-game.run.xml b/.run/game-go-game.run.xml
deleted file mode 100644
index 0995573..0000000
--- a/.run/game-go-game.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="game-go-game" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="game">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/game/go-server-game/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/game/go-server-game/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/game/go-server-game/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/game-go-gate.run.xml b/.run/game-go-gate.run.xml
deleted file mode 100644
index ef07a70..0000000
--- a/.run/game-go-gate.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="game-go-gate" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="game">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/game/go-server-gate/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/game/go-server-gate/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/game/go-server-gate/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/generic-default-go-client.run.xml b/.run/generic-default-go-client.run.xml
deleted file mode 100644
index 1d1006f..0000000
--- a/.run/generic-default-go-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="generic-default-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="generic">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/generic/default/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/generic/default/go-client/cmd" />
-    <directory value="$PROJECT_DIR$/generic/default/go-client/cmd" />
-    <filePath value="$PROJECT_DIR$/generic/default/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/generic-default-java-client.run.xml b/.run/generic-default-java-client.run.xml
deleted file mode 100644
index 84bf92a..0000000
--- a/.run/generic-default-java-client.run.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="generic-default-java-client" type="ShConfigurationType" folderName="v3config-generic">
-    <option name="SCRIPT_TEXT" value="" />
-    <option name="INDEPENDENT_SCRIPT_PATH" value="false" />
-    <option name="SCRIPT_PATH" value="$PROJECT_DIR$/generic/default/java-client/run.sh" />
-    <option name="SCRIPT_OPTIONS" value="" />
-    <option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="false" />
-    <option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$/generic/default/java-client" />
-    <option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
-    <option name="INTERPRETER_PATH" value="" />
-    <option name="INTERPRETER_OPTIONS" value="" />
-    <option name="EXECUTE_IN_TERMINAL" value="true" />
-    <option name="EXECUTE_SCRIPT_FILE" value="true" />
-    <envs />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/generic-default-java-server.run.xml b/.run/generic-default-java-server.run.xml
deleted file mode 100644
index b97b888..0000000
--- a/.run/generic-default-java-server.run.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="generic-default-java-server" type="ShConfigurationType" folderName="v3config-generic">
-    <option name="SCRIPT_TEXT" value="" />
-    <option name="INDEPENDENT_SCRIPT_PATH" value="false" />
-    <option name="SCRIPT_PATH" value="$PROJECT_DIR$/generic/default/java-server/run.sh" />
-    <option name="SCRIPT_OPTIONS" value="" />
-    <option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="false" />
-    <option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$/generic/default/java-server" />
-    <option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
-    <option name="INTERPRETER_PATH" value="" />
-    <option name="INTERPRETER_OPTIONS" value="" />
-    <option name="EXECUTE_IN_TERMINAL" value="true" />
-    <option name="EXECUTE_SCRIPT_FILE" value="true" />
-    <envs />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/grpc-go-client.run.xml b/.run/grpc-go-client.run.xml
deleted file mode 100644
index 2d139d4..0000000
--- a/.run/grpc-go-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="grpc-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/grpc">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/grpc/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/grpc/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/rpc/dubbo/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/grpc-go-server.run.xml b/.run/grpc-go-server.run.xml
deleted file mode 100644
index 4932422..0000000
--- a/.run/grpc-go-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="grpc-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/grpc">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/grpc/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/grpc/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/rpc/dubbo/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/logger-custom.run.xml b/.run/logger-custom.run.xml
deleted file mode 100644
index 4086a75..0000000
--- a/.run/logger-custom.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="logger-custom" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="logger">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/logger/custom/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/logger/custom/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/logger/custom/cmd/main.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/logger-default.run.xml b/.run/logger-default.run.xml
deleted file mode 100644
index 5f63f7e..0000000
--- a/.run/logger-default.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="logger-default" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="logger">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/logger/default/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/logger/default/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/logger/default/cmd/main.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/logger-level.run.xml b/.run/logger-level.run.xml
deleted file mode 100644
index c68cf5a..0000000
--- a/.run/logger-level.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="logger-level" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="logger">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/logger/level/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/logger/level/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/logger/level/cmd/main.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/logger-rolling.run.xml b/.run/logger-rolling.run.xml
deleted file mode 100644
index 084d1b6..0000000
--- a/.run/logger-rolling.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="logger-rolling" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="logger" nameIsGenerated="true">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/logger/rolling/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/logger/rolling/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/logger/rolling/cmd/main.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/mesh/mesh-client.run.xml b/.run/mesh/mesh-client.run.xml
deleted file mode 100644
index dec2ad9..0000000
--- a/.run/mesh/mesh-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="mesh-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="mesh">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$/mesh" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/mesh/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples-mesh-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/mesh/mesh-server.run.xml b/.run/mesh/mesh-server.run.xml
deleted file mode 100644
index 02e766c..0000000
--- a/.run/mesh/mesh-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="mesh-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="mesh">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$/mesh" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/mesh/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples-mesh-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/metrics-client.run.xml b/.run/metrics-client.run.xml
deleted file mode 100644
index c21685b..0000000
--- a/.run/metrics-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="metrics-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="metrics">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/metrics/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/metrics/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/helloworld/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/metrics-go-server.run.xml b/.run/metrics-go-server.run.xml
deleted file mode 100644
index 86be56f..0000000
--- a/.run/metrics-go-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="metrics-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="metrics">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/metrics/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/metrics/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/helloworld/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/rpc/jsonrpc/rpc-jsonrpc-go-client.run.xml b/.run/rpc/jsonrpc/rpc-jsonrpc-go-client.run.xml
deleted file mode 100644
index a3bb3b9..0000000
--- a/.run/rpc/jsonrpc/rpc-jsonrpc-go-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="jsonrpc-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/jsonrpc">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/jsonrpc/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/jsonrpc/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/rpc/jsonrpc/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/rpc/jsonrpc/rpc-jsonrpc-go-server.run.xml b/.run/rpc/jsonrpc/rpc-jsonrpc-go-server.run.xml
deleted file mode 100644
index b68da8f..0000000
--- a/.run/rpc/jsonrpc/rpc-jsonrpc-go-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="jsonrpc-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/jsonrpc">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/jsonrpc/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/jsonrpc/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/rpc/jsonrpc/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/rpc/triple-pb-dubbogo-grpc-go-client.run.xml b/.run/rpc/triple-pb-dubbogo-grpc-go-client.run.xml
deleted file mode 100644
index e2ea3ab..0000000
--- a/.run/rpc/triple-pb-dubbogo-grpc-go-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="triple-pb-dubbogo-grpc-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/triple">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/triple/pb/dubbogo-grpc/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-grpc/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/general/dubbo3/rpc/triple/pb/dubbogo-grpc/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/rpc/triple-pb-dubbogo-java-go-client.run.xml b/.run/rpc/triple-pb-dubbogo-java-go-client.run.xml
deleted file mode 100644
index 23bc1cd..0000000
--- a/.run/rpc/triple-pb-dubbogo-java-go-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="triple-pb-dubbogo-java-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/triple">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/triple/pb/dubbogo-java/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-java/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/general/dubbo3/rpc/triple/pb/dubbogo-java/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/rpc/triple-pb-dubbogo-java-go-server.run.xml b/.run/rpc/triple-pb-dubbogo-java-go-server.run.xml
deleted file mode 100644
index fe3d005..0000000
--- a/.run/rpc/triple-pb-dubbogo-java-go-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="triple-pb-dubbogo-java-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/triple">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/triple/pb/dubbogo-java/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/triple/pb/dubbogo-java/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/general/dubbo3/rpc/triple/pb/dubbogo-java/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/tracing-triple-go-client.run.xml b/.run/tracing-triple-go-client.run.xml
deleted file mode 100644
index 8e18e7f..0000000
--- a/.run/tracing-triple-go-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="tracing-triple-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="tracing">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/tracing/triple/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/tracing/triple/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/tracing/grpc/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/tracing-triple-go-server.run.xml b/.run/tracing-triple-go-server.run.xml
deleted file mode 100644
index a22eac3..0000000
--- a/.run/tracing-triple-go-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="tracing-triple-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="tracing">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/tracing/triple/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/tracing/triple/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/tracing/grpc/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/tracing/dubbo/tracing-dubbo-go-client.run.xml b/.run/tracing/dubbo/tracing-dubbo-go-client.run.xml
deleted file mode 100644
index b21f298..0000000
--- a/.run/tracing/dubbo/tracing-dubbo-go-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="tracing-dubbo-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="tracing" singleton="true">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/tracing/dubbo/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/tracing/dubbo/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/tracing/dubbo/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/tracing/dubbo/tracing-dubbo-go-server.run.xml b/.run/tracing/dubbo/tracing-dubbo-go-server.run.xml
deleted file mode 100644
index bf81502..0000000
--- a/.run/tracing/dubbo/tracing-dubbo-go-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="tracing-dubbo-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="tracing" singleton="true">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/tracing/dubbo/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/tracing/dubbo/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/tracing/dubbo/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/tracing/grpc/tracing-grpc-go-client.run.xml b/.run/tracing/grpc/tracing-grpc-go-client.run.xml
deleted file mode 100644
index 0b81528..0000000
--- a/.run/tracing/grpc/tracing-grpc-go-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="tracing-grpc-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="tracing" singleton="true">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/tracing/grpc/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/tracing/grpc/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/tracing/grpc/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/tracing/grpc/tracing-grpc-go-server.run.xml b/.run/tracing/grpc/tracing-grpc-go-server.run.xml
deleted file mode 100644
index 16b509a..0000000
--- a/.run/tracing/grpc/tracing-grpc-go-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="tracing-grpc-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="tracing" singleton="true">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/tracing/grpc/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/tracing/grpc/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/tracing/grpc/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/tracing/jsonrpc/tracing-jsonrpc-go-client.run.xml b/.run/tracing/jsonrpc/tracing-jsonrpc-go-client.run.xml
deleted file mode 100644
index a3d2cc1..0000000
--- a/.run/tracing/jsonrpc/tracing-jsonrpc-go-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="tracing-jsonrpc-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="tracing" singleton="true">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/tracing/jsonrpc/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/tracing/jsonrpc/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/tracing/jsonrpc/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/tracing/jsonrpc/tracing-jsonrpc-go-server.run.xml b/.run/tracing/jsonrpc/tracing-jsonrpc-go-server.run.xml
deleted file mode 100644
index 0384f5d..0000000
--- a/.run/tracing/jsonrpc/tracing-jsonrpc-go-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="tracing-jsonrpc-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="tracing" singleton="true">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/tracing/jsonrpc/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/tracing/jsonrpc/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/tracing/jsonrpc/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/triple-codec-extension-client.run.xml b/.run/triple-codec-extension-client.run.xml
deleted file mode 100644
index 6650ba0..0000000
--- a/.run/triple-codec-extension-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="triple-codec-extension-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/triple">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/triple/codec-extension/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/triple/codec-extension/go-client/cmd" />
-    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/api/dubbogo-grpc/server/dubbogo-server/cmd" />
-    <filePath value="$PROJECT_DIR$" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/triple-codec-extension-server.run.xml b/.run/triple-codec-extension-server.run.xml
deleted file mode 100644
index 8e50513..0000000
--- a/.run/triple-codec-extension-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="triple-codec-extension-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/triple">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/triple/codec-extension/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/triple/codec-extension/go-server/cmd" />
-    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/api/dubbogo-grpc/server/dubbogo-server/cmd" />
-    <filePath value="$PROJECT_DIR$" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/triple-hessian-client.run.xml b/.run/triple-hessian-client.run.xml
deleted file mode 100644
index 86847e9..0000000
--- a/.run/triple-hessian-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="triple-hessian-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/triple">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/triple/hessian2/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/triple/hessian2/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/general/dubbo3/hessian2/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/triple-msgpack-client.run.xml b/.run/triple-msgpack-client.run.xml
deleted file mode 100644
index 118d7fc..0000000
--- a/.run/triple-msgpack-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="triple-msgpack-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/triple">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/triple/msgpack/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/triple/msgpack/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/rpc/triple/msgpack/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/triple-msgpack-server.run.xml b/.run/triple-msgpack-server.run.xml
deleted file mode 100644
index 6f8ff34..0000000
--- a/.run/triple-msgpack-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="triple-msgpack-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/triple">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/triple/msgpack/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/triple/msgpack/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/rpc/triple/msgpack/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/triple/triple-msgpack-client.run.xml b/.run/triple/triple-msgpack-client.run.xml
deleted file mode 100644
index fc9e9da..0000000
--- a/.run/triple/triple-msgpack-client.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="triple-msgpack-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/triple">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/triple/msgpack/go-client/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/triple/msgpack/go-client/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/rpc/dubbo3/msgpack/go-client/cmd/client.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/triple/triple-msgpack-server.run.xml b/.run/triple/triple-msgpack-server.run.xml
deleted file mode 100644
index 8d0906f..0000000
--- a/.run/triple/triple-msgpack-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="triple-msgpack-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/triple">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/triple/msgpack/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/triple/msgpack/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/rpc/dubbo3/msgpack/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.run/triplego-hessian-server.run.xml b/.run/triplego-hessian-server.run.xml
deleted file mode 100644
index f0d13c5..0000000
--- a/.run/triplego-hessian-server.run.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="triple-hessian-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="rpc/triple">
-    <module name="dubbo-go-samples" />
-    <working_directory value="$PROJECT_DIR$" />
-    <envs>
-      <env name="DUBBO_GO_CONFIG_PATH" value="$PROJECT_DIR$/rpc/triple/hessian2/go-server/conf/dubbogo.yml" />
-    </envs>
-    <kind value="PACKAGE" />
-    <package value="github.com/apache/dubbo-go-samples/rpc/triple/hessian2/go-server/cmd" />
-    <directory value="$PROJECT_DIR$" />
-    <filePath value="$PROJECT_DIR$/general/dubbo3/hessian2/go-server/cmd/server.go" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/README_CN.md b/README_CN.md
index 21554c9..bd94097 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -12,15 +12,12 @@
 * direct: 直连模式,无需注册中心,直连服务提供者
 * error/triple: triple 示例,演示如何在 triple 协议中集成 hessian2/protobuf
 * filter: dubbogo filter 示例,包含了 custom_filter 与 tpslimit
-* game: dubbogo 游戏示例
 * generic: 泛化调用
 * helloworld: 入门例子
 * integrate_test: dubbogo github action 集成测试用例
 * logger: dubbogo logging
-* mesh: 这个示例演示了如何将 dubbo-go 开发的应用部署在 Istio 体系下,以实现 Envoy 对 dubbo/dubbo-go 服务的自动代理
 * metrics: 使用 prometheus 收集 dubbogo 的 metrics
 * otel/trace: 使用 opentelemetry 进行 tracing
-* proxyless: 这个示例演示了如何将 dubbo-go 开发的应用部署在 Istio 体系下,以实现 Envoy 对 dubbo/dubbo-go 服务的自动代理
 * registry: 把 etcd/nacos/polaris/zookeeper 当做 dubbogo 注册中心示例
 * rpc: 使用 Dubbogo 框架启动 rpc 服务,发起调用
   * rpc/dubbo: dubbo-go 3.0 RPC 通信示例,同时给出了 Java 和 Go 两种语言通信示例
@@ -32,6 +29,7 @@
 * tls: getty(tcp)/triple/gRPC 全链路 tls 安全通信示例
 * tracing: 链路追踪例子,支持
 * error: 错误处理
+* compatibility: 3.1.x 版本示例
 
 
 ## 如何运行
diff --git a/helloworld/README.md b/helloworld/README.md
index b9adb4c..a5690a1 100644
--- a/helloworld/README.md
+++ b/helloworld/README.md
@@ -1,59 +1,40 @@
-# MultiRpc for dubbo-go
+# Helloworld for dubbo-go
 
-This example demonstrates the basic usage of dubbo-go as an RPC framework. Check [Quick Start][] on our official website for detailed explanation.
+This example demonstrates the basic usage of dubbo-go as an RPC framework. Check [Quick Start](https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/quickstart/) on our official website for detailed explanation.
 
 ## Contents
 
-- server/main.go - is the main definition of the service, handler and rpc server
-- client/main.go - is the rpc client
+- go-server/cmd/main.go - is the main definition of the service, handler and rpc server
+- go-client/cmd/main.go - is the rpc client
 - proto - contains the protobuf definition of the API
 
 ## How to run
 
-[//]: # (### Prerequisites)
+### Prerequisites
+1. Install `protoc [version3][]
+   Please refer to [Protocol Buffer Compiler Installation][].
 
-[//]: # ()
-[//]: # (1. Install `protoc [version3][]`)
+2. Install `protoc-gen-go` and `protoc-gen-triple`
+   Install the version of your choice of protoc-gen-go. here use the latest version as example:
 
-[//]: # ()
-[//]: # (    Please refer to [Protocol Buffer Compiler Installation][].)
+    ```shell
+    go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.31
+    ```
+   
+    Install the latest version of protoc-gen-triple:
 
-[//]: # ()
-[//]: # (2. Install `protoc-gen-go` and `protoc-gen-triple` )
+    ```shell
+    go install github.com/dubbogo/protoc-gen-go-triple/v3@v3.0.0
+    ```
 
-[//]: # ()
-[//]: # (    ```shell)
+3. Generate stub code
 
-[//]: # (    # install the version of your choice of protoc-gen-go. here use the latest version as example)
+    Generate related stub code with protoc-gen-go and protoc-gen-go-triple:
 
-[//]: # (    go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.31)
+    ```shell
+    protoc --go_out=. --go_opt=paths=source_relative --go-triple_out=. --go-triple_opt=paths=source_relative ./proto/greet.proto
+    ```
 
-[//]: # (    )
-[//]: # (    # install the latest version of protoc-gen-triple)
-
-[//]: # (    git clone https://github.com/apache/dubbo-go.git && cd ./dubbo-go)
-
-[//]: # (    git checkout feature-triple)
-
-[//]: # (    go mod tidy)
-
-[//]: # (    cd ./protocol/triple/triple-tool/protoc-gen-triple)
-
-[//]: # (    go install .)
-
-[//]: # (    ```)
-
-[//]: # ()
-[//]: # (### Generate stub code)
-
-[//]: # ()
-[//]: # (```shell)
-
-[//]: # (# generate related stub code with protoc-gen-go and protoc-gen-triple)
-
-[//]: # (protoc --go_out=. --go_opt=paths=source_relative --triple_out=. --triple_opt=paths=source_relative ./greet.proto)
-
-[//]: # (```)
 
 ### Run server
 ```shell
diff --git a/helloworld/proto/greet.pb.go b/helloworld/proto/greet.pb.go
index ea146c7..04a1d3a 100644
--- a/helloworld/proto/greet.pb.go
+++ b/helloworld/proto/greet.pb.go
@@ -1,25 +1,24 @@
-/*
- * 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.
- */
+//
+// 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.
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.29.0
-// 	protoc        v3.15.5
-// source: greet.proto
+// 	protoc-gen-go v1.31.0
+// 	protoc        v4.25.3
+// source: proto/greet.proto
 
 package greet
 
@@ -48,7 +47,7 @@
 func (x *GreetRequest) Reset() {
 	*x = GreetRequest{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_greet_proto_msgTypes[0]
+		mi := &file_proto_greet_proto_msgTypes[0]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -61,7 +60,7 @@
 func (*GreetRequest) ProtoMessage() {}
 
 func (x *GreetRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_greet_proto_msgTypes[0]
+	mi := &file_proto_greet_proto_msgTypes[0]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -74,7 +73,7 @@
 
 // Deprecated: Use GreetRequest.ProtoReflect.Descriptor instead.
 func (*GreetRequest) Descriptor() ([]byte, []int) {
-	return file_greet_proto_rawDescGZIP(), []int{0}
+	return file_proto_greet_proto_rawDescGZIP(), []int{0}
 }
 
 func (x *GreetRequest) GetName() string {
@@ -95,7 +94,7 @@
 func (x *GreetResponse) Reset() {
 	*x = GreetResponse{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_greet_proto_msgTypes[1]
+		mi := &file_proto_greet_proto_msgTypes[1]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -108,7 +107,7 @@
 func (*GreetResponse) ProtoMessage() {}
 
 func (x *GreetResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_greet_proto_msgTypes[1]
+	mi := &file_proto_greet_proto_msgTypes[1]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -121,7 +120,7 @@
 
 // Deprecated: Use GreetResponse.ProtoReflect.Descriptor instead.
 func (*GreetResponse) Descriptor() ([]byte, []int) {
-	return file_greet_proto_rawDescGZIP(), []int{1}
+	return file_proto_greet_proto_rawDescGZIP(), []int{1}
 }
 
 func (x *GreetResponse) GetGreeting() string {
@@ -131,44 +130,45 @@
 	return ""
 }
 
-var File_greet_proto protoreflect.FileDescriptor
+var File_proto_greet_proto protoreflect.FileDescriptor
 
-var file_greet_proto_rawDesc = []byte{
-	0x0a, 0x0b, 0x67, 0x72, 0x65, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x67,
-	0x72, 0x65, 0x65, 0x74, 0x22, 0x22, 0x0a, 0x0c, 0x47, 0x72, 0x65, 0x65, 0x74, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2b, 0x0a, 0x0d, 0x47, 0x72, 0x65, 0x65,
-	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x65,
-	0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x65,
-	0x65, 0x74, 0x69, 0x6e, 0x67, 0x32, 0x44, 0x0a, 0x0c, 0x47, 0x72, 0x65, 0x65, 0x74, 0x53, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x47, 0x72, 0x65, 0x65, 0x74, 0x12, 0x13,
-	0x2e, 0x67, 0x72, 0x65, 0x65, 0x74, 0x2e, 0x47, 0x72, 0x65, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x67, 0x72, 0x65, 0x65, 0x74, 0x2e, 0x47, 0x72, 0x65, 0x65,
-	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x3b, 0x5a, 0x39, 0x67,
-	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65,
-	0x2f, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2d, 0x67, 0x6f, 0x2d, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65,
-	0x73, 0x2f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x3b, 0x67, 0x72, 0x65, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+var file_proto_greet_proto_rawDesc = []byte{
+	0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x65, 0x65, 0x74, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x12, 0x05, 0x67, 0x72, 0x65, 0x65, 0x74, 0x22, 0x22, 0x0a, 0x0c, 0x47, 0x72,
+	0x65, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2b,
+	0x0a, 0x0d, 0x47, 0x72, 0x65, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x1a, 0x0a, 0x08, 0x67, 0x72, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x08, 0x67, 0x72, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x32, 0x44, 0x0a, 0x0c, 0x47,
+	0x72, 0x65, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x47,
+	0x72, 0x65, 0x65, 0x74, 0x12, 0x13, 0x2e, 0x67, 0x72, 0x65, 0x65, 0x74, 0x2e, 0x47, 0x72, 0x65,
+	0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x67, 0x72, 0x65, 0x65,
+	0x74, 0x2e, 0x47, 0x72, 0x65, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+	0x00, 0x42, 0x3b, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
+	0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2d, 0x67, 0x6f, 0x2d,
+	0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6f, 0x72,
+	0x6c, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x67, 0x72, 0x65, 0x65, 0x74, 0x62, 0x06,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
-	file_greet_proto_rawDescOnce sync.Once
-	file_greet_proto_rawDescData = file_greet_proto_rawDesc
+	file_proto_greet_proto_rawDescOnce sync.Once
+	file_proto_greet_proto_rawDescData = file_proto_greet_proto_rawDesc
 )
 
-func file_greet_proto_rawDescGZIP() []byte {
-	file_greet_proto_rawDescOnce.Do(func() {
-		file_greet_proto_rawDescData = protoimpl.X.CompressGZIP(file_greet_proto_rawDescData)
+func file_proto_greet_proto_rawDescGZIP() []byte {
+	file_proto_greet_proto_rawDescOnce.Do(func() {
+		file_proto_greet_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_greet_proto_rawDescData)
 	})
-	return file_greet_proto_rawDescData
+	return file_proto_greet_proto_rawDescData
 }
 
-var file_greet_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_greet_proto_goTypes = []interface{}{
+var file_proto_greet_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_proto_greet_proto_goTypes = []interface{}{
 	(*GreetRequest)(nil),  // 0: greet.GreetRequest
 	(*GreetResponse)(nil), // 1: greet.GreetResponse
 }
-var file_greet_proto_depIdxs = []int32{
+var file_proto_greet_proto_depIdxs = []int32{
 	0, // 0: greet.GreetService.Greet:input_type -> greet.GreetRequest
 	1, // 1: greet.GreetService.Greet:output_type -> greet.GreetResponse
 	1, // [1:2] is the sub-list for method output_type
@@ -178,13 +178,13 @@
 	0, // [0:0] is the sub-list for field type_name
 }
 
-func init() { file_greet_proto_init() }
-func file_greet_proto_init() {
-	if File_greet_proto != nil {
+func init() { file_proto_greet_proto_init() }
+func file_proto_greet_proto_init() {
+	if File_proto_greet_proto != nil {
 		return
 	}
 	if !protoimpl.UnsafeEnabled {
-		file_greet_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+		file_proto_greet_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*GreetRequest); i {
 			case 0:
 				return &v.state
@@ -196,7 +196,7 @@
 				return nil
 			}
 		}
-		file_greet_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+		file_proto_greet_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*GreetResponse); i {
 			case 0:
 				return &v.state
@@ -213,18 +213,18 @@
 	out := protoimpl.TypeBuilder{
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_greet_proto_rawDesc,
+			RawDescriptor: file_proto_greet_proto_rawDesc,
 			NumEnums:      0,
 			NumMessages:   2,
 			NumExtensions: 0,
 			NumServices:   1,
 		},
-		GoTypes:           file_greet_proto_goTypes,
-		DependencyIndexes: file_greet_proto_depIdxs,
-		MessageInfos:      file_greet_proto_msgTypes,
+		GoTypes:           file_proto_greet_proto_goTypes,
+		DependencyIndexes: file_proto_greet_proto_depIdxs,
+		MessageInfos:      file_proto_greet_proto_msgTypes,
 	}.Build()
-	File_greet_proto = out.File
-	file_greet_proto_rawDesc = nil
-	file_greet_proto_goTypes = nil
-	file_greet_proto_depIdxs = nil
+	File_proto_greet_proto = out.File
+	file_proto_greet_proto_rawDesc = nil
+	file_proto_greet_proto_goTypes = nil
+	file_proto_greet_proto_depIdxs = nil
 }
diff --git a/helloworld/proto/greet.triple.go b/helloworld/proto/greet.triple.go
index 5d0c7d4..8bf8609 100644
--- a/helloworld/proto/greet.triple.go
+++ b/helloworld/proto/greet.triple.go
@@ -1,23 +1,6 @@
-/*
- * 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.
- */
-
 // Code generated by protoc-gen-triple. DO NOT EDIT.
 //
-// Source: greet.proto
+// Source: proto/greet.proto
 package greet
 
 import (
diff --git a/integrate_test/service_discovery/interface/tests/integration/main_test.go b/integrate_test/java_interop/service_discovery/interface/tests/integration/main_test.go
similarity index 92%
rename from integrate_test/service_discovery/interface/tests/integration/main_test.go
rename to integrate_test/java_interop/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/java_interop/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/java_interop/service_discovery/interface/tests/integration/service_discovery_test.go
similarity index 92%
copy from integrate_test/service_discovery/interface/tests/integration/service_discovery_test.go
copy to integrate_test/java_interop/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/java_interop/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/java_interop/service_discovery/service/tests/integration/main_test.go
similarity index 92%
rename from integrate_test/service_discovery/service/tests/integration/main_test.go
rename to integrate_test/java_interop/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/java_interop/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/interface/tests/integration/service_discovery_test.go b/integrate_test/java_interop/service_discovery/service/tests/integration/service_discovery_test.go
similarity index 92%
rename from integrate_test/service_discovery/interface/tests/integration/service_discovery_test.go
rename to integrate_test/java_interop/service_discovery/service/tests/integration/service_discovery_test.go
index 6123950..20347cf 100644
--- a/integrate_test/service_discovery/interface/tests/integration/service_discovery_test.go
+++ b/integrate_test/java_interop/service_discovery/service/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/service/proto"
 	"github.com/stretchr/testify/assert"
 )
 
diff --git a/integrate_test/multirpc/tests/integration/main_test.go b/integrate_test/rpc/multi-protocols/tests/integration/main_test.go
similarity index 96%
rename from integrate_test/multirpc/tests/integration/main_test.go
rename to integrate_test/rpc/multi-protocols/tests/integration/main_test.go
index 391e0c3..91f0b61 100644
--- a/integrate_test/multirpc/tests/integration/main_test.go
+++ b/integrate_test/rpc/multi-protocols/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/rpc/multi-protocols/tests/integration/multirpc_test.go
similarity index 96%
rename from integrate_test/multirpc/tests/integration/multirpc_test.go
rename to integrate_test/rpc/multi-protocols/tests/integration/multirpc_test.go
index e51802d..773b7b4 100644
--- a/integrate_test/multirpc/tests/integration/multirpc_test.go
+++ b/integrate_test/rpc/multi-protocols/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/service/tests/integration/service_discovery_test.go b/integrate_test/service_discovery/service/tests/integration/service_discovery_test.go
deleted file mode 100644
index 2615ccb..0000000
--- a/integrate_test/service_discovery/service/tests/integration/service_discovery_test.go
+++ /dev/null
@@ -1,35 +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 integration
-
-import (
-	"context"
-	"testing"
-
-	greet "github.com/apache/dubbo-go-samples/service_discovery/service/proto"
-	"github.com/stretchr/testify/assert"
-)
-
-func TestGreet(t *testing.T) {
-	req := &greet.GreetRequest{Name: "hello world"}
-	ctx := context.Background()
-	reply, err := greetService.Greet(ctx, req)
-	assert.Nil(t, err)
-	assert.Equal(t, "hello world", reply.Greeting)
-
-}
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.md b/java_interop/protobuf-triple/README.md
index f10324f..5376d55 100644
--- a/java_interop/protobuf-triple/README.md
+++ b/java_interop/protobuf-triple/README.md
@@ -1,83 +1,97 @@
-# dubbogo-java
+# Dubbo java and go interoperability, protobuf and triple protocol
+
+使用同一个 proto 文件实现 dubbo-java 和 dubbo-go 互通
 
 ## Contents
-- protobuf: Using the struct definitions from proto files
-- server
-- client
-Please note that this sample is coded using dubbo-go 3.2.0-rc1.
-The combinations we have tested include the following:
 
-- [x] java-client communicating with a dubbogo-server
-- [x] java-server communicating with a dubbogo-client
+- go,go 语言实现的 rpc server 与 client
+- java,java 语言实现的 rpc server 与 client
 
-## Generating Code
-- Java
-  - 1.Add build to pom.xml
-    ```xml
-      <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>${project.basedir}/../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>
-        </plugins>
-    </build>
-    ```
-  - 2.Generate using mvn
-  ```shell
-  mvn clean install
-  ```
-- go
-  - Generate code with protoc
-    ```shell
-    protoc --go_out=. --go_opt=paths=source_relative --go-triple_out=. greet.proto 
-    ```
+## 互通模式
 
+共享服务定义如下:
 
-## Running the Application
-1. Start the server:
-    - Use goland to start triple/gojava-go-server
-    - Execute `sh run.sh` in the java-server folder to start the java server
-2. Start the client
-    - Use goland to start triple/gojava-go-client
-    - Execute `sh run.sh` under the java-client folder to start the java client
+```protobuf
+//protoc --go_out=. --go_opt=paths=source_relative --go-triple_out=. greet.proto
+syntax = "proto3";
+package org.apache.dubbo.sample;
 
-## Notes
-1. Interface naming must be consistent
-   - java-server: GreeterImpl
-   - go-client: The configuration should be similarly defined as follows
-   ```yml
-     Consumer:
-       services:
-         GreeterConsumer:
-           # interface is for registry
-           interface: org.apache.dubbo.sample.GreeterImpl
-   ```
\ No newline at end of file
+option go_package = "github.com/apache/dubbo-go-samples/java_interop/protobuf-triple/go/proto;proto";
+//package of go
+option java_package = 'org.apache.dubbo.sample';
+option java_multiple_files = true;
+option java_outer_classname = "HelloWorldProto";
+option objc_class_prefix = "WH";
+
+// The greeting service definition.
+service Greeter {
+  // Sends a greeting
+  rpc SayHello(HelloRequest) returns (HelloReply);
+  // Sends a greeting via stream
+  //  rpc SayHelloStream (stream HelloRequest) returns (stream HelloReply) {}
+}
+
+// The request message containing the user's name.
+message HelloRequest {
+  string name = 1;
+}
+
+// The response message containing the greetings
+message HelloReply {
+  string message = 1;
+}
+```
+
+### Java client 调用 go server
+
+1. 首先启动 go server:
+
+```shell
+go run go/go-server/cmd/server.go
+```
+
+运行以上命令后,go server 运行在 50052 端口,可通过以下命令测试服务运行正常:
+
+```shell
+curl \
+    --header "Content-Type: application/json" \
+    --data '{"name": "Dubbo"}' \
+    http://localhost:50052/org.apache.dubbo.sample.Greeter/sayHello
+```
+
+2. 启动 java client 
+
+运行以下命令,启动 java 客户端,可以看到服务调用 go server 正常输出结果:
+
+```shell
+./java/java-client/run.sh
+```
+
+### Go client 调用 java server
+
+1. 启动 java server
+
+运行以下命令,启动 java 服务端:
+
+> 注意,请关闭之前启动的 go server,避免出现端口占用冲突。
+
+```shell
+./java/java-server/run.sh
+```
+
+可通过以下命令测试服务运行正常:
+
+```shell
+curl \
+    --header "Content-Type: application/json" \
+    --data '{"name": "Dubbo"}' \
+    http://localhost:50052/org.apache.dubbo.sample.Greeter/sayHello
+```
+
+2. 运行 go client
+
+运行以下命令启动 go 客户端,可以看到服务调用 java server 正常输出结果:
+
+```shell
+go run go/go-client/cmd/client.go
+```
diff --git a/java_interop/protobuf-triple/README_zh.md b/java_interop/protobuf-triple/README_zh.md
deleted file mode 100644
index af369f3..0000000
--- a/java_interop/protobuf-triple/README_zh.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# dubbogo-java
-
-使用同一个proto文件实现dubbo的java和go互通
-## Contents
-
-- protobuf: 使用 proto 文件的结构体定义
-- server
-- client
-
-请注意,该样例使用dubbo-go 3.2.0-rc1编写
-我们测试的组合包括:
-
-- [x] java-client -> dubbogo-server
-- [x] java-server -> dubbogo-client
-## 生成 code
-- java
-  - 1.在pom.xml中添加build
-  ```xml
-      <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>${project.basedir}/../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>
-        </plugins>
-    </build>
-  ```
-  - 2.使用mvn生成
-  ```shell
-  mvn clean install
-  ```
-- go
-  - 使用protoc生成code
-  ```shell
-  protoc --go_out=. --go_opt=paths=source_relative --go-triple_out=. greet.proto 
-  ```
-  
-## 运行
-1. 启动服务端
-   - 使用 goland 启动 triple/gojava-go-server
-   - 在 java-server 文件夹下执行 `sh run.sh` 启动 java server
-2. 启动客户端
-   - 使用 goland 启动 triple/gojava-go-client
-   - 在 java-client 文件夹下执行 `sh run.sh` 启动 java client
-
-## 注意
-1. 接口命名须一致
-   - java-server: GreeterImpl
-   - go-client: 在conf中应类似如下定义
-   ```yml
-     Consumer:
-       services:
-         GreeterConsumer:
-           # interface is for registry
-           interface: org.apache.dubbo.sample.GreeterImpl
-   ```
-      
\ No newline at end of file
diff --git a/java_interop/protobuf-triple/go/go-client/cmd/client.go b/java_interop/protobuf-triple/go/go-client/cmd/client.go
index 132656a..83d3fd3 100644
--- a/java_interop/protobuf-triple/go/go-client/cmd/client.go
+++ b/java_interop/protobuf-triple/go/go-client/cmd/client.go
@@ -25,11 +25,10 @@
 	"github.com/dubbogo/gost/log/logger"
 )
 
-// export DUBBO_GO_CONFIG_PATH=$PATH_TO_SAMPLES/java_interop/protobuf-triple/go/go-client/conf/dubbogo.yml
 func main() {
 
 	cli, err := client.NewClient(
-		client.WithClientURL("127.0.0.1:36969"),
+		client.WithClientURL("127.0.0.1:50052"),
 	)
 	if err != nil {
 		panic(err) // If there's an error, it's handled immediately by panicking.
diff --git a/java_interop/protobuf-triple/go/go-server/cmd/server.go b/java_interop/protobuf-triple/go/go-server/cmd/server.go
index 84f68db..904f4a2 100644
--- a/java_interop/protobuf-triple/go/go-server/cmd/server.go
+++ b/java_interop/protobuf-triple/go/go-server/cmd/server.go
@@ -25,8 +25,6 @@
 	greet "github.com/apache/dubbo-go-samples/java_interop/protobuf-triple/go/proto"
 )
 
-// export DUBBO_GO_CONFIG_PATH=$PATH_TO_SAMPLES/java_interop/protobuf-triple/go/go-server/conf/dubbogo.yml
-
 type GreetTripleServer struct {
 }
 
diff --git a/java_interop/protobuf-triple/go/proto/greet.pb.go b/java_interop/protobuf-triple/go/proto/greet.pb.go
index 02ec604..2b140dc 100644
--- a/java_interop/protobuf-triple/go/proto/greet.pb.go
+++ b/java_interop/protobuf-triple/go/proto/greet.pb.go
@@ -18,8 +18,8 @@
 
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // versions:
-// 	protoc-gen-go v1.33.0
-// 	protoc        v5.26.0--rc3
+// 	protoc-gen-go v1.31.0
+// 	protoc        v4.25.3
 // source: greet.proto
 
 package proto
@@ -137,23 +137,27 @@
 var File_greet_proto protoreflect.FileDescriptor
 
 var file_greet_proto_rawDesc = []byte{
-	0x0a, 0x0b, 0x67, 0x72, 0x65, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x6f,
+	0x0a, 0x0b, 0x67, 0x72, 0x65, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x6f,
 	0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e,
-	0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x22, 0x0a, 0x0c, 0x48, 0x65, 0x6c, 0x6c, 0x6f,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x26, 0x0a, 0x0a, 0x48,
-	0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x32, 0x63, 0x0a, 0x07, 0x47, 0x72, 0x65, 0x65, 0x74, 0x65, 0x72, 0x12, 0x58,
-	0x0a, 0x08, 0x53, 0x61, 0x79, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x26, 0x2e, 0x6f, 0x72, 0x67,
-	0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x73, 0x61,
-	0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e,
-	0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x48, 0x65,
-	0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x3f, 0x0a, 0x17, 0x6f, 0x72, 0x67, 0x2e,
+	0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x22, 0x22, 0x0a, 0x0c, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x26, 0x0a, 0x0a, 0x48, 0x65,
+	0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x32, 0x61, 0x0a, 0x07, 0x47, 0x72, 0x65, 0x65, 0x74, 0x65, 0x72, 0x12, 0x56, 0x0a,
+	0x08, 0x53, 0x61, 0x79, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
 	0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x73, 0x61, 0x6d,
-	0x70, 0x6c, 0x65, 0x42, 0x0f, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x0c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x70,
+	0x70, 0x6c, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x1a, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x75,
+	0x62, 0x62, 0x6f, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x48, 0x65, 0x6c, 0x6c, 0x6f,
+	0x52, 0x65, 0x70, 0x6c, 0x79, 0x42, 0x81, 0x01, 0x0a, 0x17, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70,
+	0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x73, 0x61, 0x6d, 0x70, 0x6c,
+	0x65, 0x42, 0x0f, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x72, 0x6f,
+	0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
+	0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2d, 0x67, 0x6f,
+	0x2d, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x69, 0x6e,
+	0x74, 0x65, 0x72, 0x6f, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2d, 0x74,
+	0x72, 0x69, 0x70, 0x6c, 0x65, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x70,
 	0x72, 0x6f, 0x74, 0x6f, 0xa2, 0x02, 0x02, 0x57, 0x48, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
 	0x33,
 }
@@ -172,12 +176,12 @@
 
 var file_greet_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
 var file_greet_proto_goTypes = []interface{}{
-	(*HelloRequest)(nil), // 0: org.apache.dubbo.samples.HelloRequest
-	(*HelloReply)(nil),   // 1: org.apache.dubbo.samples.HelloReply
+	(*HelloRequest)(nil), // 0: org.apache.dubbo.sample.HelloRequest
+	(*HelloReply)(nil),   // 1: org.apache.dubbo.sample.HelloReply
 }
 var file_greet_proto_depIdxs = []int32{
-	0, // 0: org.apache.dubbo.samples.Greeter.SayHello:input_type -> org.apache.dubbo.samples.HelloRequest
-	1, // 1: org.apache.dubbo.samples.Greeter.SayHello:output_type -> org.apache.dubbo.samples.HelloReply
+	0, // 0: org.apache.dubbo.sample.Greeter.SayHello:input_type -> org.apache.dubbo.sample.HelloRequest
+	1, // 1: org.apache.dubbo.sample.Greeter.SayHello:output_type -> org.apache.dubbo.sample.HelloReply
 	1, // [1:2] is the sub-list for method output_type
 	0, // [0:1] is the sub-list for method input_type
 	0, // [0:0] is the sub-list for extension type_name
diff --git a/java_interop/protobuf-triple/go/proto/greet.proto b/java_interop/protobuf-triple/go/proto/greet.proto
index 59ec39e..b256e5a 100644
--- a/java_interop/protobuf-triple/go/proto/greet.proto
+++ b/java_interop/protobuf-triple/go/proto/greet.proto
@@ -16,9 +16,9 @@
  */
 //protoc --go_out=. --go_opt=paths=source_relative --go-triple_out=. greet.proto
 syntax = "proto3";
-package org.apache.dubbo.samples;
+package org.apache.dubbo.sample;
 
-option go_package = "/proto;proto";
+option go_package = "github.com/apache/dubbo-go-samples/java_interop/protobuf-triple/go/proto;proto";
 //package of go
 option java_package = 'org.apache.dubbo.sample';
 option java_multiple_files = true;
diff --git a/java_interop/protobuf-triple/go/proto/greet.triple.go b/java_interop/protobuf-triple/go/proto/greet.triple.go
index 531c430..dc599c5 100644
--- a/java_interop/protobuf-triple/go/proto/greet.triple.go
+++ b/java_interop/protobuf-triple/go/proto/greet.triple.go
@@ -25,7 +25,7 @@
 
 const (
 	// GreeterName is the fully-qualified name of the Greeter service.
-	GreeterName = "org.apache.dubbo.samples.Greeter"
+	GreeterName = "org.apache.dubbo.sample.Greeter"
 )
 
 // These constants are the fully-qualified names of the RPCs defined in this package. They're
@@ -37,21 +37,21 @@
 // period.
 const (
 	// GreeterSayHelloProcedure is the fully-qualified name of the Greeter's SayHello RPC.
-	GreeterSayHelloProcedure = "/org.apache.dubbo.samples.Greeter/SayHello"
+	GreeterSayHelloProcedure = "/org.apache.dubbo.sample.Greeter/SayHello"
 )
 
 var (
 	_ Greeter = (*GreeterImpl)(nil)
 )
 
-// Greeter is a client for the org.apache.dubbo.samples.Greeter service.
+// Greeter is a client for the org.apache.dubbo.sample.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...)
+	conn, err := cli.DialWithInfo("org.apache.dubbo.sample.Greeter", &Greeter_ClientInfo, opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -78,7 +78,7 @@
 }
 
 var Greeter_ClientInfo = client.ClientInfo{
-	InterfaceName: "org.apache.dubbo.samples.Greeter",
+	InterfaceName: "org.apache.dubbo.sample.Greeter",
 	MethodNames:   []string{"SayHello"},
 	ConnectionInjectFunc: func(dubboCliRaw interface{}, conn *client.Connection) {
 		dubboCli := dubboCliRaw.(*GreeterImpl)
@@ -86,7 +86,7 @@
 	},
 }
 
-// GreeterHandler is an implementation of the org.apache.dubbo.samples.Greeter service.
+// GreeterHandler is an implementation of the org.apache.dubbo.sample.Greeter service.
 type GreeterHandler interface {
 	SayHello(context.Context, *HelloRequest) (*HelloReply, error)
 }
@@ -100,7 +100,7 @@
 }
 
 var Greeter_ServiceInfo = server.ServiceInfo{
-	InterfaceName: "org.apache.dubbo.samples.Greeter",
+	InterfaceName: "org.apache.dubbo.sample.Greeter",
 	ServiceType:   (*GreeterHandler)(nil),
 	Methods: []server.MethodInfo{
 		{
diff --git a/java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/DubboGreeterTriple.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/DubboGreeterTriple.java
similarity index 96%
rename from java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/DubboGreeterTriple.java
rename to java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/DubboGreeterTriple.java
index 92541d3..5fba724 100644
--- a/java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/DubboGreeterTriple.java
+++ b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/DubboGreeterTriple.java
@@ -37,7 +37,6 @@
 import org.apache.dubbo.rpc.stub.UnaryStubMethodHandler;
 
 import com.google.protobuf.Message;
-import org.apache.dubbo.sample.HelloWorldProto;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -51,7 +50,7 @@
     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());
+        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);
@@ -74,7 +73,7 @@
     org.apache.dubbo.sample.HelloReply::parseFrom);
 
     private static final StubMethodDescriptor sayHelloAsyncMethod = new StubMethodDescriptor("SayHello",
-    org.apache.dubbo.sample.HelloRequest.class, CompletableFuture.class, serviceDescriptor, MethodDescriptor.RpcType.UNARY,
+    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);
 
diff --git a/java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/Greeter.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/Greeter.java
similarity index 100%
rename from java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/Greeter.java
rename to java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/Greeter.java
diff --git a/java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloReply.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloReply.java
similarity index 87%
rename from java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloReply.java
rename to java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloReply.java
index 5b3f455..8712757 100644
--- a/java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloReply.java
+++ b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloReply.java
@@ -3,8 +3,6 @@
 
 package org.apache.dubbo.sample;
 
-import org.apache.dubbo.sample.HelloReplyOrBuilder;
-
 /**
  * <pre>
  * The response message containing the greetings
@@ -15,7 +13,7 @@
 public final class HelloReply extends
     com.google.protobuf.GeneratedMessageV3 implements
     // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.HelloReply)
-        HelloReplyOrBuilder {
+    HelloReplyOrBuilder {
 private static final long serialVersionUID = 0L;
   // Use HelloReply.newBuilder() to construct.
   private HelloReply(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
@@ -25,14 +23,14 @@
     message_ = "";
   }
 
-  @Override
+  @java.lang.Override
   @SuppressWarnings({"unused"})
-  protected Object newInstance(
+  protected java.lang.Object newInstance(
       UnusedPrivateParameter unused) {
     return new HelloReply();
   }
 
-  @Override
+  @java.lang.Override
   public final com.google.protobuf.UnknownFieldSet
   getUnknownFields() {
     return this.unknownFields;
@@ -43,7 +41,7 @@
       throws com.google.protobuf.InvalidProtocolBufferException {
     this();
     if (extensionRegistry == null) {
-      throw new NullPointerException();
+      throw new java.lang.NullPointerException();
     }
     com.google.protobuf.UnknownFieldSet.Builder unknownFields =
         com.google.protobuf.UnknownFieldSet.newBuilder();
@@ -56,7 +54,7 @@
             done = true;
             break;
           case 10: {
-            String s = input.readStringRequireUtf8();
+            java.lang.String s = input.readStringRequireUtf8();
 
             message_ = s;
             break;
@@ -85,8 +83,8 @@
     return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_descriptor;
   }
 
-  @Override
-  protected FieldAccessorTable
+  @java.lang.Override
+  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
     return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
@@ -94,20 +92,20 @@
   }
 
   public static final int MESSAGE_FIELD_NUMBER = 1;
-  private volatile Object message_;
+  private volatile java.lang.Object message_;
   /**
    * <code>string message = 1;</code>
    * @return The message.
    */
-  @Override
-  public String getMessage() {
-    Object ref = message_;
-    if (ref instanceof String) {
-      return (String) ref;
+  @java.lang.Override
+  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;
-      String s = bs.toStringUtf8();
+      java.lang.String s = bs.toStringUtf8();
       message_ = s;
       return s;
     }
@@ -116,14 +114,14 @@
    * <code>string message = 1;</code>
    * @return The bytes for message.
    */
-  @Override
+  @java.lang.Override
   public com.google.protobuf.ByteString
       getMessageBytes() {
-    Object ref = message_;
-    if (ref instanceof String) {
+    java.lang.Object ref = message_;
+    if (ref instanceof java.lang.String) {
       com.google.protobuf.ByteString b = 
           com.google.protobuf.ByteString.copyFromUtf8(
-              (String) ref);
+              (java.lang.String) ref);
       message_ = b;
       return b;
     } else {
@@ -132,7 +130,7 @@
   }
 
   private byte memoizedIsInitialized = -1;
-  @Override
+  @java.lang.Override
   public final boolean isInitialized() {
     byte isInitialized = memoizedIsInitialized;
     if (isInitialized == 1) return true;
@@ -142,7 +140,7 @@
     return true;
   }
 
-  @Override
+  @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) {
@@ -151,7 +149,7 @@
     unknownFields.writeTo(output);
   }
 
-  @Override
+  @java.lang.Override
   public int getSerializedSize() {
     int size = memoizedSize;
     if (size != -1) return size;
@@ -165,8 +163,8 @@
     return size;
   }
 
-  @Override
-  public boolean equals(final Object obj) {
+  @java.lang.Override
+  public boolean equals(final java.lang.Object obj) {
     if (obj == this) {
      return true;
     }
@@ -181,7 +179,7 @@
     return true;
   }
 
-  @Override
+  @java.lang.Override
   public int hashCode() {
     if (memoizedHashCode != 0) {
       return memoizedHashCode;
@@ -265,7 +263,7 @@
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
 
-  @Override
+  @java.lang.Override
   public Builder newBuilderForType() { return newBuilder(); }
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
@@ -273,15 +271,15 @@
   public static Builder newBuilder(org.apache.dubbo.sample.HelloReply prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
-  @Override
+  @java.lang.Override
   public Builder toBuilder() {
     return this == DEFAULT_INSTANCE
         ? new Builder() : new Builder().mergeFrom(this);
   }
 
-  @Override
+  @java.lang.Override
   protected Builder newBuilderForType(
-      BuilderParent parent) {
+      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
     Builder builder = new Builder(parent);
     return builder;
   }
@@ -295,14 +293,14 @@
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
       // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.HelloReply)
-      HelloReplyOrBuilder {
+      org.apache.dubbo.sample.HelloReplyOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_descriptor;
     }
 
-    @Override
-    protected FieldAccessorTable
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -315,7 +313,7 @@
     }
 
     private Builder(
-        BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       super(parent);
       maybeForceBuilderInitialization();
     }
@@ -324,7 +322,7 @@
               .alwaysUseFieldBuilders) {
       }
     }
-    @Override
+    @java.lang.Override
     public Builder clear() {
       super.clear();
       message_ = "";
@@ -332,18 +330,18 @@
       return this;
     }
 
-    @Override
+    @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
       return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_descriptor;
     }
 
-    @Override
+    @java.lang.Override
     public org.apache.dubbo.sample.HelloReply getDefaultInstanceForType() {
       return org.apache.dubbo.sample.HelloReply.getDefaultInstance();
     }
 
-    @Override
+    @java.lang.Override
     public org.apache.dubbo.sample.HelloReply build() {
       org.apache.dubbo.sample.HelloReply result = buildPartial();
       if (!result.isInitialized()) {
@@ -352,7 +350,7 @@
       return result;
     }
 
-    @Override
+    @java.lang.Override
     public org.apache.dubbo.sample.HelloReply buildPartial() {
       org.apache.dubbo.sample.HelloReply result = new org.apache.dubbo.sample.HelloReply(this);
       result.message_ = message_;
@@ -360,39 +358,39 @@
       return result;
     }
 
-    @Override
+    @java.lang.Override
     public Builder clone() {
       return super.clone();
     }
-    @Override
+    @java.lang.Override
     public Builder setField(
         com.google.protobuf.Descriptors.FieldDescriptor field,
-        Object value) {
+        java.lang.Object value) {
       return super.setField(field, value);
     }
-    @Override
+    @java.lang.Override
     public Builder clearField(
         com.google.protobuf.Descriptors.FieldDescriptor field) {
       return super.clearField(field);
     }
-    @Override
+    @java.lang.Override
     public Builder clearOneof(
         com.google.protobuf.Descriptors.OneofDescriptor oneof) {
       return super.clearOneof(oneof);
     }
-    @Override
+    @java.lang.Override
     public Builder setRepeatedField(
         com.google.protobuf.Descriptors.FieldDescriptor field,
-        int index, Object value) {
+        int index, java.lang.Object value) {
       return super.setRepeatedField(field, index, value);
     }
-    @Override
+    @java.lang.Override
     public Builder addRepeatedField(
         com.google.protobuf.Descriptors.FieldDescriptor field,
-        Object value) {
+        java.lang.Object value) {
       return super.addRepeatedField(field, value);
     }
-    @Override
+    @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
       if (other instanceof org.apache.dubbo.sample.HelloReply) {
         return mergeFrom((org.apache.dubbo.sample.HelloReply)other);
@@ -413,12 +411,12 @@
       return this;
     }
 
-    @Override
+    @java.lang.Override
     public final boolean isInitialized() {
       return true;
     }
 
-    @Override
+    @java.lang.Override
     public Builder mergeFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -437,21 +435,21 @@
       return this;
     }
 
-    private Object message_ = "";
+    private java.lang.Object message_ = "";
     /**
      * <code>string message = 1;</code>
      * @return The message.
      */
-    public String getMessage() {
-      Object ref = message_;
-      if (!(ref instanceof String)) {
+    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;
-        String s = bs.toStringUtf8();
+        java.lang.String s = bs.toStringUtf8();
         message_ = s;
         return s;
       } else {
-        return (String) ref;
+        return (java.lang.String) ref;
       }
     }
     /**
@@ -460,11 +458,11 @@
      */
     public com.google.protobuf.ByteString
         getMessageBytes() {
-      Object ref = message_;
+      java.lang.Object ref = message_;
       if (ref instanceof String) {
         com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
-                (String) ref);
+                (java.lang.String) ref);
         message_ = b;
         return b;
       } else {
@@ -477,7 +475,7 @@
      * @return This builder for chaining.
      */
     public Builder setMessage(
-        String value) {
+        java.lang.String value) {
       if (value == null) {
     throw new NullPointerException();
   }
@@ -512,13 +510,13 @@
       onChanged();
       return this;
     }
-    @Override
+    @java.lang.Override
     public final Builder setUnknownFields(
         final com.google.protobuf.UnknownFieldSet unknownFields) {
       return super.setUnknownFields(unknownFields);
     }
 
-    @Override
+    @java.lang.Override
     public final Builder mergeUnknownFields(
         final com.google.protobuf.UnknownFieldSet unknownFields) {
       return super.mergeUnknownFields(unknownFields);
@@ -540,7 +538,7 @@
 
   private static final com.google.protobuf.Parser<HelloReply>
       PARSER = new com.google.protobuf.AbstractParser<HelloReply>() {
-    @Override
+    @java.lang.Override
     public HelloReply parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -553,12 +551,12 @@
     return PARSER;
   }
 
-  @Override
+  @java.lang.Override
   public com.google.protobuf.Parser<HelloReply> getParserForType() {
     return PARSER;
   }
 
-  @Override
+  @java.lang.Override
   public org.apache.dubbo.sample.HelloReply getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
diff --git a/java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java
similarity index 93%
rename from java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java
rename to java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java
index 7acaaf8..71da562 100644
--- a/java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java
+++ b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloReplyOrBuilder.java
@@ -11,7 +11,7 @@
    * <code>string message = 1;</code>
    * @return The message.
    */
-  String getMessage();
+  java.lang.String getMessage();
   /**
    * <code>string message = 1;</code>
    * @return The bytes for message.
diff --git a/java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloRequest.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloRequest.java
similarity index 88%
rename from java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloRequest.java
rename to java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloRequest.java
index d2e253f..b8a490a 100644
--- a/java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloRequest.java
+++ b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloRequest.java
@@ -3,8 +3,6 @@
 
 package org.apache.dubbo.sample;
 
-import org.apache.dubbo.sample.HelloRequestOrBuilder;
-
 /**
  * <pre>
  * The request message containing the user's name.
@@ -15,7 +13,7 @@
 public final class HelloRequest extends
     com.google.protobuf.GeneratedMessageV3 implements
     // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.HelloRequest)
-        HelloRequestOrBuilder {
+    HelloRequestOrBuilder {
 private static final long serialVersionUID = 0L;
   // Use HelloRequest.newBuilder() to construct.
   private HelloRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
@@ -25,14 +23,14 @@
     name_ = "";
   }
 
-  @Override
+  @java.lang.Override
   @SuppressWarnings({"unused"})
-  protected Object newInstance(
+  protected java.lang.Object newInstance(
       UnusedPrivateParameter unused) {
     return new HelloRequest();
   }
 
-  @Override
+  @java.lang.Override
   public final com.google.protobuf.UnknownFieldSet
   getUnknownFields() {
     return this.unknownFields;
@@ -43,7 +41,7 @@
       throws com.google.protobuf.InvalidProtocolBufferException {
     this();
     if (extensionRegistry == null) {
-      throw new NullPointerException();
+      throw new java.lang.NullPointerException();
     }
     com.google.protobuf.UnknownFieldSet.Builder unknownFields =
         com.google.protobuf.UnknownFieldSet.newBuilder();
@@ -56,7 +54,7 @@
             done = true;
             break;
           case 10: {
-            String s = input.readStringRequireUtf8();
+            java.lang.String s = input.readStringRequireUtf8();
 
             name_ = s;
             break;
@@ -85,8 +83,8 @@
     return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_descriptor;
   }
 
-  @Override
-  protected FieldAccessorTable
+  @java.lang.Override
+  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internalGetFieldAccessorTable() {
     return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
@@ -94,20 +92,20 @@
   }
 
   public static final int NAME_FIELD_NUMBER = 1;
-  private volatile Object name_;
+  private volatile java.lang.Object name_;
   /**
    * <code>string name = 1;</code>
    * @return The name.
    */
-  @Override
-  public String getName() {
-    Object ref = name_;
-    if (ref instanceof String) {
-      return (String) ref;
+  @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;
-      String s = bs.toStringUtf8();
+      java.lang.String s = bs.toStringUtf8();
       name_ = s;
       return s;
     }
@@ -116,14 +114,14 @@
    * <code>string name = 1;</code>
    * @return The bytes for name.
    */
-  @Override
+  @java.lang.Override
   public com.google.protobuf.ByteString
       getNameBytes() {
-    Object ref = name_;
-    if (ref instanceof String) {
+    java.lang.Object ref = name_;
+    if (ref instanceof java.lang.String) {
       com.google.protobuf.ByteString b = 
           com.google.protobuf.ByteString.copyFromUtf8(
-              (String) ref);
+              (java.lang.String) ref);
       name_ = b;
       return b;
     } else {
@@ -132,7 +130,7 @@
   }
 
   private byte memoizedIsInitialized = -1;
-  @Override
+  @java.lang.Override
   public final boolean isInitialized() {
     byte isInitialized = memoizedIsInitialized;
     if (isInitialized == 1) return true;
@@ -142,7 +140,7 @@
     return true;
   }
 
-  @Override
+  @java.lang.Override
   public void writeTo(com.google.protobuf.CodedOutputStream output)
                       throws java.io.IOException {
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
@@ -151,7 +149,7 @@
     unknownFields.writeTo(output);
   }
 
-  @Override
+  @java.lang.Override
   public int getSerializedSize() {
     int size = memoizedSize;
     if (size != -1) return size;
@@ -165,8 +163,8 @@
     return size;
   }
 
-  @Override
-  public boolean equals(final Object obj) {
+  @java.lang.Override
+  public boolean equals(final java.lang.Object obj) {
     if (obj == this) {
      return true;
     }
@@ -181,7 +179,7 @@
     return true;
   }
 
-  @Override
+  @java.lang.Override
   public int hashCode() {
     if (memoizedHashCode != 0) {
       return memoizedHashCode;
@@ -265,7 +263,7 @@
         .parseWithIOException(PARSER, input, extensionRegistry);
   }
 
-  @Override
+  @java.lang.Override
   public Builder newBuilderForType() { return newBuilder(); }
   public static Builder newBuilder() {
     return DEFAULT_INSTANCE.toBuilder();
@@ -273,15 +271,15 @@
   public static Builder newBuilder(org.apache.dubbo.sample.HelloRequest prototype) {
     return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
   }
-  @Override
+  @java.lang.Override
   public Builder toBuilder() {
     return this == DEFAULT_INSTANCE
         ? new Builder() : new Builder().mergeFrom(this);
   }
 
-  @Override
+  @java.lang.Override
   protected Builder newBuilderForType(
-      BuilderParent parent) {
+      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
     Builder builder = new Builder(parent);
     return builder;
   }
@@ -295,14 +293,14 @@
   public static final class Builder extends
       com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
       // @@protoc_insertion_point(builder_implements:org.apache.dubbo.samples.HelloRequest)
-      HelloRequestOrBuilder {
+      org.apache.dubbo.sample.HelloRequestOrBuilder {
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
       return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_descriptor;
     }
 
-    @Override
-    protected FieldAccessorTable
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -315,7 +313,7 @@
     }
 
     private Builder(
-        BuilderParent parent) {
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
       super(parent);
       maybeForceBuilderInitialization();
     }
@@ -324,7 +322,7 @@
               .alwaysUseFieldBuilders) {
       }
     }
-    @Override
+    @java.lang.Override
     public Builder clear() {
       super.clear();
       name_ = "";
@@ -332,18 +330,18 @@
       return this;
     }
 
-    @Override
+    @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
       return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_descriptor;
     }
 
-    @Override
+    @java.lang.Override
     public org.apache.dubbo.sample.HelloRequest getDefaultInstanceForType() {
       return org.apache.dubbo.sample.HelloRequest.getDefaultInstance();
     }
 
-    @Override
+    @java.lang.Override
     public org.apache.dubbo.sample.HelloRequest build() {
       org.apache.dubbo.sample.HelloRequest result = buildPartial();
       if (!result.isInitialized()) {
@@ -352,7 +350,7 @@
       return result;
     }
 
-    @Override
+    @java.lang.Override
     public org.apache.dubbo.sample.HelloRequest buildPartial() {
       org.apache.dubbo.sample.HelloRequest result = new org.apache.dubbo.sample.HelloRequest(this);
       result.name_ = name_;
@@ -360,39 +358,39 @@
       return result;
     }
 
-    @Override
+    @java.lang.Override
     public Builder clone() {
       return super.clone();
     }
-    @Override
+    @java.lang.Override
     public Builder setField(
         com.google.protobuf.Descriptors.FieldDescriptor field,
-        Object value) {
+        java.lang.Object value) {
       return super.setField(field, value);
     }
-    @Override
+    @java.lang.Override
     public Builder clearField(
         com.google.protobuf.Descriptors.FieldDescriptor field) {
       return super.clearField(field);
     }
-    @Override
+    @java.lang.Override
     public Builder clearOneof(
         com.google.protobuf.Descriptors.OneofDescriptor oneof) {
       return super.clearOneof(oneof);
     }
-    @Override
+    @java.lang.Override
     public Builder setRepeatedField(
         com.google.protobuf.Descriptors.FieldDescriptor field,
-        int index, Object value) {
+        int index, java.lang.Object value) {
       return super.setRepeatedField(field, index, value);
     }
-    @Override
+    @java.lang.Override
     public Builder addRepeatedField(
         com.google.protobuf.Descriptors.FieldDescriptor field,
-        Object value) {
+        java.lang.Object value) {
       return super.addRepeatedField(field, value);
     }
-    @Override
+    @java.lang.Override
     public Builder mergeFrom(com.google.protobuf.Message other) {
       if (other instanceof org.apache.dubbo.sample.HelloRequest) {
         return mergeFrom((org.apache.dubbo.sample.HelloRequest)other);
@@ -413,12 +411,12 @@
       return this;
     }
 
-    @Override
+    @java.lang.Override
     public final boolean isInitialized() {
       return true;
     }
 
-    @Override
+    @java.lang.Override
     public Builder mergeFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -437,21 +435,21 @@
       return this;
     }
 
-    private Object name_ = "";
+    private java.lang.Object name_ = "";
     /**
      * <code>string name = 1;</code>
      * @return The name.
      */
-    public String getName() {
-      Object ref = name_;
-      if (!(ref instanceof String)) {
+    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;
-        String s = bs.toStringUtf8();
+        java.lang.String s = bs.toStringUtf8();
         name_ = s;
         return s;
       } else {
-        return (String) ref;
+        return (java.lang.String) ref;
       }
     }
     /**
@@ -460,11 +458,11 @@
      */
     public com.google.protobuf.ByteString
         getNameBytes() {
-      Object ref = name_;
+      java.lang.Object ref = name_;
       if (ref instanceof String) {
         com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
-                (String) ref);
+                (java.lang.String) ref);
         name_ = b;
         return b;
       } else {
@@ -477,7 +475,7 @@
      * @return This builder for chaining.
      */
     public Builder setName(
-        String value) {
+        java.lang.String value) {
       if (value == null) {
     throw new NullPointerException();
   }
@@ -512,13 +510,13 @@
       onChanged();
       return this;
     }
-    @Override
+    @java.lang.Override
     public final Builder setUnknownFields(
         final com.google.protobuf.UnknownFieldSet unknownFields) {
       return super.setUnknownFields(unknownFields);
     }
 
-    @Override
+    @java.lang.Override
     public final Builder mergeUnknownFields(
         final com.google.protobuf.UnknownFieldSet unknownFields) {
       return super.mergeUnknownFields(unknownFields);
@@ -540,7 +538,7 @@
 
   private static final com.google.protobuf.Parser<HelloRequest>
       PARSER = new com.google.protobuf.AbstractParser<HelloRequest>() {
-    @Override
+    @java.lang.Override
     public HelloRequest parsePartialFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -553,12 +551,12 @@
     return PARSER;
   }
 
-  @Override
+  @java.lang.Override
   public com.google.protobuf.Parser<HelloRequest> getParserForType() {
     return PARSER;
   }
 
-  @Override
+  @java.lang.Override
   public org.apache.dubbo.sample.HelloRequest getDefaultInstanceForType() {
     return DEFAULT_INSTANCE;
   }
diff --git a/java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
similarity index 94%
rename from java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
rename to java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
index 15b31f2..0573b3d 100644
--- a/java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
+++ b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
@@ -11,7 +11,7 @@
    * <code>string name = 1;</code>
    * @return The name.
    */
-  String getName();
+  java.lang.String getName();
   /**
    * <code>string name = 1;</code>
    * @return The bytes for name.
diff --git a/java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloWorldProto.java b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloWorldProto.java
similarity index 94%
rename from java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloWorldProto.java
rename to java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloWorldProto.java
index fbefd79..aed85f5 100644
--- a/java_interop/protobuf-triple/java/java-client/build/main/java/org/apache/dubbo/sample/HelloWorldProto.java
+++ b/java_interop/protobuf-triple/java/java-client/build/protobuf/java/org/apache/dubbo/sample/HelloWorldProto.java
@@ -32,7 +32,7 @@
   private static  com.google.protobuf.Descriptors.FileDescriptor
       descriptor;
   static {
-    String[] descriptorData = {
+    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" +
@@ -50,13 +50,13 @@
     internal_static_org_apache_dubbo_samples_HelloRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_org_apache_dubbo_samples_HelloRequest_descriptor,
-        new String[] { "Name", });
+        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 String[] { "Message", });
+        new java.lang.String[] { "Message", });
   }
 
   // @@protoc_insertion_point(outer_class_scope)
diff --git a/java_interop/protobuf-triple/java/java-client/pom.xml b/java_interop/protobuf-triple/java/java-client/pom.xml
index 225fde4..77468c7 100644
--- a/java_interop/protobuf-triple/java/java-client/pom.xml
+++ b/java_interop/protobuf-triple/java/java-client/pom.xml
@@ -5,7 +5,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <groupId>org.example</groupId>
-    <artifactId>java</artifactId>
+    <artifactId>java-client</artifactId>
     <version>1.0-SNAPSHOT</version>
 
     <properties>
@@ -21,6 +21,7 @@
             <version>4.13</version>
             <scope>test</scope>
         </dependency>
+
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo</artifactId>
@@ -31,6 +32,32 @@
             <artifactId>protobuf-java</artifactId>
             <version>3.19.4</version>
         </dependency>
+
+        <!-- SLF4J API -->
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>1.7.30</version>
+        </dependency>
+        <!-- Log4j2 to SLF4J Bridge -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <version>2.14.1</version>
+        </dependency>
+        <!-- Log4j2 Core -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>2.14.1</version>
+        </dependency>
+        <!-- Log4j2 API -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>2.14.1</version>
+        </dependency>
+
     </dependencies>
 
     <build>
@@ -45,10 +72,9 @@
             <plugin>
                 <groupId>org.xolstice.maven.plugins</groupId>
                 <artifactId>protobuf-maven-plugin</artifactId>
-
                 <version>0.6.1</version>
                 <configuration>
-<!--                    <outputDirectory>${project.basedir}/../build/protobuf/java</outputDirectory>-->
+                   <outputDirectory>build/protobuf/java</outputDirectory>
                     <!--suppress UnresolvedMavenProperty -->
                     <protocArtifact>com.google.protobuf:protoc:3.19.4:exe:${os.detected.classifier}</protocArtifact>
                     <protocPlugins>
@@ -69,6 +95,25 @@
                     </execution>
                 </executions>
             </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>
 
diff --git a/java_interop/protobuf-triple/java/java-client/src/main/java/org/apache/dubbo/sample/Consumer.java b/java_interop/protobuf-triple/java/java-client/src/main/java/org/apache/dubbo/sample/Consumer.java
index 125758e..acdf7dc 100644
--- a/java_interop/protobuf-triple/java/java-client/src/main/java/org/apache/dubbo/sample/Consumer.java
+++ b/java_interop/protobuf-triple/java/java-client/src/main/java/org/apache/dubbo/sample/Consumer.java
@@ -14,8 +14,6 @@
         DubboBootstrap bootstrap = DubboBootstrap.getInstance();
         ReferenceConfig<Greeter> ref = new ReferenceConfig<>();
         ref.setInterface(Greeter.class);
-        ref.setProtocol(CommonConstants.TRIPLE);
-        ref.setProxy(CommonConstants.NATIVE_STUB);
         ref.setTimeout(3000);
         ref.setUrl("tri://localhost:50052");
         bootstrap.application(new ApplicationConfig("dubbo-test"))
diff --git a/java_interop/protobuf-triple/java/java-client/src/main/proto/greet.proto b/java_interop/protobuf-triple/java/java-client/src/main/proto/greet.proto
index 59ec39e..ff5a800 100644
--- a/java_interop/protobuf-triple/java/java-client/src/main/proto/greet.proto
+++ b/java_interop/protobuf-triple/java/java-client/src/main/proto/greet.proto
@@ -16,7 +16,7 @@
  */
 //protoc --go_out=. --go_opt=paths=source_relative --go-triple_out=. greet.proto
 syntax = "proto3";
-package org.apache.dubbo.samples;
+package org.apache.dubbo.sample;
 
 option go_package = "/proto;proto";
 //package of go
diff --git a/java_interop/protobuf-triple/java/java-client/src/main/resources/log4j2.xml b/java_interop/protobuf-triple/java/java-client/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..69e1321
--- /dev/null
+++ b/java_interop/protobuf-triple/java/java-client/src/main/resources/log4j2.xml
@@ -0,0 +1,29 @@
+<?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.
+  -->
+<Configuration status="WARN">
+    <Appenders>
+        <Console name="Console" target="SYSTEM_OUT" follow="true">
+            <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{Magenta} %style{|-}{White}%highlight{%-5p} [%t] %style{%40.40c}{Cyan}:%style{%-3L}{Blue} %style{-|}{White} %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect)}" disableAnsi="false" charset="UTF-8"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Root level="info">
+            <AppenderRef ref="Console"/>
+        </Root>
+    </Loggers>
+</Configuration>
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
index e783758..23f70f0 100644
--- 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
@@ -25,10 +25,10 @@
 import java.util.function.BiConsumer;
 import java.util.concurrent.CompletableFuture;
 
-public interface Greeter {
+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.samples.Greeter";
+    String SERVICE_NAME = "org.apache.dubbo.sample.Greeter";
 
         /**
          * <pre>
diff --git a/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloReply.java b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloReply.java
index 8712757..ccc8721 100644
--- a/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloReply.java
+++ b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloReply.java
@@ -8,11 +8,11 @@
  * The response message containing the greetings
  * </pre>
  *
- * Protobuf type {@code org.apache.dubbo.samples.HelloReply}
+ * Protobuf type {@code org.apache.dubbo.sample.HelloReply}
  */
 public final class HelloReply extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.HelloReply)
+    // @@protoc_insertion_point(message_implements:org.apache.dubbo.sample.HelloReply)
     HelloReplyOrBuilder {
 private static final long serialVersionUID = 0L;
   // Use HelloReply.newBuilder() to construct.
@@ -80,13 +80,13 @@
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_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.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_fieldAccessorTable
+    return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloReply_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
             org.apache.dubbo.sample.HelloReply.class, org.apache.dubbo.sample.HelloReply.Builder.class);
   }
@@ -288,21 +288,21 @@
    * The response message containing the greetings
    * </pre>
    *
-   * Protobuf type {@code org.apache.dubbo.samples.HelloReply}
+   * 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.HelloReply)
+      // @@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.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_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.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_fieldAccessorTable
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloReply_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
               org.apache.dubbo.sample.HelloReply.class, org.apache.dubbo.sample.HelloReply.Builder.class);
     }
@@ -333,7 +333,7 @@
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloReply_descriptor;
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloReply_descriptor;
     }
 
     @java.lang.Override
@@ -523,10 +523,10 @@
     }
 
 
-    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.HelloReply)
+    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.sample.HelloReply)
   }
 
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.HelloReply)
+  // @@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.sample.HelloReply();
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
index 71da562..79831ab 100644
--- 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
@@ -4,7 +4,7 @@
 package org.apache.dubbo.sample;
 
 public interface HelloReplyOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.HelloReply)
+    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.sample.HelloReply)
     com.google.protobuf.MessageOrBuilder {
 
   /**
diff --git a/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequest.java b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequest.java
index b8a490a..86829ab 100644
--- a/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequest.java
+++ b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequest.java
@@ -8,11 +8,11 @@
  * The request message containing the user's name.
  * </pre>
  *
- * Protobuf type {@code org.apache.dubbo.samples.HelloRequest}
+ * Protobuf type {@code org.apache.dubbo.sample.HelloRequest}
  */
 public final class HelloRequest extends
     com.google.protobuf.GeneratedMessageV3 implements
-    // @@protoc_insertion_point(message_implements:org.apache.dubbo.samples.HelloRequest)
+    // @@protoc_insertion_point(message_implements:org.apache.dubbo.sample.HelloRequest)
     HelloRequestOrBuilder {
 private static final long serialVersionUID = 0L;
   // Use HelloRequest.newBuilder() to construct.
@@ -80,13 +80,13 @@
   }
   public static final com.google.protobuf.Descriptors.Descriptor
       getDescriptor() {
-    return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_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.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_fieldAccessorTable
+    return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloRequest_fieldAccessorTable
         .ensureFieldAccessorsInitialized(
             org.apache.dubbo.sample.HelloRequest.class, org.apache.dubbo.sample.HelloRequest.Builder.class);
   }
@@ -288,21 +288,21 @@
    * The request message containing the user's name.
    * </pre>
    *
-   * Protobuf type {@code org.apache.dubbo.samples.HelloRequest}
+   * 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.HelloRequest)
+      // @@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.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_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.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_fieldAccessorTable
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloRequest_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
               org.apache.dubbo.sample.HelloRequest.class, org.apache.dubbo.sample.HelloRequest.Builder.class);
     }
@@ -333,7 +333,7 @@
     @java.lang.Override
     public com.google.protobuf.Descriptors.Descriptor
         getDescriptorForType() {
-      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_samples_HelloRequest_descriptor;
+      return org.apache.dubbo.sample.HelloWorldProto.internal_static_org_apache_dubbo_sample_HelloRequest_descriptor;
     }
 
     @java.lang.Override
@@ -523,10 +523,10 @@
     }
 
 
-    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.samples.HelloRequest)
+    // @@protoc_insertion_point(builder_scope:org.apache.dubbo.sample.HelloRequest)
   }
 
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.HelloRequest)
+  // @@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.sample.HelloRequest();
diff --git a/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
index 0573b3d..2fc6552 100644
--- a/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
+++ b/java_interop/protobuf-triple/java/java-server/build/protobuf/java/org/apache/dubbo/sample/HelloRequestOrBuilder.java
@@ -4,7 +4,7 @@
 package org.apache.dubbo.sample;
 
 public interface HelloRequestOrBuilder extends
-    // @@protoc_insertion_point(interface_extends:org.apache.dubbo.samples.HelloRequest)
+    // @@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
index aed85f5..26b1cbe 100644
--- 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
@@ -15,15 +15,15 @@
         (com.google.protobuf.ExtensionRegistryLite) registry);
   }
   static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_org_apache_dubbo_samples_HelloRequest_descriptor;
+    internal_static_org_apache_dubbo_sample_HelloRequest_descriptor;
   static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_org_apache_dubbo_samples_HelloRequest_fieldAccessorTable;
+      internal_static_org_apache_dubbo_sample_HelloRequest_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_org_apache_dubbo_samples_HelloReply_descriptor;
+    internal_static_org_apache_dubbo_sample_HelloReply_descriptor;
   static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_org_apache_dubbo_samples_HelloReply_fieldAccessorTable;
+      internal_static_org_apache_dubbo_sample_HelloReply_fieldAccessorTable;
 
   public static com.google.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
@@ -33,29 +33,29 @@
       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"
+      "\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_samples_HelloRequest_descriptor =
+    internal_static_org_apache_dubbo_sample_HelloRequest_descriptor =
       getDescriptor().getMessageTypes().get(0);
-    internal_static_org_apache_dubbo_samples_HelloRequest_fieldAccessorTable = new
+    internal_static_org_apache_dubbo_sample_HelloRequest_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_org_apache_dubbo_samples_HelloRequest_descriptor,
+        internal_static_org_apache_dubbo_sample_HelloRequest_descriptor,
         new java.lang.String[] { "Name", });
-    internal_static_org_apache_dubbo_samples_HelloReply_descriptor =
+    internal_static_org_apache_dubbo_sample_HelloReply_descriptor =
       getDescriptor().getMessageTypes().get(1);
-    internal_static_org_apache_dubbo_samples_HelloReply_fieldAccessorTable = new
+    internal_static_org_apache_dubbo_sample_HelloReply_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_org_apache_dubbo_samples_HelloReply_descriptor,
+        internal_static_org_apache_dubbo_sample_HelloReply_descriptor,
         new java.lang.String[] { "Message", });
   }
 
diff --git a/java_interop/protobuf-triple/java/java-server/pom.xml b/java_interop/protobuf-triple/java/java-server/pom.xml
index 8a52a99..0bdd6a3 100644
--- a/java_interop/protobuf-triple/java/java-server/pom.xml
+++ b/java_interop/protobuf-triple/java/java-server/pom.xml
@@ -5,14 +5,14 @@
     <modelVersion>4.0.0</modelVersion>
 
     <groupId>org.example</groupId>
-    <artifactId>java</artifactId>
+    <artifactId>java-server</artifactId>
     <version>1.0-SNAPSHOT</version>
 
     <properties>
         <maven.compiler.source>8</maven.compiler.source>
         <maven.compiler.target>8</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <dubbo.version>3.1.7</dubbo.version>
+        <dubbo.version>3.3.0-beta.1</dubbo.version>
     </properties>
     <dependencies>
         <dependency>
@@ -27,16 +27,36 @@
             <version>${dubbo.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>
-            <type>pom</type>
-            <version>${dubbo.version}</version>
-        </dependency>
-        <dependency>
             <groupId>com.google.protobuf</groupId>
             <artifactId>protobuf-java</artifactId>
             <version>3.19.4</version>
         </dependency>
+
+        <!-- SLF4J API -->
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>1.7.30</version>
+        </dependency>
+        <!-- Log4j2 to SLF4J Bridge -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <version>2.14.1</version>
+        </dependency>
+        <!-- Log4j2 Core -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>2.14.1</version>
+        </dependency>
+        <!-- Log4j2 API -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>2.14.1</version>
+        </dependency>
+
     </dependencies>
 
     <build>
@@ -51,10 +71,10 @@
             <plugin>
                 <groupId>org.xolstice.maven.plugins</groupId>
                 <artifactId>protobuf-maven-plugin</artifactId>
-                <outputDirectory>${project.basedir}/../build/protobuf/java</outputDirectory>
                 <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>
@@ -73,6 +93,25 @@
                     </execution>
                 </executions>
             </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>
 
diff --git a/java_interop/protobuf-triple/java/java-server/src/main/java/org/apache/dubbo/sample/Provider.java b/java_interop/protobuf-triple/java/java-server/src/main/java/org/apache/dubbo/sample/Provider.java
index e4da7dd..2b6231b 100644
--- a/java_interop/protobuf-triple/java/java-server/src/main/java/org/apache/dubbo/sample/Provider.java
+++ b/java_interop/protobuf-triple/java/java-server/src/main/java/org/apache/dubbo/sample/Provider.java
@@ -4,7 +4,6 @@
 import org.apache.dubbo.common.constants.CommonConstants;
 import org.apache.dubbo.config.ApplicationConfig;
 import org.apache.dubbo.config.ProtocolConfig;
-import org.apache.dubbo.config.RegistryConfig;
 import org.apache.dubbo.config.ServiceConfig;
 import org.apache.dubbo.config.bootstrap.DubboBootstrap;
 
@@ -18,7 +17,7 @@
 
         DubboBootstrap bootstrap = DubboBootstrap.getInstance();
         bootstrap.application(new ApplicationConfig("java-go-sample-server"))
-                .protocol(new ProtocolConfig(CommonConstants.TRIPLE,36969))
+                .protocol(new ProtocolConfig(CommonConstants.TRIPLE,50052))
                 .service(service)
                 .start();
         System.out.println("Dubbo triple java server started");
diff --git a/java_interop/protobuf-triple/java/java-server/src/main/resources/log4j2.xml b/java_interop/protobuf-triple/java/java-server/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..69e1321
--- /dev/null
+++ b/java_interop/protobuf-triple/java/java-server/src/main/resources/log4j2.xml
@@ -0,0 +1,29 @@
+<?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.
+  -->
+<Configuration status="WARN">
+    <Appenders>
+        <Console name="Console" target="SYSTEM_OUT" follow="true">
+            <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{Magenta} %style{|-}{White}%highlight{%-5p} [%t] %style{%40.40c}{Cyan}:%style{%-3L}{Blue} %style{-|}{White} %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect)}" disableAnsi="false" charset="UTF-8"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Root level="info">
+            <AppenderRef ref="Console"/>
+        </Root>
+    </Loggers>
+</Configuration>
diff --git a/java_interop/protobuf-triple/java/pom.xml b/java_interop/protobuf-triple/java/pom.xml
index 8a52a99..935ee21 100644
--- a/java_interop/protobuf-triple/java/pom.xml
+++ b/java_interop/protobuf-triple/java/pom.xml
@@ -7,73 +7,11 @@
     <groupId>org.example</groupId>
     <artifactId>java</artifactId>
     <version>1.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
 
-    <properties>
-        <maven.compiler.source>8</maven.compiler.source>
-        <maven.compiler.target>8</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <dubbo.version>3.1.7</dubbo.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-dependencies-zookeeper-curator5</artifactId>
-            <type>pom</type>
-            <version>${dubbo.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.protobuf</groupId>
-            <artifactId>protobuf-java</artifactId>
-            <version>3.19.4</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>
-                <outputDirectory>${project.basedir}/../build/protobuf/java</outputDirectory>
-                <version>0.6.1</version>
-                <configuration>
-                    <protocArtifact>com.google.protobuf:protoc:3.19.4:exe:${os.detected.classifier}</protocArtifact>
-                    <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>
-        </plugins>
-    </build>
+    <modules>
+        <module>java-client</module>
+        <module>java-server</module>
+    </modules>
 
 </project>
\ No newline at end of file
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/logger/level/cmd/main.go b/logger/level/cmd/main.go
index b737eb4..9c1e1c8 100644
--- a/logger/level/cmd/main.go
+++ b/logger/level/cmd/main.go
@@ -36,7 +36,10 @@
 			protocol.WithTriple(),
 			protocol.WithPort(20000),
 		),
-		dubbo.WithLogger(log.WithLevel("warn")),
+		dubbo.WithLogger(
+			log.WithLevel("warn"),
+			log.WithZap(),
+		),
 	)
 	if err != nil {
 		panic(err)
diff --git a/registry/nacos/README.md b/registry/nacos/README.md
index bc71d81..da5ddb0 100644
--- a/registry/nacos/README.md
+++ b/registry/nacos/README.md
@@ -1,11 +1,11 @@
-# Zookeeper as registry
+# Nacos as registry
 
-This example shows dubbo-go's service discovery feature with Zookeeper as registry.
+This example shows dubbo-go's service discovery feature with Nacos as registry.
 
 ## How to run
 
 ### Start Nacos server
-Follow this instruction to install and start Nacos server.
+Follow this instruction to [install and start Nacos server](https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/).
 
 ### Run server
 ```shell
diff --git a/retry/README_CN.md b/retry/README_CN.md
index a08de56..10e3b20 100644
--- a/retry/README_CN.md
+++ b/retry/README_CN.md
@@ -28,7 +28,7 @@
 
 package greet;
 
-option go_package = "github.com/apache/dubbo-go-samples/timeout/proto;greet";
+option go_package = "github.com/apache/dubbo-go-samples/retry/proto;greet";
 
 message GreetRequest {
   string name = 1;
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/GreetRequest.java b/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequest.java
deleted file mode 100644
index 1f7b834..0000000
--- a/service_discovery/service/java-client/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_ = "";
-  }
-
-  @java.lang.Override
-  @SuppressWarnings({"unused"})
-  protected java.lang.Object newInstance(
-      UnusedPrivateParameter unused) {
-    return new GreetRequest();
-  }
-
-  @java.lang.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 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_GreetRequest_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
-        .ensureFieldAccessorsInitialized(
-            org.apache.dubbo.samples.proto.GreetRequest.class, org.apache.dubbo.samples.proto.GreetRequest.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.GreetRequest)) {
-      return super.equals(obj);
-    }
-    org.apache.dubbo.samples.proto.GreetRequest other = (org.apache.dubbo.samples.proto.GreetRequest) 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.GreetRequest parseFrom(
-      java.nio.ByteBuffer data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static org.apache.dubbo.samples.proto.GreetRequest 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(
-      com.google.protobuf.ByteString data)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static org.apache.dubbo.samples.proto.GreetRequest 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)
-      throws com.google.protobuf.InvalidProtocolBufferException {
-    return PARSER.parseFrom(data);
-  }
-  public static org.apache.dubbo.samples.proto.GreetRequest 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)
-      throws java.io.IOException {
-    return com.google.protobuf.GeneratedMessageV3
-        .parseWithIOException(PARSER, input);
-  }
-  public static org.apache.dubbo.samples.proto.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 org.apache.dubbo.samples.proto.GreetRequest 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(
-      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(
-      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(
-      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.GreetRequest 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.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)
-      org.apache.dubbo.samples.proto.GreetRequestOrBuilder {
-    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;
-    }
-
-    @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
-          .ensureFieldAccessorsInitialized(
-              org.apache.dubbo.samples.proto.GreetRequest.class, org.apache.dubbo.samples.proto.GreetRequest.Builder.class);
-    }
-
-    // Construct using org.apache.dubbo.samples.proto.GreetRequest.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_GreetRequest_descriptor;
-    }
-
-    @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest getDefaultInstanceForType() {
-      return org.apache.dubbo.samples.proto.GreetRequest.getDefaultInstance();
-    }
-
-    @java.lang.Override
-    public org.apache.dubbo.samples.proto.GreetRequest build() {
-      org.apache.dubbo.samples.proto.GreetRequest result = buildPartial();
-      if (!result.isInitialized()) {
-        throw newUninitializedMessageException(result);
-      }
-      return result;
-    }
-
-    @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_;
-      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.GreetRequest) {
-        return mergeFrom((org.apache.dubbo.samples.proto.GreetRequest)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_;
-        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.GreetRequest parsedMessage = null;
-      try {
-        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        parsedMessage = (org.apache.dubbo.samples.proto.GreetRequest) 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.GreetRequest)
-  }
-
-  // @@protoc_insertion_point(class_scope:org.apache.dubbo.samples.proto.GreetRequest)
-  private static final org.apache.dubbo.samples.proto.GreetRequest DEFAULT_INSTANCE;
-  static {
-    DEFAULT_INSTANCE = new org.apache.dubbo.samples.proto.GreetRequest();
-  }
-
-  public static org.apache.dubbo.samples.proto.GreetRequest getDefaultInstance() {
-    return DEFAULT_INSTANCE;
-  }
-
-  private static final com.google.protobuf.Parser<GreetRequest>
-      PARSER = new com.google.protobuf.AbstractParser<GreetRequest>() {
-    @java.lang.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;
-  }
-
-  @java.lang.Override
-  public com.google.protobuf.Parser<GreetRequest> getParserForType() {
-    return PARSER;
-  }
-
-  @java.lang.Override
-  public org.apache.dubbo.samples.proto.GreetRequest getDefaultInstanceForType() {
-    return DEFAULT_INSTANCE;
-  }
-
-}
-
diff --git a/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java b/service_discovery/service/java-client/src/main/java/org/apache/dubbo/samples/proto/GreetRequestOrBuilder.java
deleted file mode 100644
index 63353e9..0000000
--- a/service_discovery/service/java-client/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.
-   */
-  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/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
diff --git a/start_integrate_test.sh b/start_integrate_test.sh
index 5c77200..2bdbe69 100755
--- a/start_integrate_test.sh
+++ b/start_integrate_test.sh
@@ -61,9 +61,6 @@
 #timeout
 array+=("timeout")
 
-#multirpc
-array+=("multirpc")
-
 #healthcheck
 array+=("healthcheck")
 
@@ -87,6 +84,7 @@
 array+=("rpc/triple/pb")
 array+=("rpc/triple/pb2")
 array+=("rpc/triple/pb-json")
+array+=("rpc/multi-protocols")
 
 # tls
 #array+=("compatibility/tls/dubbo")# tls.LoadX509KeyPair(certs{../../../x509/server1_cert.pem}, privateKey{../../../x509/server1_key.pem}) = err:open ../../../x509/server1_cert.pem: no such file or directory
@@ -120,8 +118,9 @@
 # config yaml
 array+=("config_yaml")
 # service_discovery
-array+=("service_discovery/interface")
-array+=("service_discovery/service")
+array+=("java_interop/service_discovery/interface")
+array+=("java_interop/service_discovery/service")
+
 # replace tls config
 echo "The prefix of certificate path of the following files were replaced to \"$(pwd)/tls\"."
 find "$(pwd)/tls" -type f -name '*.yml' -print0 | xargs -0 -n1