omnip620 / node-zookeeper-dubbo

A middleware helps node to communicate dubbo by using its default protocol, which is registered in zookeeper
300 stars 80 forks source link

failed to invoke remote proxy method #68

Closed lichenabson closed 6 years ago

lichenabson commented 6 years ago

调用service上方法,报错Pcom.alibaba.dubbo.rpc.RpcException: Failed to invoke remote proxy method sendSmsAllowRepeat to registry://192.168.1.119:2181/com.alibaba.dubbo.registry.RegistryService?application=push-t 这是node


const app = require('express')();
const opt = {
    application: {
        name: '56454'
    },
    register: '192.168.1.119:2181',// zookeeper url
    dubboVer: '2.5.3', // dubbo服务端版本号
    root: 'dubbo',
    dependencies: {
        provider: {
            interface: 'com.gkoudai.pushmessage.net.SmsRPCService', // service接口地址
           /* version: '2.5.3',*/
            timeout: 6000,
            group: 'lichentest',
            methodSignature: {
                sendSmsAllowRepeat: (clientName, rpcSmsParamBean, repeatFlag) => {
                    return [];
                },
            }
        }
    }
}

const customerObj = {
    $class: 'com.gkoudai.pushmessage.bean.RPCSmsParamBean',
    $: {
        phone: {
            $class: 'java.util.List', $: ['18115185660']
        },
        paramMap: {
            $class: 'java.util.Map',
            $: {
                'code':'2185',
                'product':'test'
            }
        },
        templateCode: {
            $class: 'java.lang.String', $: 'lalaslda'
        },
        sign: {
            $class: 'java.lang.String', $: 'test'
        }
    }
};

opt.java = require('js-to-java')

const Dubbo = new nzd(opt);

app.get('/foo', (req, res) => {
    console.log(Dubbo.provider)
    Dubbo.provider
        .sendSmsAllowRepeat({$class: 'java.lang.String', $: 'LiChenTestClient',},customerObj,{$class: 'java.lang.String', $: '123123',})
        .then(data => res.send(data))
        .catch(err => res.send(err))
})

app.listen(9090)```

这是java
RPCResponseBean sendSmsAllowRepeat(String clientName,RPCSmsParamBean rpcSmsParamBean, String repeatFlag);
public class RPCSmsParamBean implements Serializable {
    private List<String> phone;//手机号码
    private Map<String,String> paramMap;//变量参数
    private String templateCode;//模板id
    private String sign;//短信签名

在node中打印dubbo.provider已经可以找到方法,但是调用失败
java端可以调用
omnip620 commented 6 years ago

你把 methodSignature 这个属性删掉 其它地方不变 试试看

lichenabson commented 6 years ago

@p412726700 可以了,想给你多点几个star

omnip620 commented 6 years ago

@lichenabson 哈哈哈哈哈 x宝上有代刷服务