Merge pull request #771 from chickenlj/non-protobuf-triple

add non-protobuf triple sample
diff --git a/java_interop/non-protobuf-triple/go-client/client.go b/java_interop/non-protobuf-triple/go-client/client.go
new file mode 100755
index 0000000..6130f35
--- /dev/null
+++ b/java_interop/non-protobuf-triple/go-client/client.go
@@ -0,0 +1,71 @@
+/*
+ * 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 main
+
+import (
+	"context"
+	"dubbo.apache.org/dubbo-go/v3"
+	"dubbo.apache.org/dubbo-go/v3/client"
+	"dubbo.apache.org/dubbo-go/v3/common/constant"
+	_ "dubbo.apache.org/dubbo-go/v3/imports"
+	// 	"github.com/apache/dubbo-go-hessian2/java8_time"
+	// 	"github.com/apache/dubbo-go-hessian2/java_exception"
+	// 	"github.com/apache/dubbo-go-hessian2/java_sql_time"
+	// 	"github.com/apache/dubbo-go-hessian2/java_util"
+	greet "github.com/apache/dubbo-go-samples/java_interop/non-protobuf-triple/proto"
+	"github.com/dubbogo/gost/log/logger"
+	//	java_math "github.com/dubbogo/gost/math/big"
+)
+
+func main() {
+	ins, err := dubbo.NewInstance(
+		dubbo.WithName("dubbo_interop_non_idl_triple_client"),
+	)
+	if err != nil {
+		panic(err)
+	}
+
+	cli, err := ins.NewClient(
+		client.WithClientProtocolTriple(),
+		client.WithClientSerialization(constant.Hessian2Serialization),
+		client.WithClientURL("127.0.0.1:50052"),
+	)
+
+	if err != nil {
+		panic(err)
+	}
+
+	svc, err := greet.NewGreetingsService(cli)
+	if err != nil {
+		panic(err)
+	}
+
+	resp, err := svc.Greet(context.Background(), &greet.GreetRequest{
+		Name: "dubbo-go",
+		// 		Way:              greet.GreetEnum_GREET_ENUM_1,
+		// 		Time:             &java_sql_time.Time{},
+		// 		Duration:         &java8_time.Duration{},
+		// 		RuntimeException: &java_exception.RuntimeException{},
+		// 		Uuid:             &java_util.UUID{},
+		// 		BigInteger:       &java_math.Integer{},
+	})
+	if err != nil {
+		logger.Error(err)
+	}
+	logger.Infof("Greet response: %s", resp.Greeting)
+}
diff --git a/java_interop/non-protobuf-triple/go-server/server.go b/java_interop/non-protobuf-triple/go-server/server.go
new file mode 100755
index 0000000..fc793ef
--- /dev/null
+++ b/java_interop/non-protobuf-triple/go-server/server.go
@@ -0,0 +1,57 @@
+/*
+ * 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 main
+
+import (
+	"context"
+	"dubbo.apache.org/dubbo-go/v3/common/constant"
+	_ "dubbo.apache.org/dubbo-go/v3/imports"
+	"dubbo.apache.org/dubbo-go/v3/protocol"
+	"dubbo.apache.org/dubbo-go/v3/server"
+	"fmt"
+	greet "github.com/apache/dubbo-go-samples/java_interop/non-protobuf-triple/proto"
+)
+
+type GreetTripleServer struct {
+}
+
+func (srv *GreetTripleServer) Greet(ctx context.Context, req *greet.GreetRequest) (*greet.GreetResponse, error) {
+	resp := &greet.GreetResponse{Greeting: fmt.Sprintf("The name of the request is:	 %s", req.Name)}
+	return resp, nil
+}
+
+func main() {
+	srv, err := server.NewServer(
+		server.WithServerProtocol(
+			protocol.WithPort(50052),
+			protocol.WithTriple(),
+		),
+		server.WithServerSerialization(constant.Hessian2Serialization),
+	)
+	if err != nil {
+		panic(err) // 这里也有错误检查,确保每次赋值后都检查了 err
+	}
+
+	if err := greet.RegisterGreetingsServiceHandler(srv, &GreetTripleServer{}); err != nil {
+		panic(err) // 这里的错误处理也是正确的
+	}
+
+	if err := srv.Serve(); err != nil {
+		panic(err) // 启动服务器的错误处理也没有问题
+	}
+}
diff --git a/java_interop/non-protobuf-triple/java-client/README.md b/java_interop/non-protobuf-triple/java-client/README.md
new file mode 100644
index 0000000..5b9de00
--- /dev/null
+++ b/java_interop/non-protobuf-triple/java-client/README.md
@@ -0,0 +1 @@
+mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.tri.hessian2.client.Application"
\ No newline at end of file
diff --git a/java_interop/non-protobuf-triple/java-client/pom.xml b/java_interop/non-protobuf-triple/java-client/pom.xml
new file mode 100644
index 0000000..4c0daca
--- /dev/null
+++ b/java_interop/non-protobuf-triple/java-client/pom.xml
@@ -0,0 +1,113 @@
+<?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">
+    <parent>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>31</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>dubbo-samples-api</artifactId>
+    <name>java-client</name>
+    <description>Java Client</description>
+
+    <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.3</dubbo.version>
+        <log4j2.version>2.20.0</log4j2.version>
+        <junit5.version>5.9.2</junit5.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo</artifactId>
+            <version>${dubbo.version}</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>${log4j2.version}</version>
+        </dependency>
+        <!-- Log4j2 Core -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+        <!-- Log4j2 API -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${junit5.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${junit5.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-params</artifactId>
+            <version>${junit5.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <compilerArgs>
+                        <compilerArg>-proc:none</compilerArg>
+                    </compilerArgs>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/java_interop/non-protobuf-triple/java-client/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetRequest.java b/java_interop/non-protobuf-triple/java-client/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetRequest.java
new file mode 100644
index 0000000..1fb28bf
--- /dev/null
+++ b/java_interop/non-protobuf-triple/java-client/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetRequest.java
@@ -0,0 +1,29 @@
+/*
+ * 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.tri.hessian2.api;
+
+public class GreetRequest implements java.io.Serializable {
+	private String name;
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+}
diff --git a/java_interop/non-protobuf-triple/java-client/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetResponse.java b/java_interop/non-protobuf-triple/java-client/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetResponse.java
new file mode 100644
index 0000000..3df8ba6
--- /dev/null
+++ b/java_interop/non-protobuf-triple/java-client/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetResponse.java
@@ -0,0 +1,29 @@
+/*
+ * 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.tri.hessian2.api;
+
+public class GreetResponse implements java.io.Serializable {
+	private String greeting;
+
+	public String getGreeting() {
+		return greeting;
+	}
+
+	public void setGreeting(String greeting) {
+		this.greeting = greeting;
+	}
+}
diff --git a/java_interop/non-protobuf-triple/java-client/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetingsService.java b/java_interop/non-protobuf-triple/java-client/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetingsService.java
new file mode 100644
index 0000000..e0a3d06
--- /dev/null
+++ b/java_interop/non-protobuf-triple/java-client/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetingsService.java
@@ -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.
+ */
+
+package org.apache.dubbo.tri.hessian2.api;
+
+public interface GreetingsService {
+    GreetResponse Greet(GreetRequest req);
+}
diff --git a/java_interop/non-protobuf-triple/java-client/src/main/java/org/apache/dubbo/tri/hessian2/client/Application.java b/java_interop/non-protobuf-triple/java-client/src/main/java/org/apache/dubbo/tri/hessian2/client/Application.java
new file mode 100644
index 0000000..66cc7ab
--- /dev/null
+++ b/java_interop/non-protobuf-triple/java-client/src/main/java/org/apache/dubbo/tri/hessian2/client/Application.java
@@ -0,0 +1,47 @@
+/*
+ * 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.tri.hessian2.client;
+
+import java.io.IOException;
+
+import org.apache.dubbo.config.ReferenceConfig;
+import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+import org.apache.dubbo.config.bootstrap.builders.ReferenceBuilder;
+import org.apache.dubbo.tri.hessian2.api.GreetRequest;
+import org.apache.dubbo.tri.hessian2.api.GreetingsService;
+
+public class Application {
+    public static void main(String[] args) throws IOException {
+        ReferenceConfig<GreetingsService> reference =
+                ReferenceBuilder.<GreetingsService>newBuilder()
+                .interfaceClass(GreetingsService.class)
+                .url("tri://localhost:50052")
+                .build();
+        DubboBootstrap.getInstance().reference(reference).start();
+        GreetingsService service = reference.get();
+
+        GreetRequest request = new GreetRequest();
+        request.setName("world");
+        String message = service.Greet(request).getGreeting();
+
+        System.out.println("Receive result ======> " + message);
+        System.in.read();
+        System.exit(0);
+    }
+
+}
diff --git a/java_interop/non-protobuf-triple/java-client/src/main/resources/log4j2.xml b/java_interop/non-protobuf-triple/java-client/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..69e1321
--- /dev/null
+++ b/java_interop/non-protobuf-triple/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/non-protobuf-triple/java-server/README.md b/java_interop/non-protobuf-triple/java-server/README.md
new file mode 100644
index 0000000..41324f6
--- /dev/null
+++ b/java_interop/non-protobuf-triple/java-server/README.md
@@ -0,0 +1 @@
+`mvn -e clean compile exec:java -Dexec.mainClass="org.apache.dubbo.tri.hessian2.provider.Application"`
\ No newline at end of file
diff --git a/java_interop/non-protobuf-triple/java-server/pom.xml b/java_interop/non-protobuf-triple/java-server/pom.xml
new file mode 100644
index 0000000..03068e4
--- /dev/null
+++ b/java_interop/non-protobuf-triple/java-server/pom.xml
@@ -0,0 +1,113 @@
+<?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">
+    <parent>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>31</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>jave-server</artifactId>
+    <name>Java Server</name>
+    <description>Java Server</description>
+
+    <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.3</dubbo.version>
+        <log4j2.version>2.20.0</log4j2.version>
+        <junit5.version>5.9.2</junit5.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo</artifactId>
+            <version>${dubbo.version}</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>${log4j2.version}</version>
+        </dependency>
+        <!-- Log4j2 Core -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+        <!-- Log4j2 API -->
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${junit5.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${junit5.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-params</artifactId>
+            <version>${junit5.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <compilerArgs>
+                        <compilerArg>-proc:none</compilerArg>
+                    </compilerArgs>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetRequest.java b/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetRequest.java
new file mode 100644
index 0000000..1fb28bf
--- /dev/null
+++ b/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetRequest.java
@@ -0,0 +1,29 @@
+/*
+ * 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.tri.hessian2.api;
+
+public class GreetRequest implements java.io.Serializable {
+	private String name;
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+}
diff --git a/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetResponse.java b/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetResponse.java
new file mode 100644
index 0000000..3df8ba6
--- /dev/null
+++ b/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetResponse.java
@@ -0,0 +1,29 @@
+/*
+ * 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.tri.hessian2.api;
+
+public class GreetResponse implements java.io.Serializable {
+	private String greeting;
+
+	public String getGreeting() {
+		return greeting;
+	}
+
+	public void setGreeting(String greeting) {
+		this.greeting = greeting;
+	}
+}
diff --git a/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetingsService.java b/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetingsService.java
new file mode 100644
index 0000000..ddfb687
--- /dev/null
+++ b/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/api/GreetingsService.java
@@ -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.
+ */
+
+package org.apache.dubbo.tri.hessian2.api;
+
+public interface GreetingsService {
+    GreetResponse greet(GreetRequest req);
+}
diff --git a/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/provider/Application.java b/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/provider/Application.java
new file mode 100644
index 0000000..08cdc54
--- /dev/null
+++ b/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/provider/Application.java
@@ -0,0 +1,35 @@
+/*
+ * 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.tri.hessian2.provider;
+
+import org.apache.dubbo.config.bootstrap.DubboBootstrap;
+import org.apache.dubbo.config.bootstrap.builders.ApplicationBuilder;
+import org.apache.dubbo.config.bootstrap.builders.ProtocolBuilder;
+import org.apache.dubbo.config.bootstrap.builders.ServiceBuilder;
+import org.apache.dubbo.tri.hessian2.api.GreetingsService;
+
+public class Application {
+    public static void main(String[] args) {
+        DubboBootstrap.getInstance()
+                .application(ApplicationBuilder.newBuilder().name("non-protobuf-triple").logger("slf4j").build())
+                .protocol(ProtocolBuilder.newBuilder().name("tri").port(50052).build())
+                .service(ServiceBuilder.newBuilder().interfaceClass(GreetingsService.class).ref(new GreetingsServiceImpl()).build())
+                .start()
+                .await();
+    }
+}
diff --git a/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/provider/GreetingsServiceImpl.java b/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/provider/GreetingsServiceImpl.java
new file mode 100644
index 0000000..89fddf9
--- /dev/null
+++ b/java_interop/non-protobuf-triple/java-server/src/main/java/org/apache/dubbo/tri/hessian2/provider/GreetingsServiceImpl.java
@@ -0,0 +1,31 @@
+/*
+ * 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.tri.hessian2.provider;
+
+import org.apache.dubbo.tri.hessian2.api.GreetRequest;
+import org.apache.dubbo.tri.hessian2.api.GreetResponse;
+import org.apache.dubbo.tri.hessian2.api.GreetingsService;
+
+public class GreetingsServiceImpl implements GreetingsService {
+    @Override
+    public GreetResponse greet(GreetRequest req) {
+        GreetResponse response = new GreetResponse();
+        response.setGreeting("hi, " + req.getName());
+        return response;
+    }
+}
diff --git a/java_interop/non-protobuf-triple/java-server/src/main/resources/log4j2.xml b/java_interop/non-protobuf-triple/java-server/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..69e1321
--- /dev/null
+++ b/java_interop/non-protobuf-triple/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/non-protobuf-triple/proto/build.sh b/java_interop/non-protobuf-triple/proto/build.sh
new file mode 100755
index 0000000..21dfd3b
--- /dev/null
+++ b/java_interop/non-protobuf-triple/proto/build.sh
@@ -0,0 +1,4 @@
+protoc -I ./ \
+  --go-hessian2_out=./ --go-hessian2_opt=paths=source_relative \
+  --go-triple_out=./  --go-triple_opt=paths=source_relative \
+  ./greet.proto
diff --git a/java_interop/non-protobuf-triple/proto/greet.hessian2.go b/java_interop/non-protobuf-triple/proto/greet.hessian2.go
new file mode 100755
index 0000000..7bbf6ac
--- /dev/null
+++ b/java_interop/non-protobuf-triple/proto/greet.hessian2.go
@@ -0,0 +1,63 @@
+// Code generated by protoc-gen-go-dubbo. DO NOT EDIT.
+
+// Source: greet.proto
+// Package: org_apache_dubbo_tri_hessian2_api
+
+package greet
+
+import (
+	dubbo_go_hessian2 "github.com/apache/dubbo-go-hessian2"
+)
+
+type GreetRequest struct {
+	Name string
+}
+
+func (x *GreetRequest) JavaClassName() string {
+	return "org.apache.dubbo.tri.hessian2.api.GreetRequest"
+}
+
+func (x *GreetRequest) String() string {
+	e := dubbo_go_hessian2.NewEncoder()
+	err := e.Encode(x)
+	if err != nil {
+		return ""
+	}
+	return string(e.Buffer())
+}
+
+func (x *GreetRequest) GetName() string {
+	if x != nil {
+		return x.Name
+	}
+	return ""
+}
+
+type GreetResponse struct {
+	Greeting string
+}
+
+func (x *GreetResponse) JavaClassName() string {
+	return "org.apache.dubbo.tri.hessian2.api.GreetResponse"
+}
+
+func (x *GreetResponse) String() string {
+	e := dubbo_go_hessian2.NewEncoder()
+	err := e.Encode(x)
+	if err != nil {
+		return ""
+	}
+	return string(e.Buffer())
+}
+
+func (x *GreetResponse) GetGreeting() string {
+	if x != nil {
+		return x.Greeting
+	}
+	return ""
+}
+
+func init() {
+	dubbo_go_hessian2.RegisterPOJO(new(GreetRequest))
+	dubbo_go_hessian2.RegisterPOJO(new(GreetResponse))
+}
diff --git a/java_interop/non-protobuf-triple/proto/greet.proto b/java_interop/non-protobuf-triple/proto/greet.proto
new file mode 100755
index 0000000..c2b3573
--- /dev/null
+++ b/java_interop/non-protobuf-triple/proto/greet.proto
@@ -0,0 +1,56 @@
+/*
+ * 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.
+ */
+
+syntax = "proto3";
+
+package org.apache.dubbo.tri.hessian2.api;
+
+//go package
+option go_package = "github.com/apache/dubbo-go-samples/java_interop/non-protobuf-triple/proto;greet";
+//java package
+option java_package = 'org.apache.dubbo.tri.hessian2.api';
+option java_multiple_files = true;
+option java_outer_classname = "GreetingsService";
+option objc_class_prefix = "WH";
+
+import "hessian2_extend/hessian2_extend.proto";
+
+
+message GreetRequest {
+
+  string name = 1;
+
+  option (hessian2_extend.message_extend) = {
+    java_class_name: "org.apache.dubbo.tri.hessian2.api.GreetRequest";
+  };
+}
+
+message GreetResponse {
+  string greeting = 1;
+  option (hessian2_extend.message_extend) = {
+    java_class_name: "org.apache.dubbo.tri.hessian2.api.GreetResponse";
+  };
+}
+
+service GreetingsService  {
+  rpc Greet(GreetRequest) returns (GreetResponse) {
+    option (hessian2_extend.method_extend) = {
+      method_name: "greet";
+    };
+  }
+
+}
\ No newline at end of file
diff --git a/java_interop/non-protobuf-triple/proto/greet.triple.go b/java_interop/non-protobuf-triple/proto/greet.triple.go
new file mode 100755
index 0000000..2cb1942
--- /dev/null
+++ b/java_interop/non-protobuf-triple/proto/greet.triple.go
@@ -0,0 +1,122 @@
+// Code generated by protoc-gen-triple. DO NOT EDIT.
+//
+// Source: greet.proto
+package greet
+
+import (
+	"context"
+)
+
+import (
+	"dubbo.apache.org/dubbo-go/v3"
+	"dubbo.apache.org/dubbo-go/v3/client"
+	"dubbo.apache.org/dubbo-go/v3/common"
+	"dubbo.apache.org/dubbo-go/v3/common/constant"
+	"dubbo.apache.org/dubbo-go/v3/protocol/triple/triple_protocol"
+	"dubbo.apache.org/dubbo-go/v3/server"
+)
+
+// This is a compile-time assertion to ensure that this generated file and the Triple package
+// are compatible. If you get a compiler error that this constant is not defined, this code was
+// generated with a version of Triple newer than the one compiled into your binary. You can fix the
+// problem by either regenerating this code with an older version of Triple or updating the Triple
+// version compiled into your binary.
+const _ = triple_protocol.IsAtLeastVersion0_1_0
+
+const (
+	// GreetingsServiceName is the fully-qualified name of the GreetingsService service.
+	GreetingsServiceName = "org.apache.dubbo.tri.hessian2.api.GreetingsService"
+)
+
+// These constants are the fully-qualified names of the RPCs defined in this package. They're
+// exposed at runtime as procedure and as the final two segments of the HTTP route.
+//
+// Note that these are different from the fully-qualified method names used by
+// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to
+// reflection-formatted method names, remove the leading slash and convert the remaining slash to a
+// period.
+const (
+	// GreetingsServiceGreetProcedure is the fully-qualified name of the GreetingsService's Greet RPC.
+	GreetingsServiceGreetProcedure = "/org.apache.dubbo.tri.hessian2.api.GreetingsService/Greet"
+)
+
+var (
+	_ GreetingsService = (*GreetingsServiceImpl)(nil)
+)
+
+// GreetingsService is a client for the org.apache.dubbo.tri.hessian2.api.GreetingsService service.
+type GreetingsService interface {
+	Greet(ctx context.Context, req *GreetRequest, opts ...client.CallOption) (*GreetResponse, error)
+}
+
+// NewGreetingsService constructs a client for the greet.GreetingsService service.
+func NewGreetingsService(cli *client.Client, opts ...client.ReferenceOption) (GreetingsService, error) {
+	conn, err := cli.DialWithInfo("org.apache.dubbo.tri.hessian2.api.GreetingsService", &GreetingsService_ClientInfo, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return &GreetingsServiceImpl{
+		conn: conn,
+	}, nil
+}
+
+func SetConsumerGreetingsService(srv common.RPCService) {
+	dubbo.SetConsumerServiceWithInfo(srv, &GreetingsService_ClientInfo)
+}
+
+// GreetingsServiceImpl implements GreetingsService.
+type GreetingsServiceImpl struct {
+	conn *client.Connection
+}
+
+func (c *GreetingsServiceImpl) Greet(ctx context.Context, req *GreetRequest, opts ...client.CallOption) (*GreetResponse, error) {
+	resp := new(GreetResponse)
+	if err := c.conn.CallUnary(ctx, []interface{}{req}, resp, "Greet", opts...); err != nil {
+		return nil, err
+	}
+	return resp, nil
+}
+
+var GreetingsService_ClientInfo = client.ClientInfo{
+	InterfaceName: "org.apache.dubbo.tri.hessian2.api.GreetingsService",
+	MethodNames:   []string{"Greet"},
+	ConnectionInjectFunc: func(dubboCliRaw interface{}, conn *client.Connection) {
+		dubboCli := dubboCliRaw.(*GreetingsServiceImpl)
+		dubboCli.conn = conn
+	},
+}
+
+// GreetingsServiceHandler is an implementation of the org.apache.dubbo.tri.hessian2.api.GreetingsService service.
+type GreetingsServiceHandler interface {
+	Greet(context.Context, *GreetRequest) (*GreetResponse, error)
+}
+
+func RegisterGreetingsServiceHandler(srv *server.Server, hdlr GreetingsServiceHandler, opts ...server.ServiceOption) error {
+	return srv.Register(hdlr, &GreetingsService_ServiceInfo, opts...)
+}
+
+func SetProviderGreetingsService(srv common.RPCService) {
+	dubbo.SetProviderServiceWithInfo(srv, &GreetingsService_ServiceInfo)
+}
+
+var GreetingsService_ServiceInfo = server.ServiceInfo{
+	InterfaceName: "org.apache.dubbo.tri.hessian2.api.GreetingsService",
+	ServiceType:   (*GreetingsServiceHandler)(nil),
+	Methods: []server.MethodInfo{
+		{
+			Name: "Greet",
+			Type: constant.CallUnary,
+			ReqInitFunc: func() interface{} {
+				return new(GreetRequest)
+			},
+			MethodFunc: func(ctx context.Context, args []interface{}, handler interface{}) (interface{}, error) {
+				req := args[0].(*GreetRequest)
+				res, err := handler.(GreetingsServiceHandler).Greet(ctx, req)
+				if err != nil {
+					return nil, err
+				}
+				return triple_protocol.NewResponse(res), nil
+			},
+		},
+	},
+}
diff --git a/java_interop/non-protobuf-triple/proto/greet_multi.proto b/java_interop/non-protobuf-triple/proto/greet_multi.proto
new file mode 100755
index 0000000..35e22b2
--- /dev/null
+++ b/java_interop/non-protobuf-triple/proto/greet_multi.proto
@@ -0,0 +1,88 @@
+/*
+ * 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.
+ */
+
+syntax = "proto3";
+
+package org.apache.dubbo.tri.hessian2.api;
+
+//go package
+option go_package = "github.com/apache/dubbo-go-samples/java_interop/non-protobuf-triple/proto;greet";
+//java package
+option java_package = 'org.apache.dubbo.tri.hessian2.api';
+option java_multiple_files = true;
+option java_outer_classname = "GreetingsService";
+option objc_class_prefix = "WH";
+
+import "hessian2_extend/hessian2_extend.proto";
+import "java_sql_time/java_sql_time.proto";
+import "java8_time/java8_time.proto";
+import "java_exception/java_exception.proto";
+import "java_util/java_util.proto";
+import "java_math/java_math.proto";
+import "self_extension/self_extension.proto";
+
+enum GreetEnum {
+  GREET_ENUM_0 = 0;
+  GREET_ENUM_1 = 1;
+  GREET_ENUM_2 = 2;
+  GREET_ENUM_3 = 3;
+  GREET_ENUM_4 = 4;
+
+  option (hessian2_extend.enum_extend) = {
+    java_class_name: "org.apache.greet.GreetEnum";
+  };
+}
+
+message GreetRequest {
+  message Internal {
+    int32 num = 1;
+    option (hessian2_extend.message_extend) = {
+      java_class_name: "org.apache.greet.Inner";
+      is_inheritance: true;
+    };
+  }
+
+  string name = 1;
+  GreetEnum way = 2;
+  Internal inner = 3;
+  java_sql_time.Time time = 4;
+  java8_time.Duration duration = 6;
+  java_exception.RuntimeException runtime_exception = 8;
+  java_util.UUID uuid = 9;
+  self_extension.Time self_time = 10;
+  java_math.Integer big_integer = 11;
+
+  option (hessian2_extend.message_extend) = {
+    java_class_name: "org.apache.greet.GreetRequest";
+  };
+}
+
+message GreetResponse {
+  string greeting = 1;
+  option (hessian2_extend.message_extend) = {
+    java_class_name: "org.apache.greet.GreetResponse";
+  };
+}
+
+service GreetingsService  {
+  rpc Greet(GreetRequest) returns (GreetResponse) {
+    option (hessian2_extend.method_extend) = {
+      method_name: "greet";
+    };
+  }
+
+}
\ No newline at end of file
diff --git a/java_interop/non-protobuf-triple/proto/hessian2_extend/hessian2_extend.proto b/java_interop/non-protobuf-triple/proto/hessian2_extend/hessian2_extend.proto
new file mode 100755
index 0000000..618ea19
--- /dev/null
+++ b/java_interop/non-protobuf-triple/proto/hessian2_extend/hessian2_extend.proto
@@ -0,0 +1,59 @@
+/*
+ * 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.
+ */
+
+syntax = "proto3";
+
+package hessian2_extend;
+
+option go_package = "dubbo.apache.org/dubbo-go/v3/proto/hessian2_extend;hessian2_extend";
+
+import "google/protobuf/descriptor.proto";
+
+message Hessian2MessageOptions {
+  string java_class_name = 1;
+  string reference_path = 2;
+  bool is_inheritance = 3;
+  bool extend_args = 4;
+}
+
+extend google.protobuf.MessageOptions {
+  optional Hessian2MessageOptions message_extend = 12345;
+}
+
+message Hessian2MethodOptions {
+  string method_name = 1;
+}
+
+extend google.protobuf.MethodOptions {
+  optional Hessian2MethodOptions method_extend = 12345;
+}
+
+message Hessian2ServiceOptions {
+  string interface_name = 1;
+}
+
+extend google.protobuf.ServiceOptions {
+  optional Hessian2ServiceOptions service_extend = 12345;
+}
+
+message Hessian2EnumOptions {
+  string java_class_name = 1;
+}
+
+extend google.protobuf.EnumOptions {
+  optional Hessian2EnumOptions enum_extend = 12345;
+}
\ No newline at end of file
diff --git a/java_interop/non-protobuf-triple/proto/java8_time/java8_time.proto b/java_interop/non-protobuf-triple/proto/java8_time/java8_time.proto
new file mode 100755
index 0000000..8f3cc58
--- /dev/null
+++ b/java_interop/non-protobuf-triple/proto/java8_time/java8_time.proto
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+
+syntax = "proto3";
+
+package java8_time;
+
+option go_package = "dubbo.apache.org/dubbo-go/v3/proto/java8_time;java8_time";
+
+message Duration{}
+
+message Instant {}
+
+message LocalDate{}
+
+message LocalDateTime{}
+
+message LocalTime{}
+
+message MonthDay{}
+
+message OffsetDateTime{}
+
+message OffsetTime{}
+
+message Period{}
+
+message Year{}
+
+message YearMonth{}
+
+message ZoneOffSet{}
+
+message ZonedDateTime{}
\ No newline at end of file
diff --git a/java_interop/non-protobuf-triple/proto/java_exception/java_exception.proto b/java_interop/non-protobuf-triple/proto/java_exception/java_exception.proto
new file mode 100755
index 0000000..74454ba
--- /dev/null
+++ b/java_interop/non-protobuf-triple/proto/java_exception/java_exception.proto
@@ -0,0 +1,196 @@
+/*
+ * 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.
+*/
+
+syntax = "proto3";
+
+package java_exception;
+
+option go_package = "dubbo.apache.org/dubbo-go/v3/proto/java_exception;java_exception";
+
+message Exception {}
+
+message AnnotationTypeMismatchException {}
+
+message ArithmeticException {}
+
+message ArrayIndexOutOfBoundsException {}
+
+message ArrayStoreException {}
+
+message BackingStoreException {}
+
+message BrokenBarrierException {}
+
+message CancellationException {}
+
+message ClassNotFoundException {}
+
+message ClassCastException {}
+
+message CloneNotSupportedException {}
+
+message CompletionException {}
+
+message ConcurrentModificationException {}
+
+message DataFormatException {}
+
+message DateTimeException {}
+
+message DateTimeParseException {}
+
+message DubboGenericException {}
+
+message DuplicateFormatFlagsException {}
+
+message EmptyStackException {}
+
+message EnumConstantNotPresentException {}
+
+message EOFException {}
+
+message ExecutionException {}
+
+message FileNotFoundException {}
+
+message FormatterClosedException {}
+
+message IllegalAccessException {}
+
+message IllegalArgumentException {}
+
+message IllegalClassFormatException {}
+
+message IllegalFormatCodePointException {}
+
+message IllegalFormatConversionException {}
+
+message IllegalFormatFlagsException {}
+
+message IllegalFormatPrecisionException {}
+
+message IllegalFormatWidthException {}
+
+message IllegalMonitorStateException {}
+
+message IllegalStateException {}
+
+message IllegalThreadStateException {}
+
+message IllformedLocaleException {}
+
+message IncompleteAnnotationException {}
+
+message IndexOutOfBoundsException {}
+
+message InputMismatchException {}
+
+message InstantiationException {}
+
+message InterruptedException {}
+
+message InterruptedIOException {}
+
+message InvalidClassException {}
+
+message InvalidObjectException {}
+
+message InvalidPreferencesFormatException {}
+
+message InvalidPropertiesFormatException {}
+
+message InvocationTargetException {}
+
+message IOException {}
+
+message JarException {}
+
+message LambdaConversionException {}
+
+message MalformedParameterizedTypeException {}
+
+message MalformedParametersException {}
+
+message MissingFormatArgumentException {}
+
+message MissingFormatWidthException {}
+
+message MissingResourceException {}
+
+message NegativeArraySizeException {}
+
+message NoSuchElementException {}
+
+message NoSuchFieldException {}
+
+message NoSuchMethodException {}
+
+message NotActiveException {}
+
+message NotSerializableException {}
+
+message NullPointerException {}
+
+message NumberFormatException {}
+
+message ObjectStreamException {}
+
+message OptionalDataException {}
+
+message ReflectiveOperationException {}
+
+message RejectedExecutionException {}
+
+message RuntimeException {}
+
+message SecurityException {}
+
+message StreamCorruptedException {}
+
+message StringIndexOutOfBoundsException {}
+
+message SyncFailedException {}
+
+message TimeoutException {}
+
+message TooManyListenersException {}
+
+message TypeNotPresentException {}
+
+message UncheckedIOException {}
+
+message UndeclaredThrowableException {}
+
+message UnknownFormatConversionException {}
+
+message UnknownFormatFlagsException {}
+
+message UnmodifiableClassException {}
+
+message UnsupportedOperationException {}
+
+message UnsupportedTemporalTypeException {}
+
+message UTFDataFormatException {}
+
+message WriteAbortedException {}
+
+message WrongMethodTypeException {}
+
+message ZipException {}
+
+message ZoneRulesException{}
diff --git a/java_interop/non-protobuf-triple/proto/java_math/java_math.proto b/java_interop/non-protobuf-triple/proto/java_math/java_math.proto
new file mode 100755
index 0000000..342e820
--- /dev/null
+++ b/java_interop/non-protobuf-triple/proto/java_math/java_math.proto
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+syntax = "proto3";
+
+package java_math;
+
+option go_package = "dubbo.apache.org/dubbo-go/v3/proto/java_math;java_math";
+
+message Decimal {}
+
+message Integer {}
diff --git a/java_interop/non-protobuf-triple/proto/java_sql_time/java_sql_time.proto b/java_interop/non-protobuf-triple/proto/java_sql_time/java_sql_time.proto
new file mode 100755
index 0000000..7e4f511
--- /dev/null
+++ b/java_interop/non-protobuf-triple/proto/java_sql_time/java_sql_time.proto
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+syntax = "proto3";
+
+package java_sql_time;
+
+option go_package = "dubbo.apache.org/dubbo-go/v3/proto/java_sql_time;java_sql_time";
+
+message Time {}
+
+message Date {}
\ No newline at end of file
diff --git a/java_interop/non-protobuf-triple/proto/java_util/java_util.proto b/java_interop/non-protobuf-triple/proto/java_util/java_util.proto
new file mode 100755
index 0000000..3228cfc
--- /dev/null
+++ b/java_interop/non-protobuf-triple/proto/java_util/java_util.proto
@@ -0,0 +1,26 @@
+/*
+ * 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.
+*/
+
+syntax = "proto3";
+
+package java_util;
+
+option go_package = "dubbo.apache.org/dubbo-go/v3/proto/java_util;java_util";
+
+message Locale {}
+
+message UUID {}
\ No newline at end of file
diff --git a/java_interop/non-protobuf-triple/proto/self_extension/self_extension.proto b/java_interop/non-protobuf-triple/proto/self_extension/self_extension.proto
new file mode 100755
index 0000000..03f600d
--- /dev/null
+++ b/java_interop/non-protobuf-triple/proto/self_extension/self_extension.proto
@@ -0,0 +1,15 @@
+syntax = "proto3";
+
+package self_extension;
+
+option go_package = "github.com/apache/dubbo-go-samples/java_interop/non-protobuf-triple/proto/self_extension;self_extension";
+
+import "google/protobuf/descriptor.proto";
+import "hessian2_extend/hessian2_extend.proto";
+
+message Time {
+  option (hessian2_extend.message_extend) = {
+    java_class_name: "java.sql.Time";
+    reference_path: "dubbo.apache.org/dubbo-go/v3/proto/java_sql_time";
+  };
+}
\ No newline at end of file