You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/09/19 14:28:23 UTC
[dubbo-go-samples] branch config-enhance updated: Ftr/JsonRPC using
dubbogo config (#242)
This is an automated email from the ASF dual-hosted git repository.
alexstocks pushed a commit to branch config-enhance
in repository https://gitbox.apache.org/repos/asf/dubbo-go-samples.git
The following commit(s) were added to refs/heads/config-enhance by this push:
new f6a87e2 Ftr/JsonRPC using dubbogo config (#242)
f6a87e2 is described below
commit f6a87e2bbfcd0fa99887135007f20881a0c1ebed
Author: phil <ph...@foxmail.com>
AuthorDate: Sun Sep 19 22:28:15 2021 +0800
Ftr/JsonRPC using dubbogo config (#242)
* update: upgrade JsonRPC sample by dubbogo config
* update: test?
* update: revert start_integrate_test.sh
* update: func return
* update: fix and clean code
- fix JsonRPC -> JSON-RPC
- del docker dir of test package
- del registry of `shanghaizk` zk
- fix rm func Reference(), and config by dubbogo.yml
* update: fix the way of init struct, change to
Co-authored-by: yuefengbo <yu...@meituan.com>
---
.run/rpc/jsonrpc/rpc-jsonrpc-go-client.run.xml | 14 ++
.../rpc/jsonrpc/tests/integration/main_test.go | 54 ++++++++
.../jsonrpc/tests/integration/userprovider_test.go | 57 ++++++++
rpc/jsonrpc/README.md | 67 +++++++++
rpc/jsonrpc/README_zh.md | 67 +++++++++
rpc/jsonrpc/go-client/cmd/client.go | 151 +++++++++------------
rpc/jsonrpc/go-client/conf/client.yml | 60 --------
rpc/jsonrpc/go-client/conf/dubbogo.yml | 49 +++++++
rpc/jsonrpc/go-client/conf/log.yml | 28 ----
rpc/jsonrpc/go-client/pkg/user.go | 44 +++---
rpc/jsonrpc/go-server/cmd/server.go | 14 +-
rpc/jsonrpc/go-server/conf/dubbogo.yml | 59 ++++++++
rpc/jsonrpc/go-server/conf/log.yml | 28 ----
rpc/jsonrpc/go-server/conf/server.yml | 75 ----------
rpc/jsonrpc/go-server/docker/docker-compose.yml | 9 ++
rpc/jsonrpc/go-server/pkg/user.go | 1 -
rpc/jsonrpc/go-server/pkg/user_provider.go | 43 +++---
rpc/jsonrpc/go-server/pkg/user_provider1.go | 41 +++---
rpc/jsonrpc/go-server/pkg/user_provider2.go | 43 +++---
rpc/jsonrpc/java-client/build.sh | 3 -
rpc/jsonrpc/java-client/pom.xml | 8 ++
.../src/main/java/com/ikurento/user/User.java | 4 +-
rpc/jsonrpc/java-server/build.sh | 5 +-
rpc/jsonrpc/java-server/pom.xml | 8 ++
rpc/jsonrpc/java-server/script/debug.sh | 22 ---
start_integrate_test.sh | 1 +
26 files changed, 542 insertions(+), 413 deletions(-)
diff --git a/.run/rpc/jsonrpc/rpc-jsonrpc-go-client.run.xml b/.run/rpc/jsonrpc/rpc-jsonrpc-go-client.run.xml
new file mode 100644
index 0000000..02447c7
--- /dev/null
+++ b/.run/rpc/jsonrpc/rpc-jsonrpc-go-client.run.xml
@@ -0,0 +1,14 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration default="false" name="rpc-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/integrate_test/rpc/jsonrpc/tests/integration/main_test.go b/integrate_test/rpc/jsonrpc/tests/integration/main_test.go
new file mode 100644
index 0000000..34a6335
--- /dev/null
+++ b/integrate_test/rpc/jsonrpc/tests/integration/main_test.go
@@ -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 integration
+
+import (
+ "os"
+ "testing"
+ "time"
+)
+
+import (
+ _ "dubbo.apache.org/dubbo-go/v3/common/logger"
+ "dubbo.apache.org/dubbo-go/v3/config"
+ _ "dubbo.apache.org/dubbo-go/v3/imports"
+)
+
+import (
+ "github.com/apache/dubbo-go-samples/rpc/jsonrpc/go-client/pkg"
+)
+
+var (
+ userProvider = &pkg.UserProvider{}
+ userProvider1 = &pkg.UserProvider1{}
+ userProvider2 = &pkg.UserProvider2{}
+)
+
+func init() {
+ config.SetConsumerService(userProvider)
+ config.SetConsumerService(userProvider1)
+ config.SetConsumerService(userProvider2)
+}
+
+func TestMain(m *testing.M) {
+
+ config.Load()
+
+ time.Sleep(3 * time.Second)
+
+ os.Exit(m.Run())
+}
diff --git a/integrate_test/rpc/jsonrpc/tests/integration/userprovider_test.go b/integrate_test/rpc/jsonrpc/tests/integration/userprovider_test.go
new file mode 100644
index 0000000..785997b
--- /dev/null
+++ b/integrate_test/rpc/jsonrpc/tests/integration/userprovider_test.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 integration
+
+import (
+ "context"
+ "testing"
+)
+
+import (
+ "github.com/stretchr/testify/assert"
+)
+
+func TestTest(t *testing.T) {
+
+ ctx := context.Background()
+
+ // test Echo
+ echo, err := userProvider.Echo(ctx, "Phil")
+ assert.Nil(t, err)
+ assert.Equal(t, "Phil", echo)
+
+ // test GetUser
+ user, err := userProvider.GetUser(ctx, "A003")
+ assert.Nil(t, err)
+ assert.Equal(t, "Moorse", user.Name)
+ assert.Equal(t, int64(30), user.Age)
+ assert.Equal(t, "MAN", user.Sex)
+
+ user0, err := userProvider.GetUser0("A003", "Moorse")
+ assert.Nil(t, err)
+ assert.Equal(t, "Moorse", user0.Name)
+ assert.Equal(t, int64(30), user0.Age)
+ assert.Equal(t, "MAN", user0.Sex)
+
+ //users, err := userProvider.GetUsers([]interface{}{[]interface{}{"A002", "A003"}})
+ //assert.Nil(t, err)
+ //assert.Equal(t, "Lily", users[0].Name)
+ //assert.Equal(t, int64(20), users[0].Age)
+ //assert.Equal(t, "WOMAN", users[0].Sex)
+
+}
diff --git a/rpc/jsonrpc/README.md b/rpc/jsonrpc/README.md
new file mode 100644
index 0000000..5e92a16
--- /dev/null
+++ b/rpc/jsonrpc/README.md
@@ -0,0 +1,67 @@
+# JSON-RPC Example
+
+## Backend
+
+Dubbo3 provides Triple(Dubbo3), Dubbo2 protocols, which are native to the Dubbo framework.
+In addition, Dubbo3 also integrates a number of third-party protocols into Dubbo's programming and service governance architecture,
+Including gRPC, Thrift, **JSON-RPC**, Hessian2, and REST. The following describes the **JSON-RPC** protocol example.
+
+## Start
+
+- Start the registry
+- Start go-server and go-client, practice with **JSON-RPC**
+- Start java-server and java-client, practice with **JSON-RPC**
+
+### Start the registry
+
+Start the registry by docker-compose:
+
+```shell
+docker-compose -f go-server/docker/docker-compose.yml up -d
+```
+
+Stop the registry
+
+```shell
+docker-compose -f go-server/docker/docker-compose.yml dowm
+```
+
+### Start Go Server and Client
+
+Note: Goland users can directly use the boot mode configured by '.run ', refer to [HOWTO.md](../HOWTO_zh.md)
+
+Start go-server:
+
+Config the configuration file of **Dubbogo**([server/dubbogo.yml](go-server/conf/dubbogo.yml)):
+
+```shell
+DUBBO_GO_CONFIG_PATH=${$PROJECT_DIR$}/dubbo-go-samples/rpc/jsonrpc/go-server/conf/dubbogo.yml
+```
+
+Start go-client:
+
+Config the configuration file of **Dubbogo**([client/dubbogo.yml](go-client/conf/dubbogo.yml)):
+
+```shell
+DUBBO_GO_CONFIG_PATH=${$PROJECT_DIR$}/dubbo-go-samples/rpc/jsonrpc/go-client/conf/dubbogo.yml
+```
+
+### Start Java Server and Client
+
+Start java-server:
+
+run [build.sh](java-server/build.sh) ,Maven environment required
+
+```shell
+bash build.sh
+```
+
+Start java-client:
+
+run [build.sh](java-client/build.sh),Maven environment required
+
+```shell
+bash build.sh
+```
+
+
diff --git a/rpc/jsonrpc/README_zh.md b/rpc/jsonrpc/README_zh.md
new file mode 100644
index 0000000..2362f55
--- /dev/null
+++ b/rpc/jsonrpc/README_zh.md
@@ -0,0 +1,67 @@
+# JSON-RPC 示例
+
+## 背景
+
+Dubbo3 提供了 Triple(Dubbo3)、Dubbo2 协议,这是 Dubbo 框架的原生协议。
+除此之外,Dubbo3 也对众多第三方协议进行了集成,并将它们纳入 Dubbo 的编程与服务治理体系,
+包括 gRPC、Thrift、**JSON-RPC**、Hessian2、REST 等。以下重点介绍 **JSON-RPC** 协议示例。
+
+## 如何启动
+
+- 启动注册中心
+- 启动 go-server、go-client 查看 **JSON-RPC** 效果
+- 启动 java-server、java-client 查看 **JSON-RPC** 效果
+
+### 启动注册中心
+
+启动项目提供注册中心
+
+```shell
+docker-compose -f go-server/docker/docker-compose.yml up -d
+```
+
+关闭注册中心
+
+```shell
+docker-compose -f go-server/docker/docker-compose.yml dowm
+```
+
+### 启动 Go Server、Client
+
+注:Goland 用户可以直接使用 `.run` 配置的启动方式, 详情参考 [HOWTO.md](../HOWTO_zh.md)
+
+启动 go-server:
+
+配置 Dubbogo 配置文件路径([server/dubbogo.yml](go-server/conf/dubbogo.yml)):
+
+```shell
+DUBBO_GO_CONFIG_PATH=${$PROJECT_DIR$}/dubbo-go-samples/rpc/jsonrpc/go-server/conf/dubbogo.yml
+```
+
+启动 go-client:
+
+配置 Dubbogo 配置文件路径([client/dubbogo.yml](go-client/conf/dubbogo.yml)):
+
+```shell
+DUBBO_GO_CONFIG_PATH=${$PROJECT_DIR$}/dubbo-go-samples/rpc/jsonrpc/go-client/conf/dubbogo.yml
+```
+
+### 启动 Java Server、Client
+
+启动 java-server:
+
+可直接运行项目提供 [build.sh](java-server/build.sh) ,基于 maven 环境启动
+
+```shell
+bash build.sh
+```
+
+启动 java-client:
+
+可直接运行项目提供 [build.sh](java-client/build.sh),基于 maven 环境启动
+
+```shell
+bash build.sh
+```
+
+
diff --git a/rpc/jsonrpc/go-client/cmd/client.go b/rpc/jsonrpc/go-client/cmd/client.go
index b37c8e9..3ede53c 100644
--- a/rpc/jsonrpc/go-client/cmd/client.go
+++ b/rpc/jsonrpc/go-client/cmd/client.go
@@ -27,17 +27,9 @@ import (
)
import (
- _ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
- _ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
"dubbo.apache.org/dubbo-go/v3/common/logger"
- _ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
"dubbo.apache.org/dubbo-go/v3/config"
- _ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
- _ "dubbo.apache.org/dubbo-go/v3/protocol/jsonrpc"
- _ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
- _ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
-
- "github.com/dubbogo/gost/log"
+ _ "dubbo.apache.org/dubbo-go/v3/imports"
)
import (
@@ -46,9 +38,9 @@ import (
var (
survivalTimeout int = 10e9
- userProvider = new(pkg.UserProvider)
- userProvider1 = new(pkg.UserProvider1)
- userProvider2 = new(pkg.UserProvider2)
+ userProvider = &pkg.UserProvider{}
+ userProvider1 = &pkg.UserProvider1{}
+ userProvider2 = &pkg.UserProvider2{}
)
func init() {
@@ -57,18 +49,18 @@ func init() {
config.SetConsumerService(userProvider2)
}
-// they are necessary:
-// export CONF_CONSUMER_FILE_PATH="xxx"
-// export APP_LOG_CONF_FILE="xxx"
+// Do some checking before the system starts up:
+// 1. env config
+// `export DUBBO_GO_CONFIG_PATH= ROOT_PATH/conf/dubbogo.yml` or `dubbogo.yaml`
func main() {
config.Load()
- gxlog.CInfo("\n\ntest")
+ logger.Info("\n\ntest")
test()
- gxlog.CInfo("\n\ntest1")
+ logger.Info("\n\ntest1")
test1()
- gxlog.CInfo("\n\ntest2")
+ logger.Info("\n\ntest2")
test2()
initSignal()
@@ -99,169 +91,152 @@ func initSignal() {
}
func test() {
- gxlog.CInfo("\n\n\necho")
+ logger.Info("\n\n\necho")
res, err := userProvider.Echo(context.TODO(), "OK")
if err != nil {
- gxlog.CInfo("echo - error: %v", err)
+ logger.Info("echo - error: %v", err)
} else {
- gxlog.CInfo("res: %v", res)
+ logger.Info("res: %v", res)
}
time.Sleep(3e9)
- gxlog.CInfo("\n\n\nstart to test jsonrpc")
- user := &pkg.JsonRPCUser{}
- err = userProvider.GetUser(context.TODO(), []interface{}{"A003"}, user)
+ logger.Info("\n\n\nstart to test jsonrpc")
+
+ user, err := userProvider.GetUser(context.TODO(), "A003")
+
if err != nil {
panic(err)
}
- gxlog.CInfo("response result: %v", user)
+ logger.Info("response result: %v", user)
- gxlog.CInfo("\n\n\nstart to test jsonrpc - GetUser0")
+ logger.Info("\n\n\nstart to test jsonrpc - GetUser0")
ret, err := userProvider.GetUser0("A003", "Moorse")
if err != nil {
panic(err)
}
- gxlog.CInfo("response result: %v", ret)
+ logger.Info("response result: %v", ret)
+
+ logger.Info("\n\n\nstart to test jsonrpc - GetUsers")
- gxlog.CInfo("\n\n\nstart to test jsonrpc - GetUsers")
ret1, err := userProvider.GetUsers([]interface{}{[]interface{}{"A002", "A003"}})
if err != nil {
panic(err)
}
- gxlog.CInfo("response result: %v", ret1)
+ logger.Info("response result: %v", ret1)
- gxlog.CInfo("\n\n\nstart to test jsonrpc - getUser")
- user = &pkg.JsonRPCUser{}
- err = userProvider.GetUser2(context.TODO(), []interface{}{1}, user)
+ logger.Info("\n\n\nstart to test jsonrpc - getUser")
+ rep2, err := userProvider.GetUser2(context.TODO(), "1")
if err != nil {
panic(err)
}
- gxlog.CInfo("response result: %v", user)
+ logger.Info("response result: %v", rep2)
- gxlog.CInfo("\n\n\nstart to test jsonrpc - GetUser3")
+ logger.Info("\n\n\nstart to test jsonrpc - GetUser3")
err = userProvider.GetUser3()
if err != nil {
panic(err)
}
- gxlog.CInfo("succ!")
+ logger.Info("succ!")
- gxlog.CInfo("\n\n\nstart to test jsonrpc illegal method")
- err = userProvider.GetUser1(context.TODO(), []interface{}{"A003"}, user)
+ logger.Info("\n\n\nstart to test jsonrpc illegal method")
+ rep3, err := userProvider.GetUser1(context.TODO(), "A003")
if err == nil {
panic("err is nil")
}
- gxlog.CInfo("error: %v", err)
+ logger.Info("response result: %v", rep3)
}
func test1() {
- gxlog.CInfo("\n\n\necho")
+ logger.Info("\n\n\necho")
res, err := userProvider1.Echo(context.TODO(), "OK")
if err != nil {
- gxlog.CInfo("echo - error: %v", err)
+ logger.Info("echo - error: %v", err)
} else {
- gxlog.CInfo("res: %v", res)
+ logger.Info("res: %v", res)
}
time.Sleep(3e9)
- gxlog.CInfo("\n\n\nstart to test jsonrpc")
- user := &pkg.JsonRPCUser{}
- err = userProvider1.GetUser(context.TODO(), []interface{}{"A003"}, user)
+ logger.Info("\n\n\nstart to test jsonrpc")
+ user, err := userProvider1.GetUser(context.TODO(), "A003")
if err != nil {
panic(err)
}
- gxlog.CInfo("response result: %v", user)
+ logger.Info("response result: %v", user)
- gxlog.CInfo("\n\n\nstart to test jsonrpc - GetUser0")
+ logger.Info("\n\n\nstart to test jsonrpc - GetUser0")
ret, err := userProvider1.GetUser0("A003", "Moorse")
if err != nil {
panic(err)
}
- gxlog.CInfo("response result: %v", ret)
-
- gxlog.CInfo("\n\n\nstart to test jsonrpc - GetUsers")
- ret1, err := userProvider1.GetUsers([]interface{}{[]interface{}{"A002", "A003"}})
- if err != nil {
- panic(err)
- }
- gxlog.CInfo("response result: %v", ret1)
+ logger.Info("response result: %v", ret)
- gxlog.CInfo("\n\n\nstart to test jsonrpc - getUser")
- user = &pkg.JsonRPCUser{}
- err = userProvider1.GetUser2(context.TODO(), []interface{}{1}, user)
+ logger.Info("\n\n\nstart to test jsonrpc - getUser")
+ user, err = userProvider1.GetUser2(context.TODO(), "1")
if err != nil {
panic(err)
}
- gxlog.CInfo("response result: %v", user)
+ logger.Info("response result: %v", user)
- gxlog.CInfo("\n\n\nstart to test jsonrpc - GetUser3")
+ logger.Info("\n\n\nstart to test jsonrpc - GetUser3")
err = userProvider1.GetUser3()
if err != nil {
panic(err)
}
- gxlog.CInfo("succ!")
+ logger.Info("succ!")
- gxlog.CInfo("\n\n\nstart to test jsonrpc illegal method")
- err = userProvider1.GetUser1(context.TODO(), []interface{}{"A003"}, user)
+ logger.Info("\n\n\nstart to test jsonrpc illegal method")
+ user, err = userProvider1.GetUser1(context.TODO(), "A003")
if err == nil {
panic("err is nil")
}
- gxlog.CInfo("error: %v", err)
+ logger.Info("error: %v", err)
}
func test2() {
- gxlog.CInfo("\n\n\necho")
+ logger.Info("\n\n\necho")
res, err := userProvider2.Echo(context.TODO(), "OK")
if err != nil {
- gxlog.CInfo("echo - error: %v", err)
+ logger.Info("echo - error: %v", err)
} else {
- gxlog.CInfo("res: %v", res)
+ logger.Info("res: %v", res)
}
time.Sleep(3e9)
- gxlog.CInfo("\n\n\nstart to test jsonrpc")
- user := &pkg.JsonRPCUser{}
- err = userProvider2.GetUser(context.TODO(), []interface{}{"A003"}, user)
+ logger.Info("\n\n\nstart to test jsonrpc")
+ user, err := userProvider2.GetUser(context.TODO(), "A003")
if err != nil {
panic(err)
}
- gxlog.CInfo("response result: %v", user)
+ logger.Info("response result: %v", user)
- gxlog.CInfo("\n\n\nstart to test jsonrpc - GetUser0")
+ logger.Info("\n\n\nstart to test jsonrpc - GetUser0")
ret, err := userProvider2.GetUser0("A003", "Moorse")
if err != nil {
panic(err)
}
- gxlog.CInfo("response result: %v", ret)
-
- gxlog.CInfo("\n\n\nstart to test jsonrpc - GetUsers")
- ret1, err := userProvider2.GetUsers([]interface{}{[]interface{}{"A002", "A003"}})
- if err != nil {
- panic(err)
- }
- gxlog.CInfo("response result: %v", ret1)
+ logger.Info("response result: %v", ret)
- gxlog.CInfo("\n\n\nstart to test jsonrpc - getUser")
- user = &pkg.JsonRPCUser{}
- err = userProvider2.GetUser2(context.TODO(), []interface{}{1}, user)
+ logger.Info("\n\n\nstart to test jsonrpc - getUser")
+ user, err = userProvider2.GetUser2(context.TODO(), "1")
if err != nil {
panic(err)
}
- gxlog.CInfo("response result: %v", user)
+ logger.Info("response result: %v", user)
- gxlog.CInfo("\n\n\nstart to test jsonrpc - GetUser3")
+ logger.Info("\n\n\nstart to test jsonrpc - GetUser3")
err = userProvider2.GetUser3()
if err != nil {
panic(err)
}
- gxlog.CInfo("succ!")
+ logger.Info("succ!")
- gxlog.CInfo("\n\n\nstart to test jsonrpc illegal method")
- err = userProvider2.GetUser1(context.TODO(), []interface{}{"A003"}, user)
+ logger.Info("\n\n\nstart to test jsonrpc illegal method")
+ user, err = userProvider2.GetUser1(context.TODO(), "A003")
if err == nil {
panic("err is nil")
}
- gxlog.CInfo("error: %v", err)
+ logger.Info("error: %v", err)
}
diff --git a/rpc/jsonrpc/go-client/conf/client.yml b/rpc/jsonrpc/go-client/conf/client.yml
deleted file mode 100644
index ed757d7..0000000
--- a/rpc/jsonrpc/go-client/conf/client.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-# dubbo client yaml configure file
-
-check: true
-# client
-request_timeout : "3s"
-# connect timeout
-connect_timeout : "3s"
-
-# application config
-application:
- organization : "ikurento.com"
- name : "BDTService"
- module : "dubbogo user-info client"
- version : "0.0.1"
- owner : "ZX"
- environment : "dev"
-
-registries :
- "hangzhouzk":
- protocol: "zookeeper"
- timeout : "3s"
- address: "127.0.0.1:2181"
- username: ""
- password: ""
- "shanghaizk":
- protocol: "zookeeper"
- timeout : "3s"
- address: "127.0.0.1:2182"
- username: ""
- password: ""
-
-references:
- "UserProvider":
- # 可以指定多个registry,使用逗号隔开;不指定默认向所有注册中心注册
- registry: "hangzhouzk"
- protocol : "jsonrpc"
- interface : "com.ikurento.user.UserProvider"
- cluster: "failover"
- methods :
- - name: "GetUser"
- retries: 3
- "UserProvider1":
- registry: "hangzhouzk"
- protocol: "jsonrpc"
- version : "2.0"
- interface: "com.ikurento.user.UserProvider"
- cluster: "failover"
- methods:
- - name: "GetUser"
- retries: 3
- "UserProvider2":
- registry: "hangzhouzk"
- protocol: "jsonrpc"
- version : "2.0"
- group: "as"
- interface: "com.ikurento.user.UserProvider"
- cluster: "failover"
- methods:
- - name: "GetUser"
- retries: 3
diff --git a/rpc/jsonrpc/go-client/conf/dubbogo.yml b/rpc/jsonrpc/go-client/conf/dubbogo.yml
new file mode 100644
index 0000000..f00ed85
--- /dev/null
+++ b/rpc/jsonrpc/go-client/conf/dubbogo.yml
@@ -0,0 +1,49 @@
+dubbo:
+ application:
+ organization: "dubbo.apache.org"
+ name: "UserInfoServer"
+ module: "dubbo-go user-info client"
+ version: "0.0.1"
+ environment: "dev"
+ registries:
+ "hangzhouzk":
+ protocol: "zookeeper"
+ timeout: "3s"
+ address: "127.0.0.1:2181"
+ username: ""
+ password: ""
+ "shanghaizk":
+ protocol: "zookeeper"
+ timeout: "3s"
+ address: "127.0.0.1:2182"
+ username: ""
+ password: ""
+ consumer:
+ references:
+ "com.ikurento.user.UserProvider":
+ registry: "hangzhouzk"
+ protocol: "jsonrpc"
+ interface: "com.ikurento.user.UserProvider"
+ cluster: "failover"
+ methods:
+ - name: "GetUser"
+ retries: 1
+ "com.ikurento.user.UserProvider1":
+ registry: "hangzhouzk"
+ protocol: "jsonrpc"
+ version: "2.0"
+ interface: "com.ikurento.user.UserProvider"
+ cluster: "failover"
+ methods:
+ - name: "GetUser"
+ retries: 1
+ "com.ikurento.user.UserProvider2":
+ registry: "hangzhouzk"
+ protocol: "jsonrpc"
+ version: "2.0"
+ group: "as"
+ interface: "com.ikurento.user.UserProvider"
+ cluster: "failover"
+ methods:
+ - name: "GetUser"
+ retries: 1
\ No newline at end of file
diff --git a/rpc/jsonrpc/go-client/conf/log.yml b/rpc/jsonrpc/go-client/conf/log.yml
deleted file mode 100644
index 59fa427..0000000
--- a/rpc/jsonrpc/go-client/conf/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "debug"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
- messageKey: "message"
- levelKey: "level"
- timeKey: "time"
- nameKey: "logger"
- callerKey: "caller"
- stacktraceKey: "stacktrace"
- lineEnding: ""
- levelEncoder: "capitalColor"
- timeEncoder: "iso8601"
- durationEncoder: "seconds"
- callerEncoder: "short"
- nameEncoder: ""
-
-outputPaths:
- - "stderr"
-errorOutputPaths:
- - "stderr"
-initialFields:
diff --git a/rpc/jsonrpc/go-client/pkg/user.go b/rpc/jsonrpc/go-client/pkg/user.go
index 56ad7f6..471bb01 100644
--- a/rpc/jsonrpc/go-client/pkg/user.go
+++ b/rpc/jsonrpc/go-client/pkg/user.go
@@ -34,48 +34,48 @@ type JsonRPCUser struct {
func (u JsonRPCUser) String() string {
return fmt.Sprintf(
"User{ID:%s, Name:%s, Age:%d, Time:%s, Sex:%s}",
- u.ID, u.Name, u.Age, time.Unix(u.Time, 0).Format("2006-01-02 15:04:05.99999"), u.Sex,
+ u.ID, u.Name, u.Age, time.Unix(int64(u.Time), 0).Format("2006-01-02 15:04:05.99999"), u.Sex,
)
}
type UserProvider struct {
- GetUsers func(req []interface{}) ([]JsonRPCUser, error)
- GetUser func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error
- GetUser0 func(id string, name string) (JsonRPCUser, error)
- GetUser1 func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error
- GetUser2 func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error `dubbo:"getUser"`
+ GetUsers func(ids []interface{}) ([]*JsonRPCUser, error)
+ GetUser func(ctx context.Context, id string) (*JsonRPCUser, error)
+ GetUser0 func(id string, name string) (*JsonRPCUser, error)
+ GetUser1 func(ctx context.Context, id string) (*JsonRPCUser, error)
+ GetUser2 func(ctx context.Context, id string) (*JsonRPCUser, error) `dubbo:"getUser"`
GetUser3 func() error
- Echo func(ctx context.Context, req interface{}) (interface{}, error) // Echo represent EchoFilter will be used
+ Echo func(ctx context.Context, req string) (string, error) // Echo represent EchoFilter will be used
}
func (u *UserProvider) Reference() string {
- return "UserProvider"
+ return "com.ikurento.user.UserProvider"
}
type UserProvider1 struct {
- GetUsers func(req []interface{}) ([]JsonRPCUser, error)
- GetUser func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error
- GetUser0 func(id string, name string) (JsonRPCUser, error)
- GetUser1 func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error
- GetUser2 func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error `dubbo:"getUser"`
+ GetUsers func(ids []interface{}) ([]*JsonRPCUser, error)
+ GetUser func(ctx context.Context, id string) (*JsonRPCUser, error)
+ GetUser0 func(id string, name string) (*JsonRPCUser, error)
+ GetUser1 func(ctx context.Context, id string) (*JsonRPCUser, error)
+ GetUser2 func(ctx context.Context, id string) (*JsonRPCUser, error) `dubbo:"getUser"`
GetUser3 func() error
- Echo func(ctx context.Context, req interface{}) (interface{}, error) // Echo represent EchoFilter will be used
+ Echo func(ctx context.Context, req string) (string, error) // Echo represent EchoFilter will be used
}
func (u *UserProvider1) Reference() string {
- return "UserProvider1"
+ return "com.ikurento.user.UserProvider1"
}
type UserProvider2 struct {
- GetUsers func(req []interface{}) ([]JsonRPCUser, error)
- GetUser func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error
- GetUser0 func(id string, name string) (JsonRPCUser, error)
- GetUser1 func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error
- GetUser2 func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error `dubbo:"getUser"`
+ GetUsers func(ids []interface{}) ([]*JsonRPCUser, error)
+ GetUser func(ctx context.Context, id string) (*JsonRPCUser, error)
+ GetUser0 func(id string, name string) (*JsonRPCUser, error)
+ GetUser1 func(ctx context.Context, id string) (*JsonRPCUser, error)
+ GetUser2 func(ctx context.Context, id string) (*JsonRPCUser, error) `dubbo:"getUser"`
GetUser3 func() error
- Echo func(ctx context.Context, req interface{}) (interface{}, error) // Echo represent EchoFilter will be used
+ Echo func(ctx context.Context, req string) (string, error) // Echo represent EchoFilter will be used
}
func (u *UserProvider2) Reference() string {
- return "UserProvider2"
+ return "com.ikurento.user.UserProvider2"
}
diff --git a/rpc/jsonrpc/go-server/cmd/server.go b/rpc/jsonrpc/go-server/cmd/server.go
index 631ac7f..dcb7a9c 100644
--- a/rpc/jsonrpc/go-server/cmd/server.go
+++ b/rpc/jsonrpc/go-server/cmd/server.go
@@ -26,15 +26,9 @@ import (
)
import (
- _ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
- _ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
"dubbo.apache.org/dubbo-go/v3/common/logger"
- _ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
"dubbo.apache.org/dubbo-go/v3/config"
- _ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
- _ "dubbo.apache.org/dubbo-go/v3/protocol/jsonrpc"
- _ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
- _ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+ _ "dubbo.apache.org/dubbo-go/v3/imports"
)
import (
@@ -45,9 +39,9 @@ var (
survivalTimeout = int(3e9)
)
-// they are necessary:
-// export CONF_PROVIDER_FILE_PATH="xxx"
-// export APP_LOG_CONF_FILE="xxx"
+// Do some checking before the system starts up:
+// 1. env config
+// `export DUBBO_GO_CONFIG_PATH= ROOT_PATH/conf/dubbogo.yml` or `dubbogo.yaml`
func main() {
config.Load()
diff --git a/rpc/jsonrpc/go-server/conf/dubbogo.yml b/rpc/jsonrpc/go-server/conf/dubbogo.yml
new file mode 100644
index 0000000..c5a1fed
--- /dev/null
+++ b/rpc/jsonrpc/go-server/conf/dubbogo.yml
@@ -0,0 +1,59 @@
+dubbo:
+ application:
+ organization: "dubbo.apache.org"
+ name: "UserInfoServer"
+ module: "dubbo-go user-info server"
+ version: "0.0.1"
+ environment: "dev"
+ registries:
+ "hangzhouzk":
+ protocol: "zookeeper"
+ timeout: "3s"
+ address: "127.0.0.1:2181"
+ username: ""
+ password: ""
+ protocols:
+ "jsonrpc":
+ name: "jsonrpc"
+ ip: "127.0.0.1"
+ port: 20001
+ provider:
+ registry:
+ - hangzhouzk
+ services:
+ UserProvider:
+ registry: "hangzhouzk"
+ protocol: "jsonrpc"
+ interface: "com.ikurento.user.UserProvider"
+ loadbalance: "random"
+ warmup: "100"
+ cluster: "failover"
+ methods:
+ - name: "GetUser"
+ retries: 1
+ loadbalance: "random"
+ UserProvider1:
+ registry: "hangzhouzk"
+ protocol: "jsonrpc"
+ interface: "com.ikurento.user.UserProvider"
+ loadbalance: "random"
+ version: "2.0"
+ warmup: "100"
+ cluster: "failover"
+ methods:
+ - name: "GetUser"
+ retries: 1
+ loadbalance: "random"
+ UserProvider2:
+ registry: "hangzhouzk"
+ protocol: "jsonrpc"
+ interface: "com.ikurento.user.UserProvider"
+ loadbalance: "random"
+ version: "2.0"
+ group: "as"
+ warmup: "100"
+ cluster: "failover"
+ methods:
+ - name: "GetUser"
+ retries: 1
+ loadbalance: "random"
\ No newline at end of file
diff --git a/rpc/jsonrpc/go-server/conf/log.yml b/rpc/jsonrpc/go-server/conf/log.yml
deleted file mode 100644
index 59fa427..0000000
--- a/rpc/jsonrpc/go-server/conf/log.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-level: "debug"
-development: true
-disableCaller: false
-disableStacktrace: false
-sampling:
-encoding: "console"
-
-# encoder
-encoderConfig:
- messageKey: "message"
- levelKey: "level"
- timeKey: "time"
- nameKey: "logger"
- callerKey: "caller"
- stacktraceKey: "stacktrace"
- lineEnding: ""
- levelEncoder: "capitalColor"
- timeEncoder: "iso8601"
- durationEncoder: "seconds"
- callerEncoder: "short"
- nameEncoder: ""
-
-outputPaths:
- - "stderr"
-errorOutputPaths:
- - "stderr"
-initialFields:
diff --git a/rpc/jsonrpc/go-server/conf/server.yml b/rpc/jsonrpc/go-server/conf/server.yml
deleted file mode 100644
index cb7fee9..0000000
--- a/rpc/jsonrpc/go-server/conf/server.yml
+++ /dev/null
@@ -1,75 +0,0 @@
-# dubbo server yaml configure file
-
-# application config
-application:
- organization : "ikurento.com"
- name : "BDTService"
- module : "dubbogo user-info server"
- version : "0.0.1"
- owner : "ZX"
- environment : "dev"
-
-registries :
- "hangzhouzk":
- protocol: "zookeeper"
- timeout : "3s"
- address: "127.0.0.1:2181"
- username: ""
- password: ""
- "shanghaizk":
- protocol: "zookeeper"
- timeout : "3s"
- address: "127.0.0.1:2182"
- username: ""
- password: ""
-
-
-services:
- "UserProvider":
- # 可以指定多个registry,使用逗号隔开;不指定默认向所有注册中心注册
- registry: "hangzhouzk"
- protocol : "jsonrpc"
- # 相当于dubbo.xml中的interface
- interface : "com.ikurento.user.UserProvider"
- loadbalance: "random"
- warmup: "100"
- cluster: "failover"
- methods:
- - name: "GetUser"
- retries: 1
- loadbalance: "random"
- "UserProvider1":
- registry: "hangzhouzk"
- protocol: "jsonrpc"
- interface: "com.ikurento.user.UserProvider"
- loadbalance: "random"
- version: "2.0"
- warmup: "100"
- cluster: "failover"
- methods:
- - name: "GetUser"
- retries: 1
- loadbalance: "random"
- "UserProvider2":
- registry: "hangzhouzk"
- protocol: "jsonrpc"
- interface: "com.ikurento.user.UserProvider"
- loadbalance: "random"
- version: "2.0"
- group: "as"
- warmup: "100"
- cluster: "failover"
- methods:
- - name: "GetUser"
- retries: 1
- loadbalance: "random"
-
-protocols:
- #- name: "dubbo"
- # ip : "127.0.0.1"
- # port : 20000
- "jsonrpc":
- name: "jsonrpc"
- ip: "127.0.0.1"
- port: 20001
-
diff --git a/rpc/jsonrpc/go-server/docker/docker-compose.yml b/rpc/jsonrpc/go-server/docker/docker-compose.yml
new file mode 100644
index 0000000..49fc996
--- /dev/null
+++ b/rpc/jsonrpc/go-server/docker/docker-compose.yml
@@ -0,0 +1,9 @@
+version: '3'
+
+services:
+ hangzhouzk:
+ container_name: hangzhouzk
+ image: zookeeper
+ ports:
+ - 2181:2181
+ restart: on-failure
\ No newline at end of file
diff --git a/rpc/jsonrpc/go-server/pkg/user.go b/rpc/jsonrpc/go-server/pkg/user.go
index 586432e..f8d1841 100644
--- a/rpc/jsonrpc/go-server/pkg/user.go
+++ b/rpc/jsonrpc/go-server/pkg/user.go
@@ -51,7 +51,6 @@ type (
var (
DefaultUser = User{
ID: "0", Name: "Alex Stocks", Age: 31,
- // Birth: int(time.Date(1985, time.November, 10, 23, 0, 0, 0, time.UTC).Unix()),
Birth: int(time.Date(1985, 11, 24, 15, 15, 0, 0, time.Local).Unix()),
sex: Gender(MAN),
}
diff --git a/rpc/jsonrpc/go-server/pkg/user_provider.go b/rpc/jsonrpc/go-server/pkg/user_provider.go
index 3bf0ee7..43f0741 100644
--- a/rpc/jsonrpc/go-server/pkg/user_provider.go
+++ b/rpc/jsonrpc/go-server/pkg/user_provider.go
@@ -14,13 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package pkg
import (
"context"
"fmt"
- "strconv"
)
import (
@@ -32,7 +30,7 @@ import (
)
func init() {
- config.SetProviderService(new(UserProvider))
+ config.SetProviderService(&UserProvider{})
}
type UserProvider struct {
@@ -46,26 +44,25 @@ func (u *UserProvider) getUser(userID string) (*User, error) {
return nil, fmt.Errorf("invalid user id:%s", userID)
}
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}, rsp *User) error {
+func (u *UserProvider) GetUser(ctx context.Context, userID string) (*User, error) {
var (
err error
user *User
)
- gxlog.CInfo("req:%#v", req)
- user, err = u.getUser(req[0].(string))
+ gxlog.CInfo("userID:%#v", userID)
+ user, err = u.getUser(userID)
if err == nil {
- *rsp = *user
- gxlog.CInfo("rsp:%#v", rsp)
+ gxlog.CInfo("rsp:%#v", user)
}
- return err
+ return user, err
}
-func (u *UserProvider) GetUser0(id string, name string) (User, error) {
+func (u *UserProvider) GetUser0(userID string, name string) (User, error) {
var err error
- gxlog.CInfo("id:%s, name:%s", id, name)
- user, err := u.getUser(id)
+ gxlog.CInfo("userID:%s, name:%s", userID, name)
+ user, err := u.getUser(userID)
if err != nil {
return User{}, err
}
@@ -75,23 +72,25 @@ func (u *UserProvider) GetUser0(id string, name string) (User, error) {
return *user, err
}
-func (u *UserProvider) GetUser2(ctx context.Context, req []interface{}, rsp *User) error {
+func (u *UserProvider) GetUser2(ctx context.Context, userID string) (*User, error) {
var err error
- gxlog.CInfo("req:%#v", req)
- rsp.ID = strconv.FormatFloat(req[0].(float64), 'f', 0, 64)
- rsp.Sex = Gender(MAN).String()
- return err
+ gxlog.CInfo("userID:%#v", userID)
+ rsp := &User{
+ ID: userID,
+ Sex: Gender(MAN).String(),
+ }
+ return rsp, err
}
func (u *UserProvider) GetUser3() error {
return nil
}
-func (u *UserProvider) GetUsers(req []interface{}) ([]User, error) {
+func (u *UserProvider) GetUsers(req []interface{}) ([]*User, error) {
var err error
- gxlog.CInfo("req:%s", req)
+ gxlog.CInfo("userIDs:%s", req)
t := req[0].([]interface{})
user, err := u.getUser(t[0].(string))
if err != nil {
@@ -104,7 +103,7 @@ func (u *UserProvider) GetUsers(req []interface{}) ([]User, error) {
}
gxlog.CInfo("user1:%v", user1)
- return []User{*user, *user1}, err
+ return []*User{user, user1}, err
}
func (s *UserProvider) MethodMapper() map[string]string {
@@ -112,7 +111,3 @@ func (s *UserProvider) MethodMapper() map[string]string {
"GetUser2": "getUser",
}
}
-
-func (u *UserProvider) Reference() string {
- return "UserProvider"
-}
diff --git a/rpc/jsonrpc/go-server/pkg/user_provider1.go b/rpc/jsonrpc/go-server/pkg/user_provider1.go
index 85e393a..c456892 100644
--- a/rpc/jsonrpc/go-server/pkg/user_provider1.go
+++ b/rpc/jsonrpc/go-server/pkg/user_provider1.go
@@ -14,13 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package pkg
import (
"context"
"fmt"
- "strconv"
)
import (
@@ -32,7 +30,7 @@ import (
)
func init() {
- config.SetProviderService(new(UserProvider1))
+ config.SetProviderService(&UserProvider1{})
}
type UserProvider1 struct {
@@ -46,26 +44,25 @@ func (u *UserProvider1) getUser(userID string) (*User, error) {
return nil, fmt.Errorf("invalid user id:%s", userID)
}
-func (u *UserProvider1) GetUser(ctx context.Context, req []interface{}, rsp *User) error {
+func (u *UserProvider1) GetUser(ctx context.Context, userID string) (*User, error) {
var (
err error
user *User
)
- gxlog.CInfo("req:%#v", req)
- user, err = u.getUser(req[0].(string))
+ gxlog.CInfo("userID:%#v", userID)
+ user, err = u.getUser(userID)
if err == nil {
- *rsp = *user
- gxlog.CInfo("rsp:%#v", rsp)
+ gxlog.CInfo("rsp:%#v", user)
}
- return err
+ return user, err
}
-func (u *UserProvider1) GetUser0(id string, name string) (User, error) {
+func (u *UserProvider1) GetUser0(userID string, name string) (User, error) {
var err error
- gxlog.CInfo("id:%s, name:%s", id, name)
- user, err := u.getUser(id)
+ gxlog.CInfo("userID:%s, name:%s", userID, name)
+ user, err := u.getUser(userID)
if err != nil {
return User{}, err
}
@@ -75,21 +72,23 @@ func (u *UserProvider1) GetUser0(id string, name string) (User, error) {
return *user, err
}
-func (u *UserProvider1) GetUser2(ctx context.Context, req []interface{}, rsp *User) error {
+func (u *UserProvider1) GetUser2(ctx context.Context, userID string) (*User, error) {
var err error
- gxlog.CInfo("req:%#v", req)
- rsp.ID = strconv.FormatFloat(req[0].(float64), 'f', 0, 64)
- rsp.Sex = Gender(MAN).String()
- return err
+ gxlog.CInfo("userID:%#v", userID)
+ rsp := &User{
+ ID: userID,
+ Sex: Gender(MAN).String(),
+ }
+ return rsp, err
}
func (u *UserProvider1) GetUser3() error {
return nil
}
-func (u *UserProvider1) GetUsers(req []interface{}) ([]User, error) {
- return []User{}, nil
+func (u *UserProvider1) GetUsers(req []interface{}) ([]*User, error) {
+ return []*User{}, nil
}
func (s *UserProvider1) MethodMapper() map[string]string {
@@ -97,7 +96,3 @@ func (s *UserProvider1) MethodMapper() map[string]string {
"GetUser2": "getUser",
}
}
-
-func (u *UserProvider1) Reference() string {
- return "UserProvider1"
-}
diff --git a/rpc/jsonrpc/go-server/pkg/user_provider2.go b/rpc/jsonrpc/go-server/pkg/user_provider2.go
index 3887f9b..0a96acc 100644
--- a/rpc/jsonrpc/go-server/pkg/user_provider2.go
+++ b/rpc/jsonrpc/go-server/pkg/user_provider2.go
@@ -14,13 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package pkg
import (
"context"
"fmt"
- "strconv"
)
import (
@@ -32,7 +30,7 @@ import (
)
func init() {
- config.SetProviderService(new(UserProvider2))
+ config.SetProviderService(&UserProvider2{})
}
type UserProvider2 struct {
@@ -46,26 +44,25 @@ func (u *UserProvider2) getUser(userID string) (*User, error) {
return nil, fmt.Errorf("invalid user id:%s", userID)
}
-func (u *UserProvider2) GetUser(ctx context.Context, req []interface{}, rsp *User) error {
+func (u *UserProvider2) GetUser(ctx context.Context, userID string) (*User, error) {
var (
err error
user *User
)
- gxlog.CInfo("req:%#v", req)
- user, err = u.getUser(req[0].(string))
+ gxlog.CInfo("userID:%#v", userID)
+ user, err = u.getUser(userID)
if err == nil {
- *rsp = *user
- gxlog.CInfo("rsp:%#v", rsp)
+ gxlog.CInfo("rsp:%#v", user)
}
- return err
+ return user, err
}
-func (u *UserProvider2) GetUser0(id string, name string) (User, error) {
+func (u *UserProvider2) GetUser0(userID string, name string) (User, error) {
var err error
- gxlog.CInfo("id:%s, name:%s", id, name)
- user, err := u.getUser(id)
+ gxlog.CInfo("userID:%s, name:%s", userID, name)
+ user, err := u.getUser(userID)
if err != nil {
return User{}, err
}
@@ -75,23 +72,25 @@ func (u *UserProvider2) GetUser0(id string, name string) (User, error) {
return *user, err
}
-func (u *UserProvider2) GetUser2(ctx context.Context, req []interface{}, rsp *User) error {
+func (u *UserProvider2) GetUser2(ctx context.Context, userID string) (*User, error) {
var err error
- gxlog.CInfo("req:%#v", req)
- rsp.ID = strconv.FormatFloat(req[0].(float64), 'f', 0, 64)
- rsp.Sex = Gender(MAN).String()
- return err
+ gxlog.CInfo("userID:%#v", userID)
+ rsp := &User{
+ ID: userID,
+ Sex: Gender(MAN).String(),
+ }
+ return rsp, err
}
func (u *UserProvider2) GetUser3() error {
return nil
}
-func (u *UserProvider2) GetUsers(req []interface{}) ([]User, error) {
+func (u *UserProvider2) GetUsers(req []interface{}) ([]*User, error) {
var err error
- gxlog.CInfo("req:%s", req)
+ gxlog.CInfo("userIDs:%s", req)
t := req[0].([]interface{})
user, err := u.getUser(t[0].(string))
if err != nil {
@@ -99,7 +98,7 @@ func (u *UserProvider2) GetUsers(req []interface{}) ([]User, error) {
}
gxlog.CInfo("user:%v", user)
- return []User{*user}, err
+ return []*User{user}, err
}
func (s *UserProvider2) MethodMapper() map[string]string {
@@ -107,7 +106,3 @@ func (s *UserProvider2) MethodMapper() map[string]string {
"GetUser2": "getUser",
}
}
-
-func (u *UserProvider2) Reference() string {
- return "UserProvider2"
-}
diff --git a/rpc/jsonrpc/java-client/build.sh b/rpc/jsonrpc/java-client/build.sh
index c869acf..f92cdd9 100644
--- a/rpc/jsonrpc/java-client/build.sh
+++ b/rpc/jsonrpc/java-client/build.sh
@@ -15,7 +15,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# rm src/main/resources/META-INF/spring/dubbo.consumer.xml
-# cp src/main/resources/META-INF/spring/dubbo-protocol.consumer.xml src/main/resources/META-INF/spring/dubbo.consumer.xml
-# cp src/main/resources/META-INF/spring/jsonrpc-protocol.consumer.xml src/main/resources/META-INF/spring/dubbo.consumer.xml
mvn clean package -Dmaven.test.skip
diff --git a/rpc/jsonrpc/java-client/pom.xml b/rpc/jsonrpc/java-client/pom.xml
index 445b924..1519e6f 100644
--- a/rpc/jsonrpc/java-client/pom.xml
+++ b/rpc/jsonrpc/java-client/pom.xml
@@ -188,6 +188,14 @@
<build>
<plugins>
<plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>3.0.0</version>
+ <configuration>
+ <mainClass>com.alibaba.dubbo.container.Main</mainClass>
+ </configuration>
+ </plugin>
+ <plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
diff --git a/rpc/jsonrpc/java-client/src/main/java/com/ikurento/user/User.java b/rpc/jsonrpc/java-client/src/main/java/com/ikurento/user/User.java
index 7f228b3..d8d7c6e 100644
--- a/rpc/jsonrpc/java-client/src/main/java/com/ikurento/user/User.java
+++ b/rpc/jsonrpc/java-client/src/main/java/com/ikurento/user/User.java
@@ -41,11 +41,11 @@ public class User {
this.age = age;
}
- public String getId() {
+ public String getID() {
return id;
}
- public void setId(String id) {
+ public void setID(String id) {
this.id = id;
}
diff --git a/rpc/jsonrpc/java-server/build.sh b/rpc/jsonrpc/java-server/build.sh
index 7b5755b..3950ab0 100644
--- a/rpc/jsonrpc/java-server/build.sh
+++ b/rpc/jsonrpc/java-server/build.sh
@@ -15,6 +15,5 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# mvn dependency:sources
-mvn clean package -Dmaven.test.skip
-# mvn -X clean compile package -DskipTests=true
+mvn clean compile exec:java
+
diff --git a/rpc/jsonrpc/java-server/pom.xml b/rpc/jsonrpc/java-server/pom.xml
index 2710ab9..76e9730 100644
--- a/rpc/jsonrpc/java-server/pom.xml
+++ b/rpc/jsonrpc/java-server/pom.xml
@@ -146,6 +146,14 @@
<plugins>
<plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>3.0.0</version>
+ <configuration>
+ <mainClass>com.alibaba.dubbo.container.Main</mainClass>
+ </configuration>
+ </plugin>
+ <plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
diff --git a/rpc/jsonrpc/java-server/script/debug.sh b/rpc/jsonrpc/java-server/script/debug.sh
deleted file mode 100644
index 1038cd7..0000000
--- a/rpc/jsonrpc/java-server/script/debug.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-
-# jdb -classpath /Users/alex/tmp/us/conf:/Users/alex/tmp/us/lib/*:/Users/alex/test/java/dubbo/2.5.4/dubbo-remoting/dubbo-remoting-api/src/main/java/ com.alibaba.dubbo.container.Main
-jdb -classpath /Users/alex/tmp/us/conf:/Users/alex/tmp/us/lib/* -sourcepath /Users/alex/test/java/dubbo/2.5.4/dubbo-remoting/dubbo-remoting-api/src/main/java/:/Users/alex/tmp/java-server/src/main/java com.alibaba.dubbo.container.Main
-# jdb stop at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec:76
-# run
-
diff --git a/start_integrate_test.sh b/start_integrate_test.sh
index 91de649..8a287ab 100755
--- a/start_integrate_test.sh
+++ b/start_integrate_test.sh
@@ -112,6 +112,7 @@ array+=("rpc/triple/hessian2")
array+=("rpc/triple/msgpack")
array+=("rpc/triple/pb/dubbogo-grpc")
array+=("rpc/grpc")
+array+=("rpc/jsonrpc")
DOCKER_DIR=$(pwd)/integrate_test/dockercompose