diff --git a/protocol/dubbo/impl/hessian.go b/protocol/dubbo/impl/hessian.go
index b686d5728d026fdb1e37180d5a9d24d32bf4b7bc..066400d58bebdbf7cfc0f6e172e9e1537a95ae1c 100644
--- a/protocol/dubbo/impl/hessian.go
+++ b/protocol/dubbo/impl/hessian.go
@@ -489,6 +489,10 @@ func getArgType(v interface{}) string {
 		}
 		switch t.Kind() {
 		case reflect.Struct:
+			v, ok := v.(hessian.POJO)
+			if ok {
+				return v.JavaClassName()
+			}
 			return "java.lang.Object"
 		case reflect.Slice, reflect.Array:
 			if t.Elem().Kind() == reflect.Struct {