成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java EE 6增強的可擴展性:Web分片和可插拔框架

原創
開發 后端
Java EE 6在Web層的改進十分值得關注。在可擴展性方面,Java EE 6通過Web分片和可插拔共享框架進行了改進,這是通過Servlet 3.0實現的。本文介紹這兩個可擴展性方面的增強特性。

【51CTO精選譯文】Java EE 6中最引人注目的改進要算Web層的展示了,正如前面提到的Java EE 6的一個重要目標(參考51CTO之前發布的Java EE 6平臺的主要目標)就是提高可擴展性,在可擴展性方面兩個關鍵改進分別是Web分片和可插拔性共享框架,這兩個新特性是通過Java EE 6中的Servlet 3.0技術提供的。Servlet 3.0,JSR 315規范是Servlet技術的***版本,它提供了諸如支持異步處理和注解等增強。

51CTO編輯推薦:Java EE 6平臺指南

Java EE 6中另一個重要的Web層技術是JSF 2.0,它是JSF技術的***版本,JSF 2.0通過Facelets簡化了頁面和組件的開發,并支持異步JavaScript和XML(通常叫做Ajax),以及注解。

Servlet 3.0中支持的Web分片

Web應用程序開發人員通常在他們的應用程序中使用第三方框架,如Apache Wicket或Spring MVC。為了使用這些框架,開發人員需要在Web應用程序中注冊要使用的框架,一般都使用Web.xml文件來保存注冊信息,這個文件還包括構成Web應用程序的Web組件部署描述符,這樣使得Web.xml變得非常龐大,難以隔離和維護各種描述符。

Web分片是Servlet 3.0中引入的一個新技術,通過模塊化部署描述符解決了這個問題,一個Web分片可以看作是Web.xml文件的一個邏輯段,可以存在多個Web分片,每個分片代表一個邏輯段,Web分片集可以組成一個完整的Web.xml文件,Web.xml文件這種邏輯分區讓Web框架自己可以在Web容器中完成注冊。你在Web應用程序中使用的每個Web框架可以在一個Web分片中定義所有它需要的工具,如Servlet和監聽器,不再需要在Web.xml文件中添加信息。

下面是一個注冊Servlet和監聽器的Web分片示例:

  1. <web-fragment> 
  2.         <servlet> 
  3.             <servlet-name>myFrameworkServlet</servlet-name> 
  4.             <servlet-class>myFramework.myFrameworkServlet</servlet-class> 
  5.         </servlet> 
  6.  
  7.         <listener> 
  8.             <listener-class>myFramework.myFrameworkListener</listener-class> 
  9.         </listener> 
  10.     </web-fragment> 
  11.  

一個<web-fragment>元素表示一個Web分片,Web分片必須在一個名叫web-fragment.xml的文件中,這個文件可以放在Web應用程序類路徑的任何地方,但Web框架通常會將它的Web分片放到META-INF目錄下。

在Web.xml中使用<metadata-complete>元素指示Web容器是否要查找Web分片和注解,如果你將<metadata-complete>設為false,或在Web.xml文件中不指定<metadata-complete>元素,那在以后的開發過程中,容器就必須掃描Web分片和注解,以便為Web應用程序構建有效的元數據。在響應中,Web容器搜索框架JAR文件中的Web分片和注解,Web容器然后使用每個Web分片中的配置信息注冊應用程序要使用的框架,但如果將<metadata-complete>設為true,部署描述符會為Web應用程序提供所有的配置信息,這種情況下Web容器不會搜索Web分片和注解。

因為Servlet 3.0技術支持Web分片,你可以將Web.xml文件模塊化,你的Web應用程序仍然有傳統的,龐大的Web.xml文件,但它是一個包含一到多個Web分片的邏輯分區Web.xml文件。

#t#因為Servlet 3.0讓你可以模塊化你的部署描述符,這些描述符的處理順序非常重要,因為它們的順序影響著調用Servlet,監聽器和過濾器的順序,不過不要擔心,因為在Servlet 3.0中你可以指定這些描述符的順序。

Servlet 3.0支持對部署描述符的絕對排序和相對排序,在Web.xml文件中使用<absolute-ordering>元素指定絕對排序,在web-fragment.xml文件中使用<ordering>元素指定相對排序。

