web-dev-qa-db-fra.com

Appel d'un script node.js depuis java

Comment appeler un fichier node.js dans Java et enregistrer les valeurs console.log dans une variable String?

16
Spaniard89

Il est possible pour une application Java de communiquer avec une application Node.JS en cours d'exécution. Par exemple, vous pouvez avoir une application Node.JS s'exécutant sur un port disponible et l'application Java peut communiquer avec elle via des sockets TCP.

http://nodejs.org/api/net.html

Vous pouvez également créer un serveur http et exposer un service de repos que votre application Java peut consommer.

http://nodejs.org/api/http.html

Ou, comme le dit md_5, vous pouvez utiliser Runtime.exec, puis appeler getInputStream sur le processus résultant.

http://docs.Oracle.com/javase/7/docs/api/Java/lang/Runtime.html

Les méthodes de communication entre node.js et Java ne diffèrent pas des autres communications inter-applications pouvant être réalisées.

Il est également possible d'appeler du code Java à partir de votre application Node.JS en utilisant quelque chose comme node-Java. 

https://github.com/nearinfinity/node-Java

4
Timothy Strimple

Vérifiez ces projets qui vous permettent d’exécuter des scripts node.js dans jvm

9
Somatik

Ne peut pas être fait. Pour JS normal, vous pouvez utiliser Rhino, mais pour Node, vous devez vous assurer qu'il se trouve dans le PATH, puis appelez Runtine.exec ou un ProcessBuilder avec ByteArrayOutputsreams pouvant ensuite être converti en chaînes. Le code de noeud ne peut pas accéder à Java et vice versa.

0
md_5

Oui, il est très facile d’exécuter un fichier node.js en utilisant Java.

import Java.io.FileReader;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class RunScriptFileDemo {
  public static void main(String[] args) {
      ScriptEngineManager manager = new ScriptEngineManager();
      ScriptEngine engine = manager.getEngineByName("js");
      try {
         FileReader reader = new FileReader("yourFile.js");
         engine.eval(reader);
         reader.close();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}
0
Mitul Maheshwari