Node调用Java的示例代码

2020-06-17 05:36:32易采站长站整理

Java 端作为服务提供者,基于Dubbo 实现服务并通过 Dubbo Hessian 扩展暴露服务;Node 端作为服务消费者,通过node-hessian 调用 Java 端的服务。

Java 端

服务接口


package com.yuanxin.paas.ssb;

public interface TestService {

/**
* 测试:无参,无返回值。
*/
void test();

/**
* 测试:原生类型参数与返回值。
*
* @param i
* @return
*/
String test0(int i);

/**
* 测试:无参,自定义类型返回值。
*
* @return
*/
Result test1();

/**
* 测试:自定义类型参数,无返回值。
*
* @param arg
*/
void test2(Arg arg);

/**
* 测试:自定义参数,自定义返回值。
*
* @param arg
* @return
*/
Result test3(final Arg arg);
}

自定义参数类


package com.yuanxin.paas.ssb;

import java.io.Serializable;

public class Arg implements Serializable {

private int i;

public int getI() {
return i;
}

public void setI(int i) {
this.i = i;
}

}

自定义返回值类


package com.yuanxin.paas.ssb;

import java.io.Serializable;

public class Result implements Serializable {

private int i;

private String string;

public int getI() {
return i;
}

public void setI(int i) {
this.i = i;
}

public String getString() {
return string;
}

public void setString(String string) {
this.string = string;
}

}

Dubbo 配置略。

Node 端

node-hessian

安装 node-hessian:


npm install hessian-proxy

调用服务接口


var Proxy = require('hessian-proxy').Proxy;

var proxy = new Proxy('http://127.0.0.1:9098/test-provider/provider/com.yuanxin.paas.ssb.TestService', '', '', proxy);

proxy.invoke('test', null, function (err, reply) {
console.log('test: ' + reply);
});

proxy.invoke('test0', [25], function (err, reply) {
console.log('test0: ' + JSON.stringify(reply));
})

proxy.invoke('test1', null, function (err, reply) {
if (err) {
console.log('test1: ' + err);
}

console.log('test1: ' + JSON.stringify(reply));
})

var argForTest2 = {
i: 2
};

argForTest2.__type__ = 'com.yuanxin.paas.ssb.Arg';

proxy.invoke('test2', [argForTest2], function (err, reply) {
if (err) {
console.log('test2: ' + err);
}

console.log('test2: ' + JSON.stringify(reply));
})

var argForTest3 = {