如何从Tomcat Web应用程序运行PhantomJS

时间:2014-01-07 17:07:09

标签: linux tomcat grails groovy phantomjs

我正在尝试从运行在Linux上的Tomcat 7实例(Ubuntu 13.04)上的Grails应用程序运行PhantomJS。

我确定PhantomJS安装正确,因为我可以从命令行执行它。我用它来制作网页的屏幕截图(http://phantomjs.org/screen-capture.html)。

当我从命令行运行命令时,它运行良好,使用root用户:

phantomjs /home/user/captureScreen.js "http://xx.xx.xx.xx/chart" "/home/user/07012014050636114.png"

我相信没有必要共享JS代码,因为它在命令行中运行良好。

问题在于,当我从web-app(Grails)运行相同的命令时,它只返回一个0值,告诉我一切运行正常,但它没有创建PNG文件,也没有返回错误。 / p>

我正在以这种方式从Groovy调用命令:

String path = "phantomjs pathToJs.... etc"
def process = path.execute()
process.waitForOrKil(5000) // This runs in 1 to 2 seconds in the command line
println process.exitValue()

我尝试将tomcat7用户的写权限添加到JS文件所在的文件夹以及写入图像的位置,但仍然没有用,但我仍然相信它与权限有关

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

至于命令执行,我们在Grails应用程序中遇到了关于纯字符串表示法的问题。使用数组语法

   ["/usr/binphantom/js","/home/user/captureScreen.js","http://xx.xx.xx.xx/chart","‌​/home/user/07012014050636114.png"].execute()

让事情发挥作用。我认为它与shell扩展有关,它在Groovy中处理字符串的方式不同。