Skip to content
Snippets Groups Projects
Commit 16a1f915 authored by fangyincheng's avatar fangyincheng
Browse files

Add:add lowercase function & update examples

parent 2539714b
No related branches found
No related tags found
No related merge requests found
......@@ -82,6 +82,10 @@ func (p *Proxy) Implement(v common.RPCService) {
numField := valueOfElem.NumField()
for i := 0; i < numField; i++ {
t := typeOf.Field(i)
methodName := t.Tag.Get("dubbo")
if methodName == "" {
methodName = t.Name
}
f := valueOfElem.Field(i)
if f.Kind() == reflect.Func && f.IsValid() && f.CanSet() {
if t.Type.NumIn() != 2 && t.Type.NumIn() != 3 {
......@@ -115,8 +119,8 @@ func (p *Proxy) Implement(v common.RPCService) {
funcOuts[0] = t.Type.Out(0)
// do method proxy here:
f.Set(reflect.MakeFunc(f.Type(), makeDubboCallProxy(t.Name, funcOuts)))
log.Debug("set method [%s]", t.Name)
f.Set(reflect.MakeFunc(f.Type(), makeDubboCallProxy(methodName, funcOuts)))
log.Debug("set method [%s]", methodName)
}
}
......
......@@ -17,9 +17,10 @@ import (
)
type TestService struct {
MethodOne func(context.Context, []interface{}, *struct{}) error
MethodTwo func([]interface{}, *struct{}) error
Echo func([]interface{}, *struct{}) error
MethodOne func(context.Context, []interface{}, *struct{}) error
MethodTwo func([]interface{}, *struct{}) error
MethodThree func([]interface{}, *struct{}) error `dubbo:"methodThree"`
Echo func([]interface{}, *struct{}) error
}
func (s *TestService) Service() string {
......@@ -48,6 +49,8 @@ func TestProxy_Implement(t *testing.T) {
assert.NoError(t, err)
err = p.Get().(*TestService).MethodTwo(nil, nil)
assert.NoError(t, err)
err = p.Get().(*TestService).MethodThree(nil, nil)
assert.NoError(t, err)
err = p.Get().(*TestService).Echo(nil, nil)
assert.NoError(t, err)
......
......@@ -69,6 +69,14 @@ func main() {
}
gxlog.CInfo("response result: %v", user)
gxlog.CInfo("\n\n\nstart to test dubbo - getUser")
user = &User{}
err = conMap["com.ikurento.user.UserProvider"].GetRPCService().(*UserProvider).GetUser2(context.TODO(), []interface{}{1}, user)
if err != nil {
fmt.Println("getUser - error: ", err)
}
gxlog.CInfo("response result: %v", user)
gxlog.CInfo("\n\n\nstart to test dubbo illegal method")
err = conMap["com.ikurento.user.UserProvider"].GetRPCService().(*UserProvider).GetUser1(context.TODO(), []interface{}{"A003"}, user)
if err != nil {
......
......@@ -78,6 +78,7 @@ func (User) JavaClassName() string {
type UserProvider struct {
GetUser func(ctx context.Context, req []interface{}, rsp *User) error
GetUser1 func(ctx context.Context, req []interface{}, rsp *User) error
GetUser2 func(ctx context.Context, req []interface{}, rsp *User) error `dubbo:"getUser"`
Echo func(ctx context.Context, req []interface{}, rsp *string) error // Echo represent EchoFilter will be used
}
......
......@@ -13,6 +13,7 @@ package com.ikurento.user;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import com.alibaba.dubbo.rpc.service.EchoService;
import java.util.List;
public class Consumer {
......@@ -39,6 +40,9 @@ public class Consumer {
private void testGetUser() throws Exception {
try {
EchoService echoService = (EchoService)userProvider;
Object status = echoService.$echo("OK");
System.out.println("echo: "+status);
User user1 = userProvider.GetUser("A003");
System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] " +
" UserInfo, Id:" + user1.getId() + ", name:" + user1.getName() + ", sex:" + user1.getSex().toString()
......
......@@ -24,12 +24,13 @@
<dubbo:application name="user-info-server"/>
<!-- 连接到哪个本地注册中心 -->
<dubbo:registry id="ikurento" address="zookeeper://127.0.0.1:2181" />
<dubbo:registry id="ikurento2" address="zookeeper://127.0.0.1:2182" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<!-- dubbo:protocol host="127.0.0.1" / -->
<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
<dubbo:protocol id="jsonrpc" name="jsonrpc" host="127.0.0.1" port="10010" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="demoService"/>
<dubbo:service registry="ikurento,ikurento2" timeout="3000" interface="com.ikurento.user.UserProvider" ref="demoService"/>
<dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="otherService" version="2.0"/>
<dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="otherService" group="as" version="2.0"/>
......
......@@ -50,7 +50,7 @@ func main() {
res := ""
err := conMap["com.ikurento.user.UserProvider"].GetRPCService().(*UserProvider).Echo(context.TODO(), []interface{}{"OK"}, &res)
if err != nil {
panic(err)
fmt.Println("echo - error: ", err)
}
gxlog.CInfo("res: %s", res)
......@@ -64,6 +64,14 @@ func main() {
}
gxlog.CInfo("response result: %v", user)
gxlog.CInfo("\n\n\nstart to test jsonrpc - getUser")
user = &JsonRPCUser{}
err = conMap["com.ikurento.user.UserProvider"].GetRPCService().(*UserProvider).GetUser2(context.TODO(), []interface{}{1}, user)
if err != nil {
fmt.Println("getUser - error: ", err)
}
gxlog.CInfo("response result: %v", user)
gxlog.CInfo("\n\n\nstart to test jsonrpc illegal method")
err = conMap["com.ikurento.user.UserProvider"].GetRPCService().(*UserProvider).GetUser1(context.TODO(), []interface{}{"A003"}, user)
if err != nil {
......
......@@ -32,7 +32,8 @@ func (u JsonRPCUser) String() string {
type UserProvider struct {
GetUser func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error
GetUser1 func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error
Echo func(ctx context.Context, req []interface{}, rsp *string) error // Echo represent EchoFilter will be used
GetUser2 func(ctx context.Context, req []interface{}, rsp *JsonRPCUser) error `dubbo:"getUser"`
Echo func(ctx context.Context, req []interface{}, rsp *string) error // Echo represent EchoFilter will be used
}
func (u *UserProvider) Service() string {
......
......@@ -13,6 +13,7 @@ package com.ikurento.user;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import com.alibaba.dubbo.rpc.service.EchoService;
import java.util.List;
public class Consumer {
......@@ -39,6 +40,16 @@ public class Consumer {
private void testGetUser() throws Exception {
try {
EchoService echoService = (EchoService)userProvider;
Object status = echoService.$echo("OK");
System.out.println("echo: "+status);
} catch (Exception e) {
e.printStackTrace();
}
try {
EchoService echoService = (EchoService)userProvider;
Object status = echoService.$echo("OK");
System.out.println("echo: "+status);
User user1 = userProvider.GetUser("A003");
System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] " +
" UserInfo, Id:" + user1.getId() + ", name:" + user1.getName() + ", sex:" + user1.getSex().toString()
......
......@@ -24,12 +24,13 @@
<dubbo:application name="user-info-server"/>
<!-- 连接到哪个本地注册中心 -->
<dubbo:registry id="ikurento" address="zookeeper://127.0.0.1:2181" />
<dubbo:registry id="ikurento2" address="zookeeper://127.0.0.1:2182" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<!-- dubbo:protocol host="127.0.0.1" / -->
<dubbo:protocol id="dubbo" name="dubbo" host="127.0.0.1" port="20010" />
<dubbo:protocol id="jsonrpc" name="jsonrpc" host="127.0.0.1" port="10010" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="demoService"/>
<dubbo:service registry="ikurento,ikurento2" timeout="3000" interface="com.ikurento.user.UserProvider" ref="demoService"/>
<dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="otherService" version="2.0"/>
<dubbo:service registry="ikurento" timeout="3000" interface="com.ikurento.user.UserProvider" ref="otherService" group="as" version="2.0"/>
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment