diff --git a/examples/dubbo/go-client/app/client.go b/examples/dubbo/go-client/app/client.go index c95654267dd6ba2a8400888e0fcb6d299fad0cf8..89559f0b93a77aefa95b96a2428d45b6bbc3b2d7 100644 --- a/examples/dubbo/go-client/app/client.go +++ b/examples/dubbo/go-client/app/client.go @@ -24,11 +24,11 @@ import ( ) import ( - "github.com/dubbo/go-for-apache-dubbo/common/logger" "github.com/dubbogo/hessian2" ) import ( + "github.com/dubbo/go-for-apache-dubbo/common/logger" _ "github.com/dubbo/go-for-apache-dubbo/common/proxy/proxy_factory" "github.com/dubbo/go-for-apache-dubbo/config" _ "github.com/dubbo/go-for-apache-dubbo/protocol/dubbo" @@ -99,6 +99,13 @@ func main() { println("response result: %v", user) } + println("\n\n\nstart to test dubbo - getErr") + user = &User{} + err = conMap["com.ikurento.user.UserProvider"].GetRPCService().(*UserProvider).GetErr(context.TODO(), []interface{}{"A003"}, user) + if err != nil { + println("getErr - error: %v", err) + } + println("\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 { diff --git a/examples/dubbo/go-client/app/user.go b/examples/dubbo/go-client/app/user.go index 7e9d3daedf756b79318160995ace0d8222b39b05..65fc30f1790100b73e61bb3c00193d62ebc5240e 100644 --- a/examples/dubbo/go-client/app/user.go +++ b/examples/dubbo/go-client/app/user.go @@ -94,6 +94,7 @@ func (User) JavaClassName() string { type UserProvider struct { GetUsers func(req []interface{}) ([]interface{}, error) + GetErr func(ctx context.Context, req []interface{}, rsp *User) error GetUser func(ctx context.Context, req []interface{}, rsp *User) error GetUser0 func(id string, name string) (User, error) GetUser1 func(ctx context.Context, req []interface{}, rsp *User) error diff --git a/examples/dubbo/go-server/app/user.go b/examples/dubbo/go-server/app/user.go index 427125bd1329668c24e9dc46a94d55cfb362a472..87a4ccbcd3375f220bb041ba209df77b66ba66d1 100644 --- a/examples/dubbo/go-server/app/user.go +++ b/examples/dubbo/go-server/app/user.go @@ -142,6 +142,10 @@ func (u *UserProvider) GetUser(ctx context.Context, req []interface{}, rsp *User return err } +func (u *UserProvider) GetErr(ctx context.Context, req []interface{}, rsp *User) error { + return perrors.New("exception") +} + func (u *UserProvider) GetUser0(id string, name string) (User, error) { var err error diff --git a/examples/dubbo/go-server/profiles/dev/server.yml b/examples/dubbo/go-server/profiles/dev/server.yml index 6477a6638540e757452c737173088b2af7fe3323..7e10dc627ad218f0b61ce38b326d1c333ae45749 100644 --- a/examples/dubbo/go-server/profiles/dev/server.yml +++ b/examples/dubbo/go-server/profiles/dev/server.yml @@ -42,7 +42,7 @@ services: protocols: - name: "dubbo" - ip : "127.0.0.1" +# ip : "127.0.0.1" port : 20000 #- name: "jsonrpc" # ip: "127.0.0.1" diff --git a/examples/dubbo/go-server/profiles/release/server.yml b/examples/dubbo/go-server/profiles/release/server.yml index 728e8802dd5d49aef4336597a6810724d0836c16..b46c3304fecb1ef2ae9586bf19c1070beb721e37 100644 --- a/examples/dubbo/go-server/profiles/release/server.yml +++ b/examples/dubbo/go-server/profiles/release/server.yml @@ -42,7 +42,7 @@ services: protocols: - name: "dubbo" - ip : "127.0.0.1" +# ip : "127.0.0.1" port : 20000 #- name: "jsonrpc" # ip: "127.0.0.1" diff --git a/examples/dubbo/go-server/profiles/test/server.yml b/examples/dubbo/go-server/profiles/test/server.yml index 728e8802dd5d49aef4336597a6810724d0836c16..b46c3304fecb1ef2ae9586bf19c1070beb721e37 100644 --- a/examples/dubbo/go-server/profiles/test/server.yml +++ b/examples/dubbo/go-server/profiles/test/server.yml @@ -42,7 +42,7 @@ services: protocols: - name: "dubbo" - ip : "127.0.0.1" +# ip : "127.0.0.1" port : 20000 #- name: "jsonrpc" # ip: "127.0.0.1" diff --git a/examples/dubbo/java-client/src/main/java/com/ikurento/user/Consumer.java b/examples/dubbo/java-client/src/main/java/com/ikurento/user/Consumer.java index b410813c74a7432cbbe1f2e7627faba9ebb17e70..0e4a9267715b27ebc6f1bd5174d579461072f276 100644 --- a/examples/dubbo/java-client/src/main/java/com/ikurento/user/Consumer.java +++ b/examples/dubbo/java-client/src/main/java/com/ikurento/user/Consumer.java @@ -51,7 +51,16 @@ public class Consumer { System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] " + " UserInfo, Id:" + user2.getId() + ", name:" + user2.getName() + ", sex:" + user2.getSex().toString() + ", age:" + user2.getAge() + ", time:" + user2.getTime().toString()); + + User user9 = userProvider.GetUser1("A003"); + } catch (Exception e) { + System.out.println("*************exception***********"); + e.printStackTrace(); + } + try { + userProvider.GetErr("A003"); } catch (Exception e) { + System.out.println("*************exception***********"); e.printStackTrace(); } } diff --git a/examples/dubbo/java-client/src/main/java/com/ikurento/user/UserProvider.java b/examples/dubbo/java-client/src/main/java/com/ikurento/user/UserProvider.java index d5bce8105673a24d78ddd3a636788d1ccf8e57a6..036f46332105710ffcc53465b487ada860c25172 100644 --- a/examples/dubbo/java-client/src/main/java/com/ikurento/user/UserProvider.java +++ b/examples/dubbo/java-client/src/main/java/com/ikurento/user/UserProvider.java @@ -20,6 +20,8 @@ import java.util.List; public interface UserProvider { User GetUser(String userId); + User GetErr(String userId) throws Exception; + User GetUser1(String userId); List<User> GetUsers(List<String> userIdList); User GetUser0(String userId, String name); diff --git a/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProvider.java b/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProvider.java index b75740bbcd26a6438d22f7d3bf08fa5e316f7aa7..bb1d9a9d42444b1782d919c6a62ac2fc60e509b1 100644 --- a/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProvider.java +++ b/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProvider.java @@ -14,6 +14,8 @@ public interface UserProvider { User GetUser0(String userId, String name); + User GetErr(String userId) throws Exception; + Map<String, User> GetUserMap(List<String> userIdList); User getUser(int usercode); diff --git a/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java b/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java index f0d7faf3df40c3d422407ddf4d2f2c501e1efdf7..9eaf989a8204be5a7b0065b23dfec88eff837854 100644 --- a/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java +++ b/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderAnotherImpl.java @@ -35,7 +35,9 @@ public class UserProviderAnotherImpl implements UserProvider { public User GetUser0(String userId, String name) { return new User(userId, name, 48); } - + public User GetErr(String userId) throws Exception { + throw new Exception("exception"); + } public List<User> GetUsers(ArrayList<String> userIdList) { Iterator it = userIdList.iterator(); List<User> userList = new ArrayList<User>(); diff --git a/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java b/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java index 1311bd807d59d8336f4ada1296d3a05abd31a548..f8875651096ef719182eb0eeffb779de16425702 100644 --- a/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java +++ b/examples/dubbo/java-server/src/main/java/com/ikurento/user/UserProviderImpl.java @@ -32,6 +32,9 @@ public class UserProviderImpl implements UserProvider { public User GetUser(String userId) { return new User(userId, "zhangsan", 18); } + public User GetErr(String userId) throws Exception { + throw new Exception("exception"); + } public User GetUser0(String userId, String name) { return new User(userId, name, 18); } diff --git a/examples/jsonrpc/go-client/app/client.go b/examples/jsonrpc/go-client/app/client.go index b71f0efa20243ddf2635c56ee0eca7340db6ce03..3793468ce64c0f98e7f5125c4e17b318435985fe 100644 --- a/examples/jsonrpc/go-client/app/client.go +++ b/examples/jsonrpc/go-client/app/client.go @@ -25,9 +25,6 @@ import ( import ( "github.com/dubbo/go-for-apache-dubbo/common/logger" -) - -import ( _ "github.com/dubbo/go-for-apache-dubbo/common/proxy/proxy_factory" "github.com/dubbo/go-for-apache-dubbo/config" _ "github.com/dubbo/go-for-apache-dubbo/protocol/jsonrpc" diff --git a/filter/impl/echo_filter.go b/filter/impl/echo_filter.go index 22ac6abeef6981c50fcec46ca55a7e6edf47bc08..0eb2e0d0f79cf355d2efc08055f1d9cc683376dd 100644 --- a/filter/impl/echo_filter.go +++ b/filter/impl/echo_filter.go @@ -14,13 +14,10 @@ package impl -import ( - "github.com/dubbo/go-for-apache-dubbo/common/logger" -) - import ( "github.com/dubbo/go-for-apache-dubbo/common/constant" "github.com/dubbo/go-for-apache-dubbo/common/extension" + "github.com/dubbo/go-for-apache-dubbo/common/logger" "github.com/dubbo/go-for-apache-dubbo/filter" "github.com/dubbo/go-for-apache-dubbo/protocol" ) diff --git a/go.mod b/go.mod index a45f3840b9b3e57e7b773a02ebef3918b052fd7e..ec78eaf90c88503a0af6a3510e2564d503be9555 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module github.com/dubbo/go-for-apache-dubbo require ( github.com/dubbogo/getty v0.0.0-20190523180329-bdf5e640ea53 - github.com/dubbogo/hessian2 v0.0.0-20190526221400-d5610bbd0a41 + github.com/dubbogo/hessian2 v0.0.0-20190604191323-5290af08fb56 github.com/pkg/errors v0.8.1 github.com/samuel/go-zookeeper v0.0.0-20180130194729-c4fab1ac1bec github.com/stretchr/testify v1.3.0 diff --git a/go.sum b/go.sum index 3da2865342a319a4351757706f31a313afe850ed..db094a9133b7aa65f0eaeb9274499fbc3141b081 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dubbogo/getty v0.0.0-20190523180329-bdf5e640ea53 h1:bniSNoC4xnAbrx4estwc9F0qkWnh6ZDsAS0y9d7mPos= github.com/dubbogo/getty v0.0.0-20190523180329-bdf5e640ea53/go.mod h1:cRMSuoCmwc5lULFFnYZTxyCfZhObmRTNbS7XRnPNHSo= -github.com/dubbogo/hessian2 v0.0.0-20190526221400-d5610bbd0a41 h1:lNtW7+aN8oBdCoEuny0rOqOkL5duI4Cu3+G8vqibX48= -github.com/dubbogo/hessian2 v0.0.0-20190526221400-d5610bbd0a41/go.mod h1:XFGDn4oSZX26zkcfhkM/fCJrOqwQJxk/xgWW1KMJBKM= +github.com/dubbogo/hessian2 v0.0.0-20190604191323-5290af08fb56 h1:5ZhIvx1pqtpRSfUzcc6jkF9pFsx/DcwymDuuaM3jFuw= +github.com/dubbogo/hessian2 v0.0.0-20190604191323-5290af08fb56/go.mod h1:XFGDn4oSZX26zkcfhkM/fCJrOqwQJxk/xgWW1KMJBKM= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q= diff --git a/protocol/dubbo/client_test.go b/protocol/dubbo/client_test.go index 216d2e10dd2fafb5decb08856ea2258b661004c7..fe18e4de4d40f41cc7bf0ad1eddca0904e781e6c 100644 --- a/protocol/dubbo/client_test.go +++ b/protocol/dubbo/client_test.go @@ -16,13 +16,13 @@ package dubbo import ( "context" - "github.com/dubbogo/hessian2" "sync" "testing" "time" ) import ( + "github.com/dubbogo/hessian2" perrors "github.com/pkg/errors" "github.com/stretchr/testify/assert" ) @@ -81,7 +81,7 @@ func TestClient_Call(t *testing.T) { user = &User{} err = c.Call("127.0.0.1:20000", url, "GetUser1", []interface{}{"1", "username"}, user) - assert.EqualError(t, err, "java exception:error") + assert.EqualError(t, err, "got exception: error") user2 := []interface{}{} err = c.Call("127.0.0.1:20000", url, "GetUser2", []interface{}{"1", "username"}, &user2) diff --git a/protocol/dubbo/listener.go b/protocol/dubbo/listener.go index fc56050c12a196753aac606dbbc8a801e7e79040..9cb4ee69aed2abfcbbd8d1467a923d8e431f920a 100644 --- a/protocol/dubbo/listener.go +++ b/protocol/dubbo/listener.go @@ -212,7 +212,7 @@ func (h *RpcServerHandler) OnMessage(session getty.Session, pkg interface{}) { constant.VERSION_KEY: p.Service.Version, })) if err := result.Error(); err != nil { - p.Header.ResponseStatus = hessian.Response_SERVER_ERROR + p.Header.ResponseStatus = hessian.Response_OK p.Body = err h.reply(session, p, hessian.PackageResponse) return @@ -261,15 +261,15 @@ func (h *RpcServerHandler) callService(req *DubboPackage, ctx context.Context) { defer func() { if e := recover(); e != nil { - req.Header.ResponseStatus = hessian.Response_BAD_REQUEST + req.Header.ResponseStatus = hessian.Response_SERVER_ERROR if err, ok := e.(error); ok { logger.Errorf("callService panic: %#v", err) - req.Body = e.(error) + req.Body = perrors.WithStack(err) } else if err, ok := e.(string); ok { logger.Errorf("callService panic: %#v", perrors.New(err)) req.Body = perrors.New(err) } else { - logger.Errorf("callService panic: %#v", e) + logger.Errorf("callService panic: %#v, this is impossible.", e) req.Body = e } } @@ -278,7 +278,7 @@ func (h *RpcServerHandler) callService(req *DubboPackage, ctx context.Context) { svcIf := req.Body.(map[string]interface{})["service"] if svcIf == nil { logger.Errorf("service not found!") - req.Header.ResponseStatus = hessian.Response_SERVICE_NOT_FOUND + req.Header.ResponseStatus = hessian.Response_BAD_REQUEST req.Body = perrors.New("service not found") return } @@ -286,7 +286,7 @@ func (h *RpcServerHandler) callService(req *DubboPackage, ctx context.Context) { method := svc.Method()[req.Service.Method] if method == nil { logger.Errorf("method not found!") - req.Header.ResponseStatus = hessian.Response_SERVICE_NOT_FOUND + req.Header.ResponseStatus = hessian.Response_BAD_REQUEST req.Body = perrors.New("method not found") return } @@ -323,8 +323,8 @@ func (h *RpcServerHandler) callService(req *DubboPackage, ctx context.Context) { retErr = returnValues[1].Interface() } if retErr != nil { - req.Header.ResponseStatus = hessian.Response_SERVER_ERROR - req.Body = retErr.(error) + req.Header.ResponseStatus = hessian.Response_OK + req.Body = perrors.WithStack(retErr.(error)) } else { req.Body = replyv.Interface() } diff --git a/protocol/protocolwrapper/protocol_filter_wrapper.go b/protocol/protocolwrapper/protocol_filter_wrapper.go index e7cb227d51215b7a0bfc8e56fde86f1a5bf18777..f6583f99ed3f9a0b3ff0f3b1ff46c9c637de39ba 100644 --- a/protocol/protocolwrapper/protocol_filter_wrapper.go +++ b/protocol/protocolwrapper/protocol_filter_wrapper.go @@ -15,7 +15,6 @@ package protocolwrapper import ( - "github.com/dubbo/go-for-apache-dubbo/filter" "strings" ) @@ -23,6 +22,7 @@ import ( "github.com/dubbo/go-for-apache-dubbo/common" "github.com/dubbo/go-for-apache-dubbo/common/constant" "github.com/dubbo/go-for-apache-dubbo/common/extension" + "github.com/dubbo/go-for-apache-dubbo/filter" "github.com/dubbo/go-for-apache-dubbo/protocol" ) diff --git a/registry/directory/directory.go b/registry/directory/directory.go index 635e2283b4b003e22fe3e4a4df743d7d57b06dd1..4c6b22db1cde469b8291e588013be874660a2703 100644 --- a/registry/directory/directory.go +++ b/registry/directory/directory.go @@ -20,7 +20,6 @@ import ( ) import ( - "github.com/dubbo/go-for-apache-dubbo/common/logger" perrors "github.com/pkg/errors" ) @@ -29,6 +28,7 @@ import ( "github.com/dubbo/go-for-apache-dubbo/common" "github.com/dubbo/go-for-apache-dubbo/common/constant" "github.com/dubbo/go-for-apache-dubbo/common/extension" + "github.com/dubbo/go-for-apache-dubbo/common/logger" "github.com/dubbo/go-for-apache-dubbo/protocol" "github.com/dubbo/go-for-apache-dubbo/protocol/protocolwrapper" "github.com/dubbo/go-for-apache-dubbo/registry" diff --git a/registry/protocol/protocol.go b/registry/protocol/protocol.go index 0c1789ac6593d33289d66d2d63689f95f534c1e4..24763c9d52fbaf84e5554953348a51ae105aebd6 100644 --- a/registry/protocol/protocol.go +++ b/registry/protocol/protocol.go @@ -18,14 +18,11 @@ import ( "sync" ) -import ( - "github.com/dubbo/go-for-apache-dubbo/common/logger" -) - import ( "github.com/dubbo/go-for-apache-dubbo/common" "github.com/dubbo/go-for-apache-dubbo/common/constant" "github.com/dubbo/go-for-apache-dubbo/common/extension" + "github.com/dubbo/go-for-apache-dubbo/common/logger" "github.com/dubbo/go-for-apache-dubbo/protocol" "github.com/dubbo/go-for-apache-dubbo/protocol/protocolwrapper" "github.com/dubbo/go-for-apache-dubbo/registry" diff --git a/registry/zookeeper/listener.go b/registry/zookeeper/listener.go index b6446e7fcc3dd46515e9e50ad2cdbc323263078e..13ccd86faf5abce2a0369ae61b66d18ae7190ec7 100644 --- a/registry/zookeeper/listener.go +++ b/registry/zookeeper/listener.go @@ -23,11 +23,14 @@ import ( ) import ( - "github.com/dubbo/go-for-apache-dubbo/common/logger" perrors "github.com/pkg/errors" "github.com/samuel/go-zookeeper/zk" ) +import ( + "github.com/dubbo/go-for-apache-dubbo/common/logger" +) + import ( "github.com/dubbo/go-for-apache-dubbo/common" "github.com/dubbo/go-for-apache-dubbo/registry"