2012-04-11 178 views
6

我有一個帶有main()方法的Java類。它包含進行一些數字處理和分析的邏輯。它計劃每天運行一次,如果需要,可能會再次手動運行。例程使用Log4j來記錄其活動。運行它並檢查日誌需要遠程登錄到主機框。將Java控制檯程序轉換爲Web應用程序

我想將其轉換爲一個Web應用程序,在那裏我可以通過網頁觸發它並查看日誌的輸出,理想情況下它是滾動的。

什麼是最好的方法來做到這一點? Java webapp?一個簡單的基於Web的腳本運行器?或者我可能不知道的任何其他選項。

更新: 一點上要求的更多細節:

  1. 能夠從網頁啓動程序
  2. 能夠看到的Log4j
  3. 滾動輸出。如果我離開這個頁面並再次回來,它應該讓我知道最後一次運行仍在運行並顯示日誌。 我不需要有能力並行運行多個實例。
+2

你有任何java web框架的經驗嗎? – 2012-04-11 15:01:17

+0

嗯,一個簡單的Swing應用程序不會這樣做? – 2012-04-11 15:01:51

+0

@Shagaan - 是的,我選擇的java web框架是Spring MVC – Danish 2012-04-11 15:03:26

回答

5

您是否考慮設置Hudson/Jenkins服務器來運行該任務?因爲它具有您描述的功能,它是一個Java Web應用程序,它可以在不修改您的現有項目的情況下運行。

+0

作爲額外的好處,您可以使用Jenkins構建Java源代碼並進行測試。 – Bernard 2012-04-11 15:09:16

+0

,如果將來還有其他工作,則可以不加修改地添加它們。而且,如果你在團隊環境中工作,人們可能已經熟悉了詹金斯。你可以免費獲得bug修復(可能還有插件)。而... – Kevin 2012-04-11 15:11:48

+0

這看起來很酷!我一定會這樣做。是否可以在Windows Azure雲上部署? – Danish 2012-04-11 15:21:13

0

您可以嘗試從JSP/JSF

+0

對不起,我不清楚我的要求。我已更新我的問題以反映它們。我想這會工作,但我想看到一個滾動日誌。此外,進程可能會運行比HTTP超時更長的時間。 – Danish 2012-04-11 15:14:11

+0

我想網絡服務仍然是你的情況的一個選擇。不是嗎? – vkantiya 2012-04-11 15:19:11

+1

您可以使用某種彗​​星/長輪詢解決方案來滾動日誌。 – Kevin 2012-04-11 15:26:28

1

調用Web服務你可以通過AJAX提交表單並使用Ajax與Spring MVC輪詢新的日誌條目,並將其添加到表在頁面上。下面是一些AJAX調用的快速示例代碼,用於使用JQuery和Spring MVC控制器方法來處理新日誌條目。

JSP:

$.getJSON("logs.htm", { lastLogId: logId }, function(response) { 
    $('#myTable tr:last').after('<tr><td>' + response + '</td></tr>'); 
}); 

Spring MVC的控制器(返回JSON):

@Controller 
public class LogController { 

    @RequestMapping("logs.htm") 
    public @ResponseBody String getLogs(@RequestAttribute("lastLogId") Integer lastLogId, HttpSession sess) { 
     LogList logs = sess.getAttribute("logs"); // just an example using user-defined class "LogList" 
     return logs.getNextLog(lastLogId); 
    } 
} 

有幾件我沒有在這裏提到(需要存儲日誌條目會話時的log4j日誌等),但我希望至少有助於看到使用Spring MVC和AJAX實現這一點的方法。

相關問題