簡體   English   中英

將Java Servlet轉換為獨立Java應用程序

[英]Convert Java Servlet to Standalone Java Application

我有一個舊的Java servlet,當前正在Tomcat容器中運行。 我想在容器外部作為獨立的Java應用程序運行它。 這樣做的主要目的是因為將在其中部署此應用程序的新角色僅涉及計算,而無需處理請求。

我應該如何修改servlet代碼? 將servlet的init()代碼提取到新類的main()方法中是否有幫助?

將所需的功能從servlet提取到其他類,以便servlet只是該功能的Web界面。

理想情況下,那些其他類不應在javax.servlet.*使用任何內容。

然后,以適當的方式使用使用其他類的main方法創建一個單獨的類。

是。

servlet實現與Tomcat servlet容器交互的接口。 如果沒有從Servlet上下文中讀取設置(路徑名,配置參數),則可以將邏輯提取到主類中。

您將需要確保您不依賴服務中的請求/響應方案。 通常,如果只有一個進程運行代碼,則與並發方案相比,編寫起來容易得多。 但是不能確定不會有這種效果(例如,現在基於請求的緩存不會單獨清空)。

還要刪除代碼中的所有servlet api依賴項。 它不起作用,不再需要。

祝好運!

您必須謹慎地做。 可能發生某些過濾器正在執行servlet中看不到的必要工作的情況

假設您的情況很簡單,而GET或POST只是觸發了代碼,則應該很容易將其轉換為經典的Java應用程序。

只需分別調用前一個init部分和來自doGet或doPost的代碼即可。

如您所提到的,我會將Servlet類轉換成一個主類。 新類的main方法將創建一個main類的實例,執行init方法來初始化if(可能使用從命令行接收的參數)。 然后在try / catch / finally塊內調用service方法,並在finally塊內調用servlet的destroy方法。 當然,您的新服務方法將在不帶參數的情況下被調用,並且將不包含對servlet api的任何引用。

您首先需要弄清楚幾件事,servlet中的功能可能會對某些url參數作出反應。 首先,要弄清楚計算部分是什么以及期望使用什么參數,一旦理解了這一點,弄清楚將要放在獨立應用程序中的內容就很簡單了。

另一種方法是將Jetty嵌入到您的主應用程序中,然后運行您的servlet,
這將使您的servlet代碼保持不變,從而減少引入錯誤的風險

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM