NodeからJavaを呼び出す場合

黄舟
リリース: 2017-09-21 09:36:28
オリジナル
1938 人が閲覧しました

この記事では、主に Java を呼び出すための Node のサンプル コードを紹介します。編集者がそれを参考として共有します。エディターに従って見てみましょう。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-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 = {
  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));
})
ログイン後にコピー

実行結果

Java側

ノード側

概要

Dubbo は非常に優れており、ヘシアン ネイティブ プロトコルのサポートを提供します。Node も非常に簡単に呼び出すことができますが、注意すべき点がいくつかあります:

    インターフェイス メソッドはオーバーロードできません (インターフェイス内のメソッド)異なるメソッド名を使用する必要があります)
  • カスタムタイプの名前空間はサーバー側とコンシューマ側で一貫している必要があります(com.yuanxin.paas.ssb.Arg)
  • サーバー側のカスタムタイプシリアル化インターフェイス (java.io.Serializable) を実装する必要があります
  • 単純なカスタム型構造を使用してみてください (ネストを避けてください)

以上がNodeからJavaを呼び出す場合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート