0
我有一個JAX-WS webservice,它接收一個字符串作爲參數,調用一個Perl腳本,並返回轉換爲大寫字符串。它運行在Tomcat 8上(Eclipse上的localhost)。從Java調用Perl腳本(Eclipse中的JAX-WS)
當我從控制檯輸入:
curl -X POST --data "mystring=HelloWorld" http://localhost:8080/MyServices/api/generatePath
一切正常,除了Perl的電話。在調試器上,我看到該行被執行,但顯然沒有任何反應(甚至沒有發生錯誤)。如果我從控制檯運行perl /home/me/workspace/match.pl
,它可以很好地工作。 match.pl文件的路徑是正確的。
此外,process.exitValue()
回報2.
@Path("/")
public class MyServices {
@POST
@Path("/generatePath")
@Produces(MediaType.APPLICATION_JSON)
public Response generatePathService(
@FormParam("mystring") String myString) {
Process process = null;
try {
process = Runtime.getRuntime().exec("perl /home/me/workspace/match.pl --lang en");
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return Response.status(200).entity(myString.toUpperCase()).build();
}
}
我剛剛試了一下,仍然無法正常工作。該應用程序,可直接到達在執行run()之前返回 – Arturo
有沒有可能'追蹤'你的Perl腳本?我的意思是它運行?多遠?有沒有日誌文件或其他? – chris
這很奇怪,我剛剛用match.pl替換了一個hello.pl這樣做: 'use strict; use warnings; open(my $ fh,'>','report.txt'); print $ fh「我的第一個報告由perl \ n產生」;關閉$ fh;打印「完成\ n」'。該文件report.txt永遠不會創建。但是,我會說它運行,因爲p.exitvalue()= 0,但是,如果我將名稱hello.pl更改爲hello2.pl(未執行)它迴歸ns 2 – Arturo