从nodejs运行tomcat

时间:2013-03-09 00:08:40

标签: javascript node.js tomcat

我正在尝试在nodejs中使用子进程在本地计算机上启动tomcat服务器。这是一个实验,将帮助我了解子进程的工作方式,并将有助于我正在进行的项目。我一直在看这里的文档:http://nodejs.org/api/child_process.html但我实际上有一个问题。

我想要做的是在本地某处运行nodejs,一旦我点击某处(甚至启动页面),该页面应该运行一个tomcat服务器,确保它已启动然后加载localhost:8080欢迎页面。一旦我在这里关闭了这个页面,就会调用nodejs API,它应该关闭tomcat(这部分现在不是必需的,只是实验的一部分)。谢谢!

1 个答案:

答案 0 :(得分:2)

看看这个npm模块Shelljs

  

ShellJS - 用于Node.js构建状态的Unix shell命令

     

ShellJS是Unix的可移植(Windows / Linux / OS X)实现   在Node.js API之上的shell命令。你可以用它来消除   你的shell脚本依赖于Unix,同时仍保留它   熟悉而强大的命令。您也可以全局安装它   你可以从Node项目外部运行它 - 告别那些   gnarly Bash脚本!

已在许多相关项目中测试过ShellJS

由于它能够调用脚本,因此您可以控制Tomcat的脚本以启动和关闭,并继续进行实验:)

ShellJS可以选择:

  

exec(命令[,选项] [,回调])

     

可用选项(默认情况下均为false):

async: Asynchronous execution. Defaults to true if a callback is provided.
silent: Do not echo program output to console.
     

示例:

     

var version = exec('node --version',{silent:true})。output;

     

var child = exec('some_long_running_process',{async:true});   child.stdout.on('data',function(data){/ * ...做点什么   数据... * /});

     

exec('some_long_running_process',函数(代码,输出){
  console.log('退出代码:',代码); console.log('程序输出:',   输出); });

     

同步执行给定命令,除非另有说明。   在同步模式下返回对象{code:...,output:...},   包含程序的输出(stdout + stderr)及其退出代码。   否则返回子进程对象,回调得到   参数(代码,输出)。

     

注意:对于长期存在的进程,最好以异步方式运行exec()   因为当前的同步实现使用了大量的CPU。这个   应尽快修复。