EE Servlet 3:如何在Web应用程序中设置后端服务
在Web應用程序中,提供用戶界面(UI)通常只是工作的一半。 許多應用程序都有后端服務支持的要求。 后端服務的一些示例是調度程序進程(批處理),偵聽隊列并在消息進入時作出響應,或者是簡單的事情,例如存儲供整個應用程序使用的信息。 這些全局數據通常需要在所有Servlet類(對于每個請求處理器)之間共享。 在這里,我將向您展示如何在基于Servlet的應用程序中以及在何處添加此類后端服務。
在開始之前,我想解釋一下Servlet應用程序如何存儲數據變量(畢竟所有后端服務只是Java對象)。 您可以在3個主要區域中添加和共享數據(我們有時將這些區域稱為不同的“空間”,“范圍”或“上下文”)。 您可能還會將每個區域都視為具有唯一鍵和數據值的哈希映射。
您還可以使用Singleton Pattern創建一個Application范圍的上下文區域,以將您自己的業務服務作為空間保存,但是如果需要在Web應用程序環境中對其進行初始化,則仍然需要ServletContextListener 。
還要注意,在處理請求的Servlet方法內部,您還將可以使用HttpServletRequest#getServletContext()#getAttribute(key)方法訪問上述“應用程序空間”方法。
但是,處理用戶會話可能很棘手,因此您必須花時間并仔細設計應用程序,以實現需要的適當解決方案。 我將在未來寫一篇單獨的文章,介紹如何使用Session作用域,但是現在,我可以向您展示如何使用內部自定義服務初始化Web應用程序的示例。 您可以在我的servlet3-example中找到此代碼。
package zemian.servlet3example.web;import javax.servlet.ServletContext; import zemian.servlet3example.service.Application; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; import zemian.service.logging.Logger;@WebListener public class WebAppStartup implements ServletContextListener {private static final Logger LOGGER = new Logger(WebAppStartup.class);@Overridepublic void contextInitialized(ServletContextEvent event) {LOGGER.debug("WebApp is starting up.");Application app = Application.getInstance();app.init();// Store the app instances. event.getServletContext().setAttribute(Application.SERVLET_CONTEXT_KEY, app);LOGGER.info("WebApp initialized."); }@Overridepublic void contextDestroyed(ServletContextEvent event) {Application app = Application.getInstance();app.destroy();LOGGER.info("WebApp destroyed.");} }有了這個,我可以輕松地在Application類中添加任何自定義業務后端服務,然后讓任何Servlet代碼訪問它。 注意,我使用的是Servlet 3的@WebListener批注,因此不需要配置。 您只需將WAR應用程序打包在一起,它將被EE應用程序服務器檢測到!
翻譯自: https://www.javacodegeeks.com/2015/01/ee-servlet-3-how-to-setup-backend-services-in-a-web-application.html
總結
以上是生活随笔為你收集整理的EE Servlet 3:如何在Web应用程序中设置后端服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 台式电脑显卡怎么装在电脑上电脑如何装显卡
- 下一篇: 苹果怎么设置全屏壁纸(苹果怎么设置全屏壁