国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

J2EE 1.4 的新特性完全展播

2019-11-18 12:29:37
字體:
供稿:網(wǎng)友

  J2EE開發(fā)人員所需把握的技術(shù)列表是相當(dāng)冗長的。在這篇文章里,我們不會討論J2EE技術(shù),甚至也不會討論新技術(shù)。我們將要探討的是它的一些主要的新特性,然后您就會知道要在J2EE項目中使用哪些特性。
  J2EE 1.4帶來了一些新的且很有趣的特性。他們始終圍繞著三個主要的主題:Web 服務(wù)、消息傳遞和較輕易的Web開發(fā)。要滿足這些主題的需要,組成J2EE的所有主要規(guī)范都得到升級--大多數(shù)規(guī)范都很重要。最主要的(也是最多的)升級是JCA 1.5規(guī)范和jsp 2.0規(guī)范以及J2EE規(guī)范本身。此外,還有一些規(guī)范也是新的(或者對J2EE來說是新的)--例如:JAX-RPC、Web 服務(wù)以及J2EE部署和治理規(guī)范。
  
  新規(guī)范
  在J2EE 1.4中包含了一些新的規(guī)范和技術(shù)。總體來說,在對J2EE最重要的擴充內(nèi)容中,絕大部分是用于支持Web 服務(wù)或xml的。其中最重要的幾個是:
  
  Web services for J2EE (JSR-109)
  這個新的規(guī)范描述了Web 服務(wù)怎樣作為servlet或EJB無狀態(tài)會話Bean來部署。最引人注目的變化是增加了新的部署描述符,這種描述符將支持把組件作為Web 服務(wù)來部署。
  
  JAX-RPC 1.1
  JAX-RPC是用于使用SOAP進(jìn)行遠(yuǎn)程過程調(diào)用的java API。使用這些API,就可以用遠(yuǎn)程對象調(diào)用Web服務(wù)。在J2EE中使用JAX-RPC的方式和調(diào)用遠(yuǎn)程EJB非常相似。
  
  JAX-RPC規(guī)范也定義了一個Web服務(wù)(通過其WSDL)映射到Java接口的方式。JAX-RPC的實現(xiàn)還包括一些工具,用于從WSDL生成接口、存根等等,或者從接口生成WSDL。
  
  J2EE 在 Web 服務(wù)的服務(wù)器端和客戶端都使用了JAX-RPC。在J2EE中實現(xiàn)的Web服務(wù)(作為servlet 或者 EJB)將會用到JAX-RPC 接口。而假如一個組件要遠(yuǎn)程調(diào)用Web服務(wù),它就會把JAX-RPC用作遠(yuǎn)程接口。
  
  SAAJ 1.2
  SAAJ是SOAP with attachments API for Java(用于Java的帶有附件API的SOAP),它答應(yīng)那些在SOAP調(diào)用中傳遞的附件可以被Java訪問。
  
  JAXR
  JAXR是用于XML注冊表的Java API,這些API 用來訪問Web 服務(wù)注冊表,比如 UDDI、ebXML和OASIS。很不幸,J2EE不要求支持任一特定注冊表,但可用使用API且實現(xiàn)該API。
  
  XML支持
  現(xiàn)在J2EE 1.4規(guī)范要求支持SAX 2、DOM level 2、XML架構(gòu)和命名空間,還要求支持XSLT。假如您正在編寫操縱XML的J2EE應(yīng)用程序,則您現(xiàn)在必須支持最新的版本才能工作。
  
  J2EE治理和部署API(JSR-77和JSR-88)
  
  這兩種API被工具和IDE供給商所關(guān)注。它們提供了一套供給商無關(guān)的API,用來控制J2EE應(yīng)用服務(wù)器上的治理和部署活動。這使得IDE(或我們自己開發(fā)的工具)可以很輕松地同各種各樣的應(yīng)用服務(wù)器交互,而無需使用特定于供給商的大量API。
  
  規(guī)范的變化
  J2EE所包含的所有規(guī)范在J2EE 1.4中都不同程度上有了些變化。但有些變化很微小,但是J2EE的"四大件"(EJB、JCA、servlets和JSP)都增加了重要的的新特性。
  
  下面對其中最重要的變化進(jìn)行介紹:
  
  EnterPRise Java Beans 2.1
  EJB 2.1規(guī)范的改進(jìn)主要在于Web服務(wù)和消息傳遞。這將在下面具體說明。不過EJB 2.1還增加了計時器服務(wù)并增強了容器治理的實體bean的EJB-QL查詢語言。
  
  新的計時器服務(wù)答應(yīng)任何EJB(除了有狀態(tài)的會話bean)進(jìn)行注冊,以獲得來自容器的基于時間的回調(diào)功能。EJB能夠請求一個特定時間后(如10秒鐘)的單個回調(diào)信號,或者也可以安排定期(如每10分鐘)回調(diào)。這個特性在有些情況下會很有幫助,但是同時也存在著被大大誤用的潛在可能--這只能讓時間來告訴我們答案了。
  
  對EJB-QL的增強是操作符ORDER BY、SUM、COUNT、AVG、MAX、MIN和MOD。大多數(shù)的應(yīng)用服務(wù)器在他們的特定于提供商的擴展中都會提供這些操作符。而現(xiàn)在,他們最終被寫入了規(guī)范。
  
  Enterprise Java Beans 2.1--Web服務(wù)端點
  對Web服務(wù)來說,EJB 已經(jīng)加入了把無狀態(tài)會話 bean 作為Web服務(wù)來使用的能力。這種能力可以被用來實現(xiàn)新的Web服務(wù)或者通過Web服務(wù)接口把先有的EJB公布出去。
  
  把一個現(xiàn)有的無狀態(tài)會話bean轉(zhuǎn)化成一個Web服務(wù)端點是相對輕易的。從遠(yuǎn)程接口生成WSDL(使用JAX-RPC工具),然后在ejb-jar.xml文件中加入一個service-endpoint元素。這個service-endpoint元素?zé)o論看起來還是用起來都像是訪問您的EJB的另一個接口--這樣您的EJB 現(xiàn)在就擁有了全部或部分的遠(yuǎn)程的、本地的和Web服務(wù)端點的接口。接著,添加一個部署描述符webservices.xml,文件中包含service-impl-bean 和ejb-link兩個元素。這樣就把WSDL連接到了EJB上并通知應(yīng)用服務(wù)器通過Web容器把它公布出去。
  
  同樣,可以把現(xiàn)存的Web服務(wù)作為無狀態(tài)會話 bean來實現(xiàn),除非您使用JAX-RPC工具從WSDL來生成接口。
  
  Enterprise Java Beans 2.1--Web 服務(wù)客戶端
  EJB 2.1規(guī)范現(xiàn)在明確答應(yīng)任何一個EJB可以成為某個Web服務(wù)的客戶端(通過JAX-RPC接口)。調(diào)用Web服務(wù)和調(diào)用另外一個EJB的方式極其相似。使用部署描述符中的service-ref元素,Web服務(wù)會被映射,這樣您可以使用"java:comp/env/"的名字在JNNI中查詢這個服務(wù)。
  
  順便說明,這一技術(shù)不僅在EJB中可以使用,而且可以在任何J2EE組件中使用--所以,您還可以在servlets 或者JCA適配器中來調(diào)用Web服務(wù)。
  
  Enterprise Java Beans 2.1--消息傳遞
  EJB對消息傳遞的改進(jìn)是和Java Connector Architecture緊密聯(lián)系在一起的。EJB 2.1規(guī)范改進(jìn)了消息驅(qū)動的bean(MDB:message-driven bean),使之答應(yīng)任意的(非JMS)消息類型。同樣,一個消息連接工具也被添加到部署描述符中,用來指定組件發(fā)送消息的MBD或JMS目的地(這和ejb-ref答應(yīng)您把EJB"勾"在一起的方式是很相似的)。
  
  J2EE Connector Architecture 1.5
  JCA 1.5規(guī)范有了很大的變化。JCA 1.5的新變化是入站源適配器,它答應(yīng)一個外部服務(wù)(如一個EIS系統(tǒng))給應(yīng)用服務(wù)器發(fā)送消息。所以說JCA現(xiàn)在變成了雙向的。伴隨它的是一個消息連接工具,該工具把入站適配器和處理這個消息的MDB連接起來。在這里這個主要用例是和消息驅(qū)動的bean(MDB)聯(lián)系在一起的,入站適配器接收信息,處理信息生成消息,再把消息進(jìn)行排隊以供MDB進(jìn)行處理。這一特性的要害就在于MDB的變化使用非JMS的消息類型。
  JCA其他方面的改進(jìn)包括對治理所有實現(xiàn)異步入站適配器所需線程的工作治理系統(tǒng)的改進(jìn)。工作治理器答應(yīng)JCA使用線程,但不會與其線程的應(yīng)用程序治理發(fā)生沖突。
  
  Servlet 2.4
  Servlet 2.4規(guī)范中Web服務(wù)方面的變化主要在于把JAX-RPC類作為servlet部署來實現(xiàn)Web服務(wù)端點的能力。這給實現(xiàn)Web服務(wù)提供了一種輕易的方式。
  
  編寫一個基于servlet的Web服務(wù)端點和創(chuàng)建一個基于EJB的端點幾乎毫無二致。使用JAX-RPC工具從WSDL創(chuàng)建接口(或者是從接口創(chuàng)建WSDL),再在一個普通的JAVA類中實現(xiàn)這個接口。然后用servlet元素(但不使用servlet-mapping)在web.xml中聲明這個類,再創(chuàng)建一個包含service-impl-bean和servlet-link元素的webservices.xml描述符文件。
  
  Servlet 2.4也增加了listener來取得屬性(這就像現(xiàn)有的已經(jīng)可用的會話屬性監(jiān)聽器)。
  
  SingleThreadModel也不贊成使用了。假如您用過這個接口,您一定已經(jīng)知道實際上它并不能真正地解決Serverlet的實時并發(fā)問題。SingleThreadModel只能保護(hù)單進(jìn)程Serverlet的域和方法,但是,毫無疑問,它沒有保護(hù)其他資源的能力(像那些靜態(tài)方法中的引用,或者Httpsession中的對象)。因此,SingleThreadModel將不贊成使用,同時必將會被一種好的、線程安全的編程實踐所替代。
  
  Java Server Pages 2.0
  JSP規(guī)范終于成熟了。在JSP 2.0中,終于可以編寫無腳本的頁面(沒有任何"<% … %>"之類屬于Java的代碼)。
  
  第一個改進(jìn)就是增加了表達(dá)式語言(eXPression language,EL),表達(dá)式語言來源于JSP標(biāo)準(zhǔn)標(biāo)記庫(JavaServer Pages Standard Tag Library,JSTL)。EL是一種簡單、精致和易用的語法,這種語法不再需要大部分的 "scrJavascript) 和XPath的,所以,它的語法對于大多數(shù)Web開發(fā)者來說都會感覺似曾相識。
  
  在JSP 2.0中也一樣改進(jìn)了標(biāo)記庫。現(xiàn)如今,我們有更簡單的API來書寫標(biāo)記了。SimpleTag接口具擁有更簡單簡潔的生命周期--只有一個doTag 方法并且沒有實例緩沖池和重用。SimpleTag和它的JSPFragment搭檔(用來評估標(biāo)記體)可以完成現(xiàn)如今大多數(shù) "classic tags" 所做的事情,不過和以前相比,可要省力氣多了。此外,這些更為簡單的API意味著標(biāo)記可以更輕易地正確實現(xiàn),這也就意味著bug更少。
  
  另外一個對標(biāo)記的改進(jìn)在于編寫標(biāo)記文件的能力。這些標(biāo)記是作為JSP文件而不是Java類來實現(xiàn)的。編寫標(biāo)記文件是簡單的,而部署就更簡單了--您只要簡單的把這些文件以類似foo.tag的名字放入WEB-INF/tags就萬事大吉了。不需要編寫TLD描述符文件,因為所有的重要信息都在標(biāo)記文件其自身中進(jìn)行了聲明。
  
  標(biāo)記文件最大的優(yōu)勢是在一些可視Html元素需要標(biāo)記之時。例如,對持續(xù)格式化bean的輸出。以前,必須把HTML嵌入到Java代碼或采取包含頁面的方式。但是標(biāo)記文件是這種類型的功能最自然的用法。這也向那些非Java開發(fā)者打開了自制創(chuàng)建標(biāo)記的大門。 JSP 2.0 還改進(jìn)了用于支持XML的語法,加入了對JSR-45的支持,以及對其他語言的調(diào)試支持。
  
  JSTL
  JSP標(biāo)準(zhǔn)標(biāo)記庫(JavaServer Pages Standard Tag Library,JSTL)是一個非常有用的標(biāo)記的集合。這些標(biāo)記和JSP2.0在其他方面的改進(jìn)很好的融合了起來。不幸的是,JSTL并不是JSP 2.0

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 中江县| 凤台县| 赤水市| 新津县| 子洲县| 乌海市| 三门县| 德江县| 康平县| 郴州市| 阿坝| 大宁县| 罗甸县| 南雄市| 榆中县| 洪雅县| 昭通市| 始兴县| 义乌市| 扎鲁特旗| 平果县| 宁德市| 汾西县| 通江县| 安阳县| 成安县| 当涂县| 天祝| 桦川县| 南阳市| 永泰县| 内乡县| 象州县| 象州县| 托克逊县| 商河县| 横峰县| 如皋市| 杭锦旗| 宜川县| 桂东县|