現在,我不想在我的web.xml中添加一個帶有註冊的Servlet,但使用註釋,並在我的項目中使用它而不重新啓動。我可以在不重新啓動我的項目的情況下添加servlet
0
A
回答
0
您可以使用註釋@WebServlet
有你的servlet class.Something如下
@WebServlet(urlPatterns = "/HelloWorldServlet", loadOnStartup = 1)
public class HelloWorldServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{
//your stuff
}
}
瞭解更多詳情請查看到This
0
的Tomcat允許重裝類:https://www.mulesoft.com/tcat/tomcat-reload 你可以用它來檢測到更改時重新加載應用程序。重新加載意味着應用程序繼續運行,但servlet上下文和所有servlet都會重新加載,包括任何新的。我認爲這將是最簡單的解決方案,但可能並不是您想要的,因爲所有其他servlet也都會重新加載。
正如你可以用一個 'front controller' 的servlet這將請求轉發給POJO控制器做一些事情(有點難看)的替代:
@WebServlet(value="/myapp")
public class FrontControllerServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
String pageClass = request.getParameter("pageClass");
String pageClassFullyQualified = "com.myapp." + pageClass;
Class<?> pageClass = Class.forName(pageClassFullyQualified);
Constructor<?> constructor = pageClass.getConstructor();
Object object = constructor.newInstance();
Page page = (Page) object;
page.handle(request, response);
}
頁界面:
public interface Page {
public void handle(HttpServletRequest request, HttpServletResponse response);
}
一個示範頁面類:
package com.myapp;
public class MyPage implements Page {
public void handle(HttpServletRequest request, HttpServletResponse response) {
// handle the request
}
}
您使用頁面類調用應用程序名稱(不含包裝):
http://localhost:8080/myapp?page=MyPage
而前端控制器應該實例化類並將請求/響應傳遞給它。如果Tomcat檢測到一個新的頁面並自動加載它,這應該允許熱部署一個頁面。
當然這只是一個概念證明。要求類名稱作爲請求參數是非常糟糕的做法,因爲您正在將內部信息公開給客戶端。
相關問題
- 1. nginx - 我可以在不重新啓動服務器的情況下添加新的虛擬主機嗎?
- 2. 我可以在不重新啓動JVM的情況下向密鑰庫添加新證書嗎?
- 3. 如何在不重新啓動我的Web應用程序的情況下重新加載servlet類?
- 4. 在不重新啓動xterm的情況下重新加載.Xresources
- 5. 在不重新啓動Xorg的情況下重新加載XINITRC
- 6. 我可以在不使用xterm的情況下啓動clisp嗎?
- 7. WebSphere:我可以在不重新啓動jvm的情況下重新加載事務設置嗎?
- 8. 我可以在不破壞和添加新項目的情況下更新ObservableCollection <T>中的值嗎?
- 9. 我可以在不重定向的情況下重寫URL嗎?
- 10. c#在不重新啓動的情況下添加/刪除動態插件
- 11. 我可以在沒有AVD的情況下運行android項目
- 12. 如何在不重新啓動REPL的情況下將依賴項添加到lein項目中?
- 13. 是否可以在不重新啓動進程的情況下重新啓動Azure Web角色上的IIS?
- 14. 我們可以在不重新啓動solr的情況下更新solc索引和模式在multiplecore內嗎?
- 15. 在不重新啓動Servlet容器的情況下重新加載/刷新Spring配置文件
- 16. 在不重新啓動活動的情況下恢復活動
- 17. 如何在不重新啓動的情況下「重新啓動」Internet Explorer服務
- 18. 是否可以在不啓動npm的情況下運行React項目?
- 19. NodeJS:在不重新啓動的情況下向Socket.IO服務器添加通道
- 20. 我的XCode工作區在重新啓動時不記得添加的項目
- 21. 是否可以在不重新啓動的情況下應用vim配置?
- 22. 可以在不重新啓動R的情況下卸載Rcpp包DLL嗎?
- 23. 我可以在不重新啓動Jetty服務器的情況下更新應用程序配置文件嗎?
- 24. 在不重新啓動lighty的情況下更新.po文件
- 25. 如何在不重新加載的情況下動態加載我的頁面?
- 26. 我可以在不啓用DTC的情況下使用NserviceBus重試嗎?
- 27. 如何在不重新啓動tomcat6服務器的情況下重新加載servlet
- 28. 在這種情況下,我可以重新使用指針嗎?
- 29. 是否可以在不重新啓動Django的情況下重新加載視圖?
- 30. 在某些情況下,我可以永遠防止重新啓動我的節點腳本嗎?
請說明你的問題 –
我認爲這是一個很好的問題,很清楚。 Op想要將一個新的servlet添加到正在運行的Web應用程序中。 –
不清楚的是「重啓」的含義。沒有重新啓動服務器,或沒有重新啓動(/重新部署)的Web應用程序? – Gimby