例如,假設你的Web應用程序包括兩個Web分片:MyFragment2 和 MyFragment3,也包括一個Web.xml文件,可以象下面這樣聲明描述符使用絕對排序:

  1. <web-app> 
  2.        <name>MyApp</name> 
  3.        <absolute-ordering> 
  4.           <name>MyFragment3</name> 
  5.           <name>MyFragment2</name> 
  6.        </absolute-ordering> 
  7.        ...  
  8. </web-app> 
  9.  

通過上面的代碼,我們可以看出處理順序如下:

◆web.xml - web.xml描述符總是***個處理。

◆MyFragment3

◆MyFragment2

可插拔式共享框架

Web分片和注解不是Servlet 3.0允許你擴展web應用程序的唯一方法,你也可以插入構建在Web容器之上的框架共享副本,如基于XML Web服務的Java API(JAX-WS),JAX-RS 和 JSF,Servlet 3.0引入了一個新接口ServletContainerInitializer,它可以用來插入一個框架。

下面是一個插入框架A的例子:

  1. @HandlesTypes(AnnotationA.class)  
  2.     AServletContainerInitializer implements ServletContainerInitializer  
  3.     {  
  4.        public void onStartup(Set<Class<A>>c, ServletContext ctx) throws ServletException {  
  5.          // Framework-specific code here to initialize the runtime  
  6.          // and setup the mapping etc.  
  7.          ServletRegistration reg = ctx.addServlet("AServlet""com.foo.AServlet");  
  8.       reg.addServletMapping("/foo");  
  9.  

當容器或應用程序啟動時,容器使用JAR服務API發現ServletContainerInitializer。@HandlesTypes注解指定ServletContainerInitializer可以處理的類型,在WEB-INF/lib目錄下任何JAR中發現的類都傳遞給ServletContainerInitializer,ServletContainerInitializer就可以和ServletContextListeners使用相同的編程配置API。

原文:Introducing the Java EE 6 Platform 作者:Ed Ort

責任編輯:yangsai 來源: 51CTO.com
相關推薦

2021-09-02 09:42:11

測試軟件可擴展性開發

2020-08-18 08:04:16

DubboSPI框架

2021-12-09 05:36:16

云存儲可擴展性數據存儲云存儲

2011-03-01 11:31:38

SOA甲骨文

2023-10-11 13:46:26

緩存Web應用程序

2017-01-05 19:29:10

公共云云存儲微軟

2022-09-05 15:17:34

區塊鏈比特幣可擴展性

2024-04-18 14:19:39

UPS系統模塊化數據中心

2012-06-04 11:04:46

虛擬化

2021-12-03 14:41:00

云存儲可擴展性存儲

2024-10-10 14:01:34

2021-05-17 07:28:23

Spring可擴展性項目

2016-10-13 14:38:51

OpenStack可擴展性IT人員

2023-06-15 15:40:36

2018-09-03 14:30:35

2010-02-26 15:07:20

WCF單例服務

2023-05-17 15:53:21

2009-04-20 11:33:47

光網絡動態擴展

2022-01-20 15:45:32

區塊鏈網絡安全數據

2019-12-09 16:08:19

區塊鏈分片分布式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天射视频 | 国产激情三区 | 狠狠干av | 亚洲精品国产第一综合99久久 | 国产激情片在线观看 | 福利一区在线观看 | 日本a视频| 91av久久久| 日本午夜精品 | 国产精品一区在线观看你懂的 | 特级毛片爽www免费版 | 日韩精品在线一区 | 亚洲国产偷 | k8久久久一区二区三区 | 精品国产免费一区二区三区演员表 | 精品久久久久久久久久久久 | 欧美成年网站 | 91精品国产91久久久久游泳池 | 久久久.com | 一区二区在线视频 | 高清免费av| 丁香久久 | 色橹橹欧美在线观看视频高清 | 中文字幕一区二区三区四区 | 久久噜噜噜精品国产亚洲综合 | 国产成人免费视频网站高清观看视频 | 亚洲成人精品国产 | 伊人久久精品一区二区三区 | 国产在线观看网站 | 日韩精品一区二区三区视频播放 | 伊人网91| 日本大片在线播放 | 美女视频h| 国产中文视频 | 免费毛片在线 | 日韩在线免费视频 | 国产精品99久 | 成人高清网站 | 国内精品久久精品 | 在线观看黄视频 | 97视频在线免费 |