Heim  >  Artikel  >  Java  >  Fall, in dem Java von Node aufgerufen wird

Fall, in dem Java von Node aufgerufen wird

黄舟
黄舟Original
2017-09-21 09:36:281906Durchsuche

In diesem Artikel wird hauptsächlich der Beispielcode für Node zum Aufrufen von Java vorgestellt. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor, um einen Blick darauf zu werfen

Die Java-Seite fungiert als Dienstanbieter, implementiert auf Dubbo basierende Dienste und stellt Dienste über die Dubbo-Hesse-Erweiterung bereit. Die Knotenseite fungiert als Dienstkonsument und ruft über diese Seite Dienste auf Knoten-Hessisch.

Java-Seite

Service-Schnittstelle


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);
}

Benutzerdefinierte Parameterklasse


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;
  }
 
}

Benutzerdefinierte Rückgabewertklasse


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-Konfiguration wird weggelassen.

Knotenseite

node-hessian

Node-hessian installieren:


npm install hessian-proxy

Serviceschnittstelle aufrufen


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 = {
  i: 3
};
 
argForTest3.__type__ = 'com.yuanxin.paas.ssb.Arg';
 
proxy.invoke('test3', [argForTest3], function (err, reply) {
  if (err) {
    console.log('test3: ' + err);
  }
 
  console.log('test3: ' + JSON.stringify(reply));
})

Laufendes Ergebnis

Java-Seite

Knotenseite

Zusammenfassung

Dubbo ist sehr gut und bietet Unterstützung für das hessische native Protokoll; Node ist auch sehr einfach aufzurufen, aber es gibt noch ein paar Punkte Zu beachten Schauen wir uns Folgendes an:

  • Schnittstellenmethoden können nicht überladen werden (Methoden in der Schnittstelle müssen unterschiedliche Methodennamen verwenden)

  • Benutzerdefinierter Typ Namespace-Dienst Der Client und der Verbraucher müssen konsistent sein (com.yuanxin.paas.ssb.Arg)

  • Der serverseitige benutzerdefinierte Typ muss die Serialisierungsschnittstelle implementieren (java.io.Serializable )

  • Versuchen Sie, einfache benutzerdefinierte Typstrukturen zu verwenden (vermeiden Sie Verschachtelungen)

Das obige ist der detaillierte Inhalt vonFall, in dem Java von Node aufgerufen wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn