2014-03-27 35 views
0

我想打電話從GWT服務器bash腳本如何調用從GWT-RPC服務器(Java)的

我與GWT/RPC編寫了我的第一個應用程序,一個bash腳本,我需要調用服務器端的bash腳本(從MyOwnServiceImpl擴展RemoteServiceServlet實現MyOwnService)。

的ProcessBuilder不起作用

爲了做到這一點,我承認,我使用java.lang.ProcessBuilder中,這顯然是「不支持GAE」(我只是忽略了警告)。因爲它在服務器端運行,所以在我看來它應該可以工作。我覺得我錯過了一些東西。

即使正確導入了所需的軟件包,找到了二進制文件,執行也不會崩潰,但似乎阻止了正在執行的調用。但是這個調用只是不成功(例如,即使mkdir沒有在服務器上執行)。

有關職位沒有太大的幫助...

How to execute a Unix shell script via GWT?(沒有給出一個完整的答案,並在答題我不能簡單地評論) GWT + ProcessBuilder(提到正是我實現的解決方案,它是不爲我工作,見上面)

任何想法都將非常感謝,謝謝!

回答

0

在GWT應用沒有GAE如果你想讀出命令的結果,您可以使用Runtime.getRuntime().exec("some command"); ,你可以使用:

Process p = Runtime.getRuntime().exec("A command"); 
BufferedReader in = new BufferedReader(new InputStreamReader(p.getErrorStream())); 
StringBuilder builder = new StringBuilder(); 
String line = null; 
while ((line = in.readLine()) != null) { 
    builder.append(line + "\n"); 
} 
String result = builder.toString(); 

如果上面的命令不應該工作,我想你必須從你的項目中刪除GAE來運行一個bash腳本。

+0

感謝您的回答。所以你說這個問題是GAE。現在來了noob問題,我如何從我的項目中刪除它? – okw

+0

您可以創建一個新項目並取消選中「使用Google App Engine」複選框。然後你必須將你的代碼轉移到新的項目中,那麼上面的代碼應該可以工作。 – Akkusativobjekt

+0

這對我有效,謝謝! – okw

0
  1. 如果您的計算機上有服務器端,您可以使用GWT調用bash腳本。
  2. 對於汞的限制是GAE。沒有辦法跨越這個限制。
+0

謝謝。關於(1)我也認爲我可以,但似乎並不奏效,那是我的問題。 – okw

+0

你當地的env也GAE?請嘗試tomcat或其他java容器。 – jolestar

+0

我明白了。這確實是GAE。所以這可能是問題所在。現在有什麼方法可以輕鬆切換到Tomcat嗎? – okw