[JSP ] Jsp呼叫Java程式(內含shell)

看板java作者 (海豹)時間9年前 (2014/11/13 14:42), 9年前編輯推噓3(307)
留言10則, 4人參與, 最新討論串1/1
各位前輩好 小弟最近碰到一個弔詭的事情,想了好幾天都解決不了 問題敘述: 我用Jsp去呼叫Java的一個method起來跑, 這個java是對參數做處理之後 在呼叫sh檔起來跑(win7系統, 安裝Cygwin) 為了測試問題所在, 其中一個版本是呼叫sh檔, 另外一個版本是呼叫bat 但是效率上就出現極大的差異 -------------------------------------------------------------- Jsp -> Java -> bat 1秒 -> sh 50秒! Java -> bat 1秒 -> sh 1秒 -------------------------------------------------------------- 部分程式碼: 1. bat&sh檔內容都是很簡單的指令, 應不是指令過於複雜所造成的效率問題 echo "1234" > 1 2. Jsp端呼叫Java程式 <% Test t = new Test(); String result = t.method(參數1, 參數2, ...); %> <%= result %> 3. Java程式呼叫sh檔 Process p = Runtime.getRuntime().exec( shpath ); //shpath是shell檔路徑 p.waitFor(); -------------------------------------------------------------- 簡單看過整體流程, 程式就是碰到要執行sh檔的時候會卡住一段時間約40秒 接著sh檔執行起來就會很快。 麻煩各位前輩幫忙提津QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.121.197.112 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1415860942.A.170.html ※ 編輯: masan22305 (140.121.197.112), 11/13/2014 14:42:41 ※ 編輯: masan22305 (140.121.197.112), 11/13/2014 15:54:55

11/13 16:40, , 1F
為什麼bat 要呼叫 sh?
11/13 16:40, 1F

11/13 16:43, , 2F
bat 及 sh 內容? 有無傳參數進入或是取得回傳值?
11/13 16:43, 2F
※ 編輯: masan22305 (140.121.197.112), 11/13/2014 16:58:32

11/13 16:58, , 3F
抱歉, 說明不夠詳細, 一個版本是呼叫bat另一版呼叫sh
11/13 16:58, 3F

11/13 16:59, , 4F
但是執行的速度卻差很多, 內容都是很簡單的指令
11/13 16:59, 4F

11/13 17:00, , 5F
bat跟sh的內容都是 echo "1234" > 1 而已
11/13 17:00, 5F

11/13 17:00, , 6F
並無傳入參數與取得回傳值
11/13 17:00, 6F
※ 編輯: masan22305 (140.121.197.112), 11/13/2014 17:01:07 ※ 編輯: masan22305 (140.121.197.112), 11/13/2014 17:01:34

11/13 17:58, , 7F
echo 執行時間印一下呀~XD
11/13 17:58, 7F

11/13 21:25, , 8F
我記得呼叫sh 要指定shell 我猜會不會是這個原因
11/13 21:25, 8F
※ 編輯: masan22305 (203.121.239.109), 11/14/2014 13:16:21

11/14 15:07, , 9F
不負責任猜測,時間長的那個,執行一開始有隱含的dns查詢,
11/14 15:07, 9F

11/14 15:08, , 10F
timeout之後才開始執行原po的sh內echo指令
11/14 15:08, 10F
文章代碼(AID): #1KP5BE5m (java)