我有一个perl程序,它根据给定的宽度动态生成图像。我需要创建从客户端获取图像维的web服务,并将其传递给perl程序以创建映像,然后将其发送回客户端。

现在,在J弹性云上,我创建了3个节点:
我的问题:
发布于 2016-05-22 09:05:45
听起来是个合理的设计。你会写这样的东西。
import java.lang.Runtime;
int width = 99;
try {
Runtime runt = Runtime.getRuntime()
Process proc = runt.exec('/usr/bin/perl', '/path/to/myperl.pl', Integer.toString(width));
proc.waitFor();
}
catch (Exception ioe) {
ioe.printStackTrace();
}当然,您必须将/usr/bin/perl调整到您自己的perl可解释性的实际位置,或者您可以调用shell来获取它来搜索路径。
runt.exec( '/bin/bash', '-c', 'perl', '/path/to/myperl.pl', Integer.toString(width) );至于如何将映像返回给客户端,您不太了解Perl程序是如何工作的,但是要么告诉它在哪里编写文件,要么由它自己决定,然后告诉您将其放在何处
如果是前者,那么您可能会在命令行上传递路径,因此您只需将上面的调用扩展到runt.exec,以传递另一个参数
如果是后者,那么程序大概会打印到STDOUT,在那里它放置了新的文件,您需要从Java代码中读取该流来收集信息。与proc.waitFor()调用相比,应该是这样的
import java.io.*;
BufferedReader inp = new BufferedReader(
new InputStreamReader(proc.getInputStream())
);
while ( ( line = inp.readLine() ) != null ) {
// Process output of Perl code to get file location
}https://stackoverflow.com/questions/37372027
复制相似问题