妥当なデザインです。あなたはこのようなものを書くでしょう。あなたがあなた自身のperl exeutableが実際にある場所に/usr/bin/perl
を調整する必要があります、またはあなたはそれがどのようにについては
runt.exec('/bin/bash', '-c', 'perl', '/path/to/myperl.pl', Integer.toString(width));
を使用してパスを検索するために取得するためにシェルを呼び出すことができます。もちろん、
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();
}
イメージをクライアントに戻すには、Perlプログラムの動作についてはあまり言いませんが、ファイルを書き込む場所を指定するか、それ自体を決定して後でどこに置くかを教えてください。
Ifそれは前者です、あなたはおそらくパスを渡しますコマンドラインで別のパラメータを渡すために上記のへの呼び出しを延長するだけです
もしそれが後者なら、おそらくプログラムは新しいファイルを置いた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
}
あなたのソリューションは、私はすべての環境が同じノード(tomcatに、perlの)にインストールされている場合にのみ、良いと思われるの代わりにこのようになります。 – Ahmedy
jelasticでは、tomcatノードはcentosノードとは別です。彼らは2つの異なるPCのように振る舞います。ですから、同じノードにない限り、あなたのメソッドを使ってperlプログラムを呼び出すことはできません。 – Ahmedy