日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Axis2 探索 AXIOM

發布時間:2023/12/20 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Axis2 探索 AXIOM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文:http://hi.baidu.com/zbzb/blog/item/903796237fc74b41ac34de65.html
Apache Axis2 Web 服務框架構建于新的 AXIOM XML 文檔模型之上,可以進行高效的 SOAP 消息處理。與常規的文檔模型不同,AXIOM 僅在被訪問時才會在內存中構建文檔表示。了解為什么這種按需構造的方法對于 SOAP 處理來說非常合適,以及為什么 XOP/MTOM 附件、數據綁定和性能非常適于這種情況。
為什么需要另一種文檔模型?

Apache Axis2 1.1 已經發布,它為那些長期運行 Apache Web 服務框架系列的忠實用戶提供了令人興奮的新特性。我們將在后續的文章中討論關于 Axis2 的內容,本文將深入研究 AXIs 對象模型 (AXIOM) XML 文檔模型,這是 Axis2 的核心。AXIOM 是 Axis2 中一個主要的創新,并且是 Axis2 能夠比原來的 Axis 提供更好性能的原因之一。本文將向您介紹 AXIOM 的工作原理、Axis2 的各個部分如何構建于 AXIOM 之上,以及 AXIOM 與其他的 Java? 文檔對象模型的性能比較。

文檔模型通常用于對 XML 進行處理,并且在 Java 開發中有許多不同的文檔模型可供使用,包括原始 W3C DOM 規范的各種實現、JDOM、dom4j、XOM 等等。每種模型都聲稱與其他模型相比具有某些優點,要么是在性能、靈活性方面,要么是在嚴格遵守 XML 標準的程度方面,并且每種模型都擁有忠實的支持者。那么,Axis2 為什么需要一種新的模型呢?答案在于 SOAP 消息的結構,尤其是如何在基本的 SOAP 框架中添加相應的擴展。

SOAP 簡介

SOAP 本身僅僅只是 XML 應用程序負載的簡單包裝。清單 1 提供了一個示例,其中只有那些具有 soapenv 前綴的元素才真正是 SOAP 中定義的。文檔中大部分是應用程序數據,這些數據組成了 soapenv:Body 元素的內容。

清單 1. SOAP 示例:

?

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">? <soapenv:Header/>? <soapenv:Body>??? <matchQuakes xmlns="http://seismic.sosnoski.com/types">?????

<min-date>2001-01-06T11:10:43.446Z</min-date>?????

<max-date>2001-10-24T19:49:13.812Z</max-date>?????

<min-long>-150.94307</min-long>?????

?<max-long>-22.594208</max-long>?????

<min-lat>-11.44651</min-lat>?????

<max-lat>55.089058</max-lat>??? </matchQuakes>?

</soapenv:Body></soapenv:Envelope>

?

?

?

?

盡管基本的 SOAP 包裝非常簡單,但是通過使用稱為 Header 的可選組件,它提供了不受限制的擴展能力。Header 為添加各種各樣的元數據提供了合適的位置,這些元數據與應用程序數據在一起,不會被應用程序看到(可以 在 Header 中包括應用程序數據,但是這樣做并不是很合理,您應該將應用程序數據放在消息的正文部分)。構建于 SOAP 之上的擴展(如整個 WS-* 系列),可以使用 Header 實現相應的目標,而不會對應用程序造成任何影響。這允許將擴展作為外接程序使用,可以在部署時選擇某個應用程序所需的特定擴展功能,而無需在代碼中對其進 行處理。

清單 2 顯示了與清單 1 SOAP 示例相同的應用程序數據,但其中包括 WS-Addressing 信息。盡管原始的 SOAP 消息只能用于 HTTP 傳輸(因為 HTTP 提供了雙向的連接,使得響應可以立即發送回客戶端),但清單 2 中的版本可以用于其他協議,因為 SOAP 請求消息中直接包括了響應元數據。在對清單 2 的消息進行處理的過程中,甚至可以進行存儲轉發操作,因為這些元數據同時提供了請求目標和響應目標信息。


清單 2. 使用 WS-Addressing 的 SOAP 示例

?

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"??? xmlns:wsa="http://www.w3.org/2005/08/addressing">? <soapenv:Header>??? <wsa:To>http://localhost:8800/axis2/services/SeisAxis2XBean</wsa:To>??? <wsa:ReplyTo>????? <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>??? </wsa:ReplyTo>??? <wsa:MessageID>urn:uuid:97AE2B17231A8584D811537402403691</wsa:MessageID>? </soapenv:Header>? <soapenv:Body>??? <matchQuakes xmlns="http://seismic.sosnoski.com/types">????? <min-date>2000-03-28T13:13:08.953Z</min-date>????? <max-date>2001-03-11T02:26:54.283Z</max-date>????? <min-long>-81.532234</min-long>????? <max-long>65.25895</max-long>????? <min-lat>-14.234512</min-lat>????? <max-lat>57.174187</max-lat>??? </matchQuakes>? </soapenv:Body></soapenv:Envelope>
?

?

文檔模型面臨的一個進退兩難的問題

因 為 SOAP Header 的關鍵思想是允許在消息中添加任何元數據,所以 SOAP 框架必須能夠接受某些擴展需要添加的任何內容。一般來說,處理任意的 XML 的最簡單方法是使用某種形式的文檔模型。這正是文檔模型的任務所在,即不對該 XML 的形式進行任何假設,如實地表示 XML。

但 是對于處理在不同應用程序之間進行數據交換時所使用的 XML 來說,文檔模型并不是一種非常高效的方法。通常,應用程序數據具有預定義的結構,并且大多數開發人員更傾向于以數據對象而不是原始的 XML 的形式對這些數據進行處理。數據對象和 XML 之間的轉換任務由數據綁定負責完成。與使用文檔模型相比,數據綁定為開發人員帶來了更大的方便,同時,它在性能和內存使用方面的效率也更高。

所 以,大多數應用程序希望使用數據綁定來處理 SOAP 消息的應用程序負載,但是對于處理 Header 中的元數據,使用文檔模型的方法更合適。理想的方法是在 SOAP 框架中同時使用這兩種技術,但普通的文檔模型不支持這種用法。它們希望處理整個文檔,或者至少是文檔中一個完整的子樹。它們無法處理文檔中所選的部分,但 這是處理 SOAP 的最合適的方式。

以拉方式構建 AXIOM 樹

除 了 AXIOM 之外,Axis2 還對 Axis 進行了另一個改進。原始的 Axis 使用標準的推式 (SAX) 解析器進行 XML 處理,而 Axis2 使用拉式 (StAX) 解析器。在使用推方式的情況下,由解析器來控制解析操作,需要向解析器提供要解析的文檔和處理程序。然后,在對輸入文檔進行處理的時候,它使用代碼中的處 理程序作為回調。處理程序代碼可以使用這些回調中傳遞的信息,但是不能影響解析過程(除了引發一個異常)。相反,在使用拉方式的情況下,解析器實際上是一 個高效的迭代器,可以根據需要對文檔中的不同部分進行遍歷。

推方式和拉方式分別具有各自的用途,但是對于處理包含邏輯上獨立的不同部分的 XML(如 SOAP),使用拉方式更有優勢。。使用拉式解析器,處理文檔某一部分的代碼僅解析它所需的部分,然后由解析器進行接下來的文檔處理。

AXIOM 構建于 StAX 拉式解析器接口的基礎之上。AXIOM 提供了一種可以按需擴展的虛擬文檔模型,僅構建客戶端應用程序所請求的樹結構文檔模型表示。這種虛擬的文檔模型工作于 XML 文檔的元素級。當解析器報告元素開始標記時創建元素表示,但是該元素的初始形式僅僅只是一個殼,其中保存了對解析器的引用。如果應用程序需要獲取元素內容 的細節信息,它只需要通過調用接口(如 org.apache.axiom.om.OMContainer.getChildren() 方法)的方法,就可以請求相應的信息。然后,在對這個方法調用的響應中,解析器將構建該元素的子內容。

因 為解析器按照文檔順序(與 XML 文檔文本中項目的出現順序相同)傳遞數據,所以 AXIOM 所實現的按需構造需要某種靈活的處理方法。例如,通常有多個元素處于不完整的(正在構建的過程中)狀態,但是這些元素都必須位于繼承結構的一條直線中。如 果從根元素在頂端的標準 XML 樹關系圖的角度來看,不完整的元素將始終位于該樹右側的直線中。隨著應用程序請求更多的數據,該樹逐漸向右擴充,并且首先完成頂端的元素。





回頁首

?

使用 AXIOM

就 所提供的 API 而言,所有的 XML 文檔模型都具有很多相同之處(這并不奇怪,因為它們都需要處理相同的基礎數據),但是與其他的文檔模型相比,它們又各有千秋。原始的 W3C 文檔對象模型 (DOM) 設計提供跨語言和跨平臺的兼容性,所以構建于各種接口之上,并且在其自身的版本中避免使用 Java 特定的集合。JDOM 使用了具體類而不是接口,并且在這種 API 中集成了標準的 Java 集合類,許多 Java 開發人員認為它比 DOM 更友好。dom4j 將類似 DOM 的接口和 Java 集合類組合到一起,這種非常靈活的 API 提供了很多強大的功能,但卻在一定的程度上增加了復雜性。

AXIOM 與其他文檔模型有許多相似之處。它還具有一些與其按需構建的處理過程相關的顯著特征,以及支持其用于 Web 服務的專門特性。

實際應用中的 AXIOM

從整體上看,AXIOM 的 API 可能最接近于 DOM,但是它又具有自己的特點。例如,訪問方法以使用 java.util.Iterator 實例為基礎對不同的部分(如通過 org.apache.axiom.om.OMContainer.getChildren() 以及相關方法所返回的部分)進行訪問,而沒有使用任何形式的列表。沒有將不同的部分索引為列表,導航使用 org.apache.axiom.om.OMNode.getNextOMSibling() 和 org.apache.axiom.om.OMNode.getPreviousOMSibling() 方法,以便按順序遍歷文檔樹中同一個級別的節點(在這方面,它類似于 DOM)。這種訪問和導航方法的結構與按需構建樹的工作方式非常吻合,因為這意味著 AXIOM 可以允許您移動到開始元素的第一個子項,而無需首先處理所有的 子元素。

與 DOM 和 dom4j 一樣,AXIOM 使用接口定義了用于訪問和操作樹表示的 API。AXIOM 分發版中包括這些接口的幾種不同的專門實現。其中一種實現(在 org.apache.axiom.om.impl.dom 包中)是雙重功能的,使用相同的實現類同時支持 AXIOM 和 DOM 接口。因為需要使用數據的 DOM 視圖的 Web 服務外接程序的數目較多,所以這種實現可能很有價值。有關更一般的用法,org.apache.axiom.om.impl.llom 包提供了一種基于對象鏈表的實現(包名中的“ll”表示鏈表 (linked list))。還對基本的 org.apache.axiom.om 接口和 org.apache.axiom.soap 包樹中的實現進行了擴展,后者專門用于處理 SOAP 消息。

為 了簡要地了解實際應用中的 AXIOM API,我們將對一些示例進行研究,這些示例來自于對 AXIOM 與其他的文檔模型進行性能測試對比的代碼。清單 3 中提供了第一個示例,這個示例基于為輸入文檔構建 AXIOM 表示的代碼。與使用 DOM 和 dom4j 一樣,在使用 AXIOM 進行任何工作之前,您需要獲得一個構建模型組件對象的工廠。通過使用 org.apache.axiom.org.OMFactory 接口的 org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory 實現,清單 3 中的代碼選擇了 AXIOM 接口的基本鏈表實現。這個工廠接口包括用于從各種來源直接構建文檔的方法、用于創建 XML 文檔表示的不同部分的方法。清單 3 使用了相應的方法從輸入流構建文檔。build() 方法返回的對象實際上是 org.apache.axiom.om.OMDocument 的實例,盡管在這段代碼中沒有指明。


清單 3. 將文檔解析為 AXIOM

?

?

import org.apache.axiom.om.*;import org.apache.axiom.om.impl.builder.StAXOMBuilder;import org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory;??? ...??? private XMLInputFactory m_parserFactory = XMLInputFactory.newInstance();??? private OMFactory m_factory = new OMLinkedListImplFactory();??? ...??? protected Object build(InputStream in) {??????? Object doc = null;??????? try {??????????? XMLStreamReader reader = m_parserFactory.createXMLStreamReader(in);??????????? StAXOMBuilder builder = new StAXOMBuilder(m_axiomFactory, reader);??????????? doc = builder.getDocument();??????? } catch (Exception ex) {??????????? ex.printStackTrace(System.out);??????????? System.exit(0);??????? }??????? return doc;??? }

?

?

清單 3 使用了 org.apache.axiom.om.impl.builder.StAXOMBuilder 類通過解析輸入流來構建文檔表示。這段代碼在返回之前僅創建了 StAX 解析器實例和基本文檔結構,并使得解析器定位到文檔的根元素,如果需要,稍后再構建文檔表示的其他部分。并不一定 必須使用 StAX 解析器來構建 AXIOM。事實上,org.apache.axiom.om.impl.builder.SAXOMBuilder 是基于 SAX 推式解析器的構建程序的部分實現。但如果您使用其他方法來構建它,那么就無法利用按需構造所帶來的優點。

清單 4 提供了用于遍歷文檔表示中的元素并累計摘要信息(元素的計數,屬性值文本的計數和總長度,以及文本內容的計數和總長度)的代碼。底部的 walk() 方法接受需要進行匯總的文檔以及摘要數據結構作為參數,而頂部的 walkElement() 方法則處理一個元素(遞歸地調用自己以便對子元素進行處理)。


清單 4. 導航 AXIOM

? /**???? * Walk subtree for element. This recursively walks through the document???? * nodes under an element, accumulating summary information.???? *???? * @param element element to be walked???? * @param summary document summary information???? */??? protected void walkElement(OMElement element, DocumentSummary summary) {??????? // include attribute values in summary??????? for (Iterator iter = element.getAllAttributes(); iter.hasNext();) {??????????? OMAttribute attr = (OMAttribute)iter.next();??????????? summary.addAttribute(attr.getAttributeValue().length());??????? }??????? // loop through children??????? for (Iterator iter = element.getChildren(); iter.hasNext();) {??????????? // handle child by type??????????? OMNode child = (OMNode)iter.next();??????????? int type = child.getType();??????????? if (type == OMNode.TEXT_NODE) {??????????????? summary.addContent(((OMText)child).getText().length());??????????? } else if (type == OMNode.ELEMENT_NODE) {??????????????? summary.addElements(1);??????????????? walkElement((OMElement)child, summary);??????????? }??????? }??? }??? /**???? * Walk and summarize document. This method walks through the nodes???? * of the document, accumulating summary information.???? *???? * @param doc document representation to be walked???? * @param summary output document summary information???? */??? protected void walk(Object doc, DocumentSummary summary) {??????? summary.addElements(1);??????? walkElement(((OMDocument)doc).getOMDocumentElement(), summary);??? }
?

?

最后,清單 5 給出了用于將該文檔表示轉換為輸出流的代碼。作為 OMNode 接口的一部分,AXIOM 定義了許多輸出方法,包括針對各種不同的目標(如輸出流、普通字符寫入程序、或 StAX 流寫入程序),帶和不帶格式信息,帶和不帶在寫入之后訪問文檔表示的功能(如果尚未構建,這需要構建完整的表示)。通過從元素中獲得 StAX 解析器,OMElement 接口定義了另一種訪問文檔信息的方法。這種使用解析器從文檔表示中提取 XML 的能力提供了很好的對稱性,當按需構建 AXIOM 表示時,這種方式非常合適(因為可以直接返回用于構建該表示的解析器)。


清單 5. 從 AXIOM 寫入文檔

?

?

?? /**???? * Output a document as XML text.???? *???? * @param doc document representation to be output???? * @param out XML document output stream???? */??? protected void output(Object doc, OutputStream out) {??????? try {??????????? ((OMDocument)doc).serializeAndConsume(out);??????? } catch (Exception ex) {??????????? ex.printStackTrace(System.err);??????????? System.exit(0);??????? }??? }
?

?

?

AXIOM 為修改現有的文檔部分提供了一些基本的方法(如 OMElement.setText() 可用于將元素的內容設置為一個文本值)。如果您正從頭開始寫入文檔,那么需要直接創建組件的新實例。因為 AXIOM API 是基于接口的,所以它使用各種工廠來創建不同部分的具體實現。

有關 AXIOM API 的更詳細信息,請參見參考資料部分提供的 AXIOM 教程和 JavaDoc 鏈接。

AXIOM 中的 MTOM

AXIOM 的最有趣的特性之一是,它對 SOAP 附件最新版本中所使用的 W3C XOP 和 MTOM 標準提供了內置的支持。這兩種標準協同工作,其中 XOP(XML 二進制優化打包,XML-binary Optimized Packaging)提供了一種方式,使得 XML 文檔在邏輯上可以包含任意二進制數據的大對象,而 MTOM(SOAP 消息傳輸優化機制,SOAP Message Transmission Optimization Mechanism)則將 XOP 技術應用于 SOAP 消息。XOP 和 MTOM 都是新一代 Web 服務框架的關鍵特性,因為它們最終提供了可互操作的附件支持以及解決本領域中當前問題的能力。

XOP 使用 Base64 編碼的字符數據內容。通過對原始數據中的每六位使用一個 ASCII 字符來表示,Base64 編碼可以將任意的數據值轉換為可打印的 ASCII 字符。因為二進制數據通常不能嵌入到 XML 中(XML 只能處理字符,不能處理原始的字節,甚至有一些字符編碼也不允許出現在 XML 中),Base64 編碼非常適合于在 XML 消息中嵌入二進制數據。

XOP 使用 XOP 命名空間中特殊的“Include”元素來替換 Base64 文本。Include 元素給出了標識單獨實體(在該 XML 文檔之外)的 URI,該實體是希望包括在 XML 文檔中的實際數據。通常,這個 URI 將在與 XML 文檔相同的傳輸中標識一個單獨的塊(盡管可以不這樣做,但這樣提供的潛在優勢可通過中間層或存儲文檔來交換文檔)。使用對原始數據的引用來替換 Base64 文本,可以在一定程度上減小文檔大小(對于普通字符編碼,最多可以減少百分之二十五的大小),并實現更快的處理速度,而無需承擔對 Base64 數據進行編碼和解碼所帶來的開銷。

MTOM 構建于 XOP 之上,首先定義了一個抽象的模型,表示如何將 XOP 用于 SOAP 消息,然后對該模型進行特殊化使其專門用于 MIME Multipart/Related 打包,最后將其應用于 HTTP 傳輸。通過這些處理,它提供了一種標準的方式,通過廣泛使用的 HTTP 傳輸將 XOP 應用于 SOAP 消息。

AXIOM 通過 org.apache.AXIOM.om.OMText 接口以及該接口的實現來支持 XOP/MTOM。OMText 定義了相應的方法以支持代表二進制數據的文本項目(以 javax.activation.DataHandler 的形式表示,這是 Java Web 服務框架中用于附件支持的廣泛使用的 Java Activation API 的一部分),以及一個“優化”標志用來表示是否可以使用 XOP 對該項目進行處理。org.apache.AXIOM.om.impl.llom.OMTextImpl 實現添加了一個與 MTOM 兼容的內容 ID,在創建或自動生成類的實例時,如果尚未設置,可以對其進行相應的設置。

清單 6 通過一個示例介紹了如何在 AXIOM 中使用 XOP/MTOM 來構建消息。這段代碼取自一個性能測試示例,該示例使用 Java 序列化將結果數據結構轉換為一個字節數組,然后返回這個數組作為附件。


清單 6. 創建 XOP/MTOM 消息

?

?

?? public OMElement matchQuakes(OMElement req) {??????? Query query = new Query();??????? Iterator iter = req.getChildElements();??????? try {??????????? ...??????????? // retrieve the matching quakes??????????? Response response = QuakeBase.getInstance().handleQuery(query);??????????????????????? // serialize response to byte array??????????? ByteArrayOutputStream bos = new ByteArrayOutputStream();??????????? ObjectOutputStream oos = new ObjectOutputStream(bos);??????????? oos.writeObject(response);??????????? byte[]byts = bos.toByteArray();??????????????????????? // generate response structure with reference to data??????????? ByteArrayDataSource ds = new ByteArrayDataSource(byts);??????????? OMFactory fac = OMAbstractFactory.getOMFactory();??????????? OMNamespace ns =??????????????? fac.createOMNamespace("http://seismic.sosnoski.com/types", "qk");??????????? OMElement resp = fac.createOMElement("response", ns);??????????? OMText data = fac.createOMText(new DataHandler(ds), true);??????????? resp.addChild(data);??????????? return resp;??????????????????? } catch (ParseException e) {??????????? e.printStackTrace();??????? } catch (IOException e) {??????????? e.printStackTrace();??????? }??????? return null;??? }

?

?

?

盡管清單 6 中的代碼生成了可以使用 XOP/MTOM 發送的響應,但在 Axis2 的當前版本中,在缺省情況下 XOP/MTOM 支持處于禁用狀態。要啟用它,需要在 Axis2 axis2.xml 文件或服務的 services.xml 文件中包括參數 <parameter name="enableMTOM">true</parameter>。作為即將介紹的性能比較中的一部分,我們將提供這個示例的完整代碼,但現在我們將以一個實際使用 XOP/MTOM 的示例作為結束。

清單 7 顯示了由清單 6 的服務所生成的響應消息的結構,啟用或沒有啟用 XOP/MTOM(在第一個示例中不包含 MIME Header 和實際的二進制附件,而在第二個示例中刪除了大部分的數據)。


清單 7. 帶和不帶 XOP/MTOM 的響應消息

?

<?xml version='1.0' encoding='UTF-8'?>? <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">??? <soapenv:Header />??? <soapenv:Body>????? <qk:response xmlns:qk="http://seismic.sosnoski.com/types"????????? xmlns:tns="http://ws.apache.org/axis2">??????? <xop:Include href="cid:1.urn:uuid:966CA4565647BEBA3D115028348657315@apache.org"??????????? xmlns:xop="http://www.w3.org/2004/08/xop/include" />????? </qk:response>??? </soapenv:Body>? </soapenv:Envelope>[actual binary data follows as separate MIME part with referenced content id]<?xml version='1.0' encoding='UTF-8'?>? <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">??? <soapenv:Header />??? <soapenv:Body>????? <qk:response xmlns:qk="http://seismic.sosnoski.com/types"????????? xmlns:tns="http://ws.apache.org/axis2">rO0ABXNyACdjb20uc29zb...</qk:response>??? </soapenv:Body>? </soapenv:Envelope>

?

?

數據綁定掛鉤

大 多數 Web 服務開發人員需要以 Java 對象而不是 XML 文檔(或者甚至文檔模型,如 AXIOM)的形式使用數據。上一代框架,如 Axis 和 JAX-RPC,實現了自己的數據綁定,以便在 XML 和 Java 對象之間進行轉換,但這是一種非常有限的解決方案。Web 服務框架中的數據綁定實現通常無法與專門的數據綁定框架相比,所以希望更好地控制 XML 處理過程的用戶不得不將該框架與低效的轉換代碼結合在一起。因為這些問題,Axis2 重新進行了設計,以支持使用各種數據綁定框架作為數據綁定“插件”。

這種數據綁定支持使用對 Axis2 中包含的 WSDL2Java 工具的自定義擴展。該工具基于 WSDL 服務描述為客戶端或服務器端消息接收者以存根的形式生成 Axis2 連接代碼。客戶端存根可作為代理進行服務的調用,它定義了實現服務操作的方法調用。服務器端消息接收者可作為客戶端的代理,調用實際的用戶定義的服務方 法。當在 WSDL2Java 命令行中請求數據綁定時,該工具將調用指定的數據綁定框架擴展,在存根或消息接收者中生成在 OMElement 和 Java 對象之間進行轉換的代碼。在使用存根的情況下,在方法調用中傳遞 Java 對象(或原始值),并將經過轉換的 XML 作為請求發送到服務器。然后將返回的 XML 重新轉換為 Java 對象,再將后者作為方法調用的結果返回。服務器端的消息接收者以相反的方式進行轉換。

在入站或分解端(將接收到的 XML 轉換為 Java 對象),處理過程比較簡單。需要轉換為 Java 對象的 XML 文檔負載可以通過 OMElement 的形式獲得,并且數據綁定框架只需要處理該元素中的數據。OMElement 以 StAX javax.xml.stream.XMLStreamReader 的形式提供了對元素數據的訪問,當前大多數的數據綁定框架可以直接使用 javax.xml.stream.XMLStreamReader 作為輸入。

出 站或封送端(將 Java 對象轉換為傳輸的 XML)的處理稍微復雜一些。AXIOM 的關鍵思想是,除非在絕對必要的情況下,否則將避免構建完整的 XML 數據表示。要在封送時支持這個原則,必須有一種方式使得可以僅在需要的時候調用數據綁定框架。AXIOM 通過使用 org.apache.AXIOM.om.OMDataSource 作為數據綁定轉換的包裝來處理這個問題。OMDataSource 定義了相應的方法,以便使用 AXIOM 所支持的任何方法寫出包裝的內容(到 java.io.OutputStream、java.io.Writer 或 StAX javax.xml.stream.XMLStreamWriter),以及為包裝的內容返回解析器實例的另一種方法。OMElement 實現可以使用 OMDataSource 的實例按需提供數據,而 OMFactory 接口提供了創建這種類型的元素的方法。

?

?

回頁首




性能

我 們將對性能進行簡要的分析,以此總結關于 AXIOM 的內容。在撰寫這篇文章的時候,AXIOM 1.1 已經發布,這意味著本文中描述的接口應該比較穩定。另一方面,隨著實際實現代碼的修改,性能總在發生著變化。與其他的文檔模型相比,我們并不期望 AXIOM 在性能上有什么重大的改進,但是其中的一些具體細節可能有些差異。

為了將 AXIOM 與其他的文檔模型進行比較,我們對以前的文檔模型研究(請參見參考資料部分)中的代碼進行了更新,添加了 AXIOM 和另一種新的文檔模型 (XOM),對代碼進行轉換使其使用 StAX 解析器標準,而不是較早的 SAX 標準,并切換到使用 Java 5 中引入的改進的 System.nanoTime() 計時方法。性能測試代碼首先將測試中使用到的文檔讀入到內存中,然后對文檔進行一系列的操作。首先,使用解析器構建文檔表示的某個數量的副本,并保存每個 結果文檔對象。接下來,對每個文檔對象進行遍歷,這意味著代碼將掃描整個文檔表示(包括所有的屬性、值和文本內容)。最后,將所有的文檔對象寫入到輸出 流。對每項單獨的操作,記錄其時間,并在測試結束后計算其平均值。

因為 AXIOM(尤其是用于 Axis2 中時)主要關注于處理 SOAP 消息,所以我們使用了三個不同的 SOAP 消息測試用例來檢查性能。第一個測試用例是一個 Web 服務性能測試的示例響應,該服務提供了某個時間段和經/緯度范圍內的地震信息(“quakes”文檔,18 KB)。這個文檔包含許多重復的元素和一些嵌套的情況,并大量使用了屬性。第二個測試用例是來自 Microsoft WCF 可互操作性測試的一個較大的示例,由單個重復的結構組成,并且在取值上有一些細微的變化(“persons”文檔,202 KB)。這個文檔具有帶文本內容的子元素,但是沒有使用屬性。第三個測試用例是由 30 個較小的 SOAP 消息文檔組成的集合,這些消息來自于一些較早的可互操作性測試(總大小為 19 KB)。從測試文檔中刪除了所有用來進行格式化的空格,以建立真正的生產服務(通常關閉格式化,以減少消息的大小)交換使用的 XML 文檔表示。

下 面的圖表顯示了對每個文檔進行 50 次處理所需的平均時間。測試環境為 Compaq 筆記本系統,1600 MHz ML-30 AMD Turion 處理器和 1.5 GB RAM,在 Mandriva 2006 Linux 上運行 Sun 的 1.5.0_07-b03 JVM。我們測試了 AXIOM 1.0、dom4j 1.6.1、JDOM 1.0、Xerces2 2.7.0 和 Nux 1.6 分發版中的 XOM。為 dom4j、JDOM 和 Xerces2 使用 StAX 解析器的自定義構建程序,而對 XOM 則使用 Nux StAX 解析器構建程序。所有的測試都使用了 Woodstox StAX 解析器 2.9.3。

圖 1 顯示了測試序列中前兩個步驟所需的平均時間的總和,即使用解析器構建文檔,并遍歷文檔表示以檢查其中的內容。如果單獨研究第一個步驟(這里沒有顯示時 間),AXIOM 要比其他的文檔模型好得多,至少對于前面兩個文檔來說是這樣的。然而,這僅表示 AXIOM 正如預料的那樣工作,直到需要時才真正構建完整的文檔。我們希望使用在內存中構建完整的表示所需的時間來進行公平的比較,這正是圖表中將這兩個時間加在一 起的原因。


圖 1. 構建和展開文檔的時間(單位為毫秒)

?

如圖 1 所示,從整體上看,除了 Xerces2 之外,AXIOM 比所測試的任何其他文檔模型都要慢一些。

在 處理較小的文檔組成的集合(“soaps”)時,有一些文檔模型出現了性能問題。Xerces2 在這種情況下最糟糕,但是 AXIOM 也出現了較大的開銷,這可能是該圖表中反映出來的最麻煩的問題。在許多 Web 服務中,較小的消息是很常見的,而 AXIOM 應該可以高效地處理這些消息。因為 AXIOM 設計為按需展開文檔樹,所以對于兩個較大的文檔,在時間上并不存在很大的問題,至少與其他的文檔模型非常接近。


圖 2. 寫入文檔的時間(單位為毫秒)


圖 2 顯示了使用每種模型將文檔寫入到輸出流中的平均時間。這里,Xerces2 的性能要高出一大截(但這并不足以彌補它在構建步驟中糟糕的性能,這兩張圖表的比例并不一樣),而 AXIOM 最差。同樣的,AXIOM 對于較小的文檔尤其糟糕。


圖 3. 文檔內存大小(單位為 KB)


最 后,圖 3 顯示了每種框架在表示文檔時所使用的內存大小。dom4j 又是最好的,而 AXIOM 則比其他的差了一大截。AXIOM 在內存使用方面的糟糕性能,在一定程度上是由于在所構建的文檔中引用了解析器,以便在使用文檔實例的過程中保存解析器實例。這也是 AXIOM 在處理較小文檔時尤其糟糕的原因中的一部分。然而,AXIOM 作為文檔組件所使用的對象也比其他文檔模型的對象大的多,這種差別可能正是 AXIOM 對兩個較大的測試文檔使用過多內存空間的原因(其中,固定大小的解析器開銷和其他數據結構只占總的內存使用中的一小部分)。

如果將前兩個圖表的時間累加起來,dom4j 的總體性能最好,而 Xerces2 的性能最差(AXIOM 比它稍微好一點)。在內存使用方面,dom4j 又是最好的,而 AXIOM 在這方面是毫無爭議的失敗者。是不是為 AXIOM 感到遺憾呢?

如果始終構建完整的樹表示,那才是應該 遺憾的,但請記住,AXIOM 的關鍵思想是在通常情況下并不需要完整的表示。圖 4 顯示了在 AXIOM 中初始文檔構建的時間,并與其他文檔模型構建文檔表示所需的時間進行了比較。在這個測試中,AXIOM 比其他的文檔模型快得多(對于兩個較大的文檔,甚至快得無法記錄時間)。同樣的比較也可以應用于內存方面。最后的結論是,如果只需要處理文檔模型中的某些 部分(如按文檔順序的“第一”部分),AXIOM 提供了優秀的性能。


圖 4. 初始文檔構建





回頁首




繼續學習 Axis2

本 文深入研究了 Axis2 中的 AXIOM 文檔對象模型。AXIOM 中包含了一些有趣的思想,尤其是構建完整表示的按需構建方法。當您需要完整地展開表示時,它無法與其他的 Java 文檔模型相比。尤其是對于較小的文檔,其性能比較糟糕,但是它為 Web 服務處理所提供的靈活性完全可以抵銷這些問題。

現在,您已經了解了 Axis2 如何使用 AXIOM 處理 SOAP 消息表示,包括如何與數據綁定框架相互傳遞 XML。下一篇文章將從用戶的角度來研究 Axis2 如何支持不同的數據綁定框架,包括使用三種框架的代碼示例.

總結

以上是生活随笔為你收集整理的Axis2 探索 AXIOM的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

成人免费亚洲 | 久久电影日韩 | 麻豆精品传媒视频 | 天天天天色射综合 | 成人影片在线播放 | 青草草在线视频 | 国产精品一区二区三区免费看 | 国产美女视频网站 | 国产精品久久一区二区三区, | 久久欧洲视频 | 国产视频一区二区在线 | 日韩欧美高清不卡 | www.久久91 | 最近中文字幕高清字幕免费mv | 在线播放日韩 | 在线观看国产日韩欧美 | 成人aaa毛片| 美女网站在线观看 | 国产在线精品一区二区不卡了 | 婷婷综合久久 | 中文一区二区三区在线观看 | 91亚洲国产 | 成人免费一级片 | 免费看的黄色 | 欧美精品天堂 | 中文字幕大全 | 色婷婷综合久久久久中文字幕1 | 久久www免费视频 | 成年人电影免费看 | 久久8精品| www天天干| 波多野结衣在线视频一区 | a成人v在线| 日韩三级视频在线看 | 911精品美国片911久久久 | 欧美日韩一区二区在线观看 | 91黄色在线视频 | 欧美在线观看小视频 | 国产一线二线三线在线观看 | 天天干天天拍天天操天天拍 | 日本三级在线观看中文字 | 色资源网免费观看视频 | 婷婷深爱激情 | 成人网页在线免费观看 | av网站播放 | 日韩国产精品一区 | 九七视频在线观看 | 亚洲成人二区 | 狠狠天天 | 激情视频免费观看 | 在线精品视频免费播放 | 91网在线看 | 麻豆视频在线播放 | 久要激情网 | 在线看片一区 | 最近中文字幕免费观看 | 成人永久免费 | 91香蕉视频在线 | 黄色成人av在线 | 国产精品视频你懂的 | 99免费看片 | 亚洲四虎在线 | av直接看| 99久久激情视频 | 男女免费视频观看 | av一级片在线观看 | 久久国产精品免费看 | 天海冀一区二区三区 | 手机看片午夜 | 久久综合九色综合97_ 久久久 | 久久伦理| 在线观看国产麻豆 | 五月激情视频 | 国产91欧美 | 丰满少妇高潮在线观看 | 日韩在线观看中文字幕 | 久久人人精品 | 久久久免费精品 | 日批视频国产 | 国产小视频你懂的在线 | 天天综合色天天综合 | 国产午夜在线观看视频 | 久久久免费精品 | 久久香蕉国产 | 中文字幕视频网 | 91九色国产| 国产在线精品一区二区 | 日韩激情在线 | 99久久www免费 | 97在线视 | 三级av在线播放 | 国产精品一区欧美 | 国产精品99久久99久久久二8 | 色天天久久 | 日韩狠狠操 | 国模一区二区三区四区 | 欧美日本高清视频 | 国产高清av免费在线观看 | 黄色字幕网 | 三三级黄色片之日韩 | 婷婷www | 激情五月婷婷丁香 | 狠狠的操狠狠的干 | 久久国产二区 | 欧美日韩高清 | 精品99免费视频 | 在线播放视频一区 | 国产精品成人免费精品自在线观看 | 又黄又爽又色无遮挡免费 | 久久福利剧场 | 色婷婷亚洲 | 国产理论免费 | 免费亚洲精品视频 | 欧美国产不卡 | 久久99久久久久久 | 中文字幕在线观看你懂的 | 久久人人爽爽人人爽人人片av | 福利视频在线看 | 国产九九九视频 | 色噜噜噜| 九九欧美| 国产流白浆高潮在线观看 | 7777精品伊人久久久大香线蕉 | 国产99在线免费 | 黄色官网在线观看 | 91av在线看| 99热这里精品 | 国产精品久久久久久欧美 | 婷婷日| 91精品视频导航 | 草草草影院 | 日韩理论影院 | 欧美超碰在线 | 九九热re | 黄污网| 国产成人在线综合 | 九九视频一区 | 国产黄色片一级三级 | 久久国产免费视频 | 成人免费在线视频观看 | 国产精品视频地址 | 中文字幕国产一区 | 亚洲一区二区精品3399 | 在线视频 成人 | 92中文资源在线 | 激情视频免费在线 | 国产精品一区二区久久久久 | 97成人超碰 | 国产亚洲精品精品精品 | 天天曰 | 欧美综合干 | 91精品久久久久久久99蜜桃 | 久草青青在线观看 | 天天色天天色天天色 | 国产专区日韩专区 | 夜夜爽88888免费视频4848 | 免费日韩一区二区三区 | 欧美亚洲国产精品久久高清浪潮 | 欧美一区二区视频97 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 毛片1000部免费看 | 国产免费一区二区三区最新 | 日韩有码第一页 | 国产高清中文字幕 | 精品99视频 | 久久久96| 欧美乱码精品一区 | 久久av免费| 91视频高清免费 | 日本不卡一区二区 | 免费在线观看视频a | 午夜影院日本 | 男女免费视频观看 | 成人欧美一区二区三区在线观看 | 二区三区视频 | 成人av免费网站 | 成人午夜av电影 | 久久无码精品一区二区三区 | 91精品人成在线观看 | 欧美性大胆 | 欧美二区视频 | 日韩性xxxx | 国产精品一区二区三区在线看 | 久久激情精品 | 91麻豆福利| www.天天射 | 在线视频麻豆 | 伊人网av | 狠狠色香婷婷久久亚洲精品 | 久久免费视频5 | 在线电影91 | 在线 国产 日韩 | 免费看色网站 | 欧美日韩在线观看一区 | 久久人91精品久久久久久不卡 | 亚洲国产人午在线一二区 | 婷婷色视频 | 久草国产在线 | 国产日本在线播放 | 看片一区二区三区 | 中文字幕一区av | 午夜精品久久久久久久99 | 狠狠色丁香婷婷综合最新地址 | 国产青草视频在线观看 | 一级精品视频在线观看宜春院 | 美女黄网久久 | 国产小视频网站 | 国产精品免费久久久久久 | 波多野结衣在线播放一区 | 国产精品无av码在线观看 | 日韩精品第1页 | 久久婷婷一区二区三区 | av网站大全免费 | 成人av视屏 | 久久免费影院 | 青青久视频 | 国产美女免费观看 | 国产精品久久久久久久久岛 | 一区二区三区播放 | 欧美男同网站 | 六月丁香婷 | 日韩一区视频在线 | 国产精品一区二区免费在线观看 | 中国一级特黄毛片大片久久 | 91网免费观看 | 久久毛片网站 | 中文字幕激情 | 91精品视频在线观看免费 | 九九九视频在线 | 黄色网免费 | 成人小电影在线看 | 日韩欧美在线视频一区二区三区 | 日韩视频在线不卡 | 伊人中文字幕在线 | 91亚洲精品国偷拍 | 在线成人一区二区 | 91人人揉日日捏人人看 | 日韩有码专区 | 亚洲精品视频在线免费播放 | 手机av看片 | 国产亚洲一区二区在线观看 | av中文字幕日韩 | 精品久久免费 | 中国一级片免费看 | 日韩精品最新在线观看 | 欧美大香线蕉线伊人久久 | 国产精品99久久99久久久二8 | 国产精品系列在线播放 | 免费h精品视频在线播放 | www久久国产 | 国产麻豆剧果冻传媒视频播放量 | 91精品国产亚洲 | 亚洲一区二区观看 | 亚洲 欧美 变态 国产 另类 | 亚洲精品va | 久久99欧美 | 伊人五月在线 | 国产精品毛片 | 国产精品久久久av | 久久久久久久久久免费 | 亚洲一区二区天堂 | 欧美精品亚洲精品日韩精品 | 亚洲精品美女在线观看播放 | 国产黄色片免费观看 | 婷婷射五月 | 免费看片成人 | 久久精品爱爱视频 | 亚洲精品视频在线观看免费 | 九九九九九九精品任你躁 | 国产一区二区播放 | 国产成人精品av在线观 | 麻豆传媒视频在线播放 | 香蕉视频在线看 | 亚洲精品中文字幕视频 | 丁香av| 五月婷婷激情综合网 | 77国产精品 | 国产精品久久久久久久久久久久午夜片 | 天躁狠狠躁| 狠狠色噜噜狠狠狠合久 | 日本精品视频免费观看 | 激情久久伊人 | 精品国产诱惑 | 久久高清免费观看 | 在线看的av网站 | 国产精品久久久久久久免费 | 成人久久| 中文字幕在线观看网址 | 日韩视频三区 | 中文乱码视频在线观看 | 久久精品99久久 | 狠狠色狠狠色综合日日小说 | 亚洲91视频| 最近中文国产在线视频 | 国产成人精品不卡 | 黄色在线观看免费网站 | 久久不卡av | 最新日本中文字幕 | 日本超碰在线 | 五月婷婷开心 | 在线观看欧美成人 | 超碰97网站 | 成人一区不卡 | 亚洲成人免费在线 | 成片免费观看视频大全 | 亚洲精品日韩在线观看 | 欧美色图30p | 夜夜躁日日躁狠狠躁 | 91高清完整版在线观看 | 成人国产精品电影 | 成人免费观看av | 久草免费在线视频观看 | 欧美日韩国产一区二 | 久久免费观看视频 | 日本h在线播放 | 天堂视频一区 | 涩涩伊人 | 日本h视频在线观看 | 中文有码在线 | 国产福利91精品张津瑜 | 黄色一级大片在线免费看国产一 | 视频一区二区三区视频 | 日韩一级电影在线观看 | 一区二区av | 97国产大学生情侣酒店的特点 | 91av在线视频播放 | 丝袜美腿在线播放 | 激情视频网页 | 亚洲国产日韩精品 | 日韩av影片在线观看 | 最近高清中文在线字幕在线观看 | 97超碰资源网 | 久久久精品国产一区二区三区 | 在线观看完整版 | 不卡的av在线 | 日韩99热 | 激情综合网五月婷婷 | 亚洲欧美成人网 | 亚洲第一av在线播放 | a级片韩国 | 日韩午夜在线观看 | 国产自偷自拍 | 国产精品国内免费一区二区三区 | av网站免费在线 | 久久亚洲热 | 二区三区视频 | 国产在线观看xxx | 欧美一级乱黄 | 视频一区视频二区在线观看 | 国产精品自在线拍国产 | 国产+日韩欧美 | 亚洲综合丁香 | 91av视频在线免费观看 | 日韩影视精品 | 国产免费黄色 | 国内精品久久久久影院日本资源 | 亚洲高清在线观看视频 | 天天操天天是 | 美女黄久久 | 蜜臀久久99精品久久久无需会员 | 91亚洲免费| 狠狠色丁香久久婷婷综 | 欧美日韩一区二区三区免费视频 | 麻豆免费视频观看 | 国产精品国产毛片 | 亚洲国产精彩中文乱码av | 久久精品欧美日韩精品 | 国产网红在线 | 免费a一级 | 日本福利视频在线 | 99免费观看视频 | 97福利视频 | av观看在线观看 | 成人免费视频播放 | 亚洲一级在线观看 | 91桃色国产在线播放 | 伊人五月天.com | 超碰夜夜| 99国产精品免费网站 | 国色综合 | 日韩资源在线播放 | 在线电影 你懂得 | 国产精品中文在线 | 久久伊人精品一区二区三区 | 久久精品久久精品久久精品 | 国产一区久久久 | 国产 在线观看 | 国产丝袜美腿在线 | 鲁一鲁影院 | 麻豆久久久久久久 | 久草免费在线视频 | 免费av试看| 欧美精品一区二区性色 | 亚洲,播放 | 亚洲色图激情文学 | 国产一区二区视频在线播放 | 欧美福利视频一区 | 91传媒激情理伦片 | 97国产精品 | 97视频在线观看网址 | 免费成人av电影 | 日本韩国欧美在线观看 | 97夜夜澡人人双人人人喊 | 丁香亚洲| 波多野结衣网址 | 国产精品福利久久久 | 亚洲免费国产视频 | 成人久久久久久久久久 | 亚洲精品视频第一页 | 精品国产电影 | 欧美性爽爽 | 国产高清日韩 | 亚洲人片在线观看 | 亚洲精品乱码久久久久久写真 | 国产精品免费久久久久久 | 亚洲精品午夜久久久 | 日韩av高清| 中文字幕免费国产精品 | 色www免费视频| 久久久久一区二区三区四区 | 国产亚州精品视频 | 色综合网 | 欧美极品在线播放 | 国产亚洲精品女人久久久久久 | 国产日韩精品久久 | 国产免费小视频 | av7777777| 99久久久久成人国产免费 | 国产精品永久免费 | 午夜狠狠操| www.成人sex| 婷婷色吧 | av韩国在线 | 色多多视频在线观看 | 日日夜夜精品网站 | 久久国产高清视频 | 一本一本久久a久久精品牛牛影视 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 一级a毛片高清视频 | 国内精品久久久 | 91精彩在线视频 | 国产中文字幕av | 日本黄色大片免费 | 日韩 在线 | 亚洲特级片 | 日韩欧美一区二区在线 | 国产毛片久久久 | 69亚洲乱| 国产午夜三级一二三区 | 波多野结衣在线播放一区 | 日韩av在线影视 | 亚洲欧美一区二区三区孕妇写真 | 国产视频精品免费播放 | 美女国产网站 | 亚洲日本va中文字幕 | 亚洲精品午夜一区人人爽 | 手机av资源 | 99久久精品电影 | 中文在线天堂资源 | 激情小说网站亚洲综合网 | 婷婷 综合 色| 亚洲精品在线视频 | 五月丁色| 精品国产aⅴ一区二区三区 在线直播av | 欧美日韩3p | 国产一区二区在线播放视频 | 黄色影院在线观看 | 黄色免费网 | 美女天天操 | 视频直播国产精品 | 狠狠狠狠狠狠操 | 国产一级在线观看 | 狠狠的干狠狠的操 | 久久婷亚洲五月一区天天躁 | 久久成人午夜视频 | 日韩精品在线一区 | 色婷婷六月 | 日韩欧美综合精品 | 婷婷色五| 国产一级在线视频 | 精品不卡av | 99久久99久久 | 波多野结衣在线视频一区 | www亚洲视频| 婷婷午夜激情 | 久久免费一级片 | 婷婷激情五月综合 | 亚洲精品久久久久久中文传媒 | 中文字幕在线观看免费高清电影 | 色999视频 | 综合色中文 | 亚洲精品久久在线 | 综合色综合色 | 在线观看av网 | 欧美孕妇与黑人孕交 | 在线视频 区 | 亚州国产视频 | 日日夜夜精品免费视频 | 欧美午夜剧场 | 日日夜夜精品网站 | 亚洲乱码久久久 | 特级a毛片| 免费看的黄色小视频 | 日韩午夜电影 | 亚洲精品美女在线观看播放 | 91人人插| 久久精品欧美日韩精品 | 天天综合网入口 | 欧日韩在线 | 一本之道乱码区 | 国产精品剧情在线亚洲 | 91精品久久久久久综合五月天 | 久久99亚洲热视 | 香蕉影院在线播放 | 国产中文字幕网 | 亚洲成人精品在线观看 | 免费精品国产va自在自线 | 一区二区三区高清 | 欧美精品天堂 | 久久国产精品精品国产色婷婷 | 九色91av | 亚洲理论在线观看 | 免费性网站 | 99re亚洲国产精品 | 91免费视频黄 | 伊人六月 | 日韩电影在线观看一区二区 | 久久成人黄色 | 国产小视频在线看 | 中文乱幕日产无线码1区 | 日韩精品一区二区不卡 | 欧美日韩国产综合网 | 久久久久婷 | 亚洲成人国产精品 | 亚洲欧美观看 | 亚洲精品99久久久久久 | 在线亚洲小视频 | 久久激情网站 | 久久激情综合网 | 国产区精品 | 欧美激情在线网站 | 日韩欧美有码在线 | 伊人资源视频在线 | 91激情视频在线观看 | 91av资源在线| 日韩av在线影视 | 国产亚洲精品免费 | 国产午夜精品一区 | 91高清完整版在线观看 | 91激情小视频 | 狠狠色狠狠色终合网 | 日本最新一区二区三区 | 精品国产伦一区二区三区观看方式 | av福利在线播放 | 美女久久久久久久久久久 | av在线8| 国产精品网站一区二区三区 | 色中色亚洲 | 国产中文在线播放 | 日本精品久久久久久 | 狠狠躁夜夜av | 91福利视频在线 | 日韩免费在线观看网站 | 91精品办公室少妇高潮对白 | 国内精品久久久久久久久 | 欧美日比视频 | 99久久99视频| 国内精自线一二区永久 | 日本久久久久久科技有限公司 | 狠狠干夜夜爽 | 尤物九九久久国产精品的分类 | 成人精品在线 | av片在线观看| 99视频免费观看 | 免费福利在线播放 | 99久久精品国产网站 | 黄色av电影一级片 | 久久综合在线 | 亚洲精品99久久久久中文字幕 | 男女靠逼app| 91亚洲精品国产 | 国内精品久久久久久久久 | 久久99九九99精品 | 免费三级网 | 日日爱网站 | 色99导航| 国产久草在线 | 久久久久久久久久久久久久免费看 | 免费一级片观看 | 黄色1级毛片 | 欧美日韩另类在线观看 | 婷婷视频在线观看 | 欧美国产视频在线 | 色香蕉网 | 天天色播| 97超碰资源总站 | 国产精品久久久久久久久久久久久久 | 久久人人添人人爽添人人88v | 国内99视频 | 成人一级黄色片 | 日韩精品一区在线观看 | 亚洲一区在线看 | 国产在线高清视频 | 天天天干 | 国产亚洲精品成人 | 男女激情麻豆 | 奇米7777狠狠狠琪琪视频 | 国产真实在线 | 在线观看韩国av | 在线高清| 日韩高清一区在线 | 国产精品1000 | 国产精品免费大片视频 | 99视频这里有精品 | 九九热在线视频免费观看 | 国产成人区 | 中文在线免费视频 | 一区二区三区在线免费播放 | 久久成人在线 | 中文字幕色站 | 欧美日韩一区久久 | 日韩av网站在线播放 | 成人在线视频免费看 | aaa毛片视频 | 日韩美一区二区三区 | 欧美动漫一区二区三区 | 欧美日韩亚洲精品在线 | 日韩特级毛片 | 亚洲激情六月 | 色999精品| 精品一区二区三区四区在线 | 国产精品av电影 | 成人在线免费视频观看 | 91av欧美| 国产99区| 激情网五月 | 伊人手机在线 | 三级av黄色 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 精品国产成人 | 国产精品一区二区av影院萌芽 | 免费黄色在线网址 | 在线亚洲欧美日韩 | 成人宗合网 | 深爱激情综合 | 日韩在线视频一区 | 色网站免费在线看 | 天天射天天干天天插 | 久久国产精品第一页 | 日韩在线网| 午夜色婷婷 | 字幕网在线观看 | www.黄色片网站 | 美女黄久久 | 久久免费国产视频 | av免费线看 | 一区视频在线 | 亚洲成人二区 | 午夜av免费观看 | 日韩91在线 | 美女视频一区 | 天天摸天天舔天天操 | 欧美在线观看视频 | 毛片网在线播放 | 国产黄色资源 | 中文字幕国产一区 | 亚洲午夜久久久久久久久久久 | 欧美一区二区在线刺激视频 | 中文字幕一区二区三区在线视频 | www.com.日本一级 | 国产视频精选在线 | 欧美va天堂va视频va在线 | 在线视频一区二区 | 91亚洲狠狠婷婷综合久久久 | 在线观看日韩精品 | 成片免费观看视频大全 | 四虎天堂 | 中文字幕有码在线播放 | 蜜臀久久99精品久久久久久网站 | 日韩大片在线播放 | 成人av教育| 香蕉蜜桃视频 | 久久黄色精品视频 | 色播五月激情五月 | 西西4444www大胆无视频 | 69av视频在线观看 | 99久久久久国产精品免费 | 91在线www | 天天干天天干天天射 | 热九九精品 | 国产在线观看国语版免费 | 国产黄色片免费看 | 五月香视频在线观看 | 亚洲男男gaygay无套 | 中文字幕在线观看91 | 狠狠色丁香婷婷综合久小说久 | 一二三四精品 | 欧美日韩国产一区二区在线观看 | 一级黄色片网站 | 91桃色国产在线播放 | 99久久精品久久亚洲精品 | 国产69精品久久app免费版 | www.69xx| 日韩午夜视频在线观看 | 欧美成年黄网站色视频 | 国产精品网址在线观看 | 国产精品亚洲片在线播放 | 欧美午夜寂寞影院 | 在线观看成人小视频 | 欧美成人h版电影 | 国产美女精品人人做人人爽 | 激情综合色综合久久综合 | 天天操天天舔天天爽 | 一区二区在线影院 | 六月激情 | 视频精品一区二区三区 | 久久tv| 五月婷香蕉久色在线看 | 韩日电影在线观看 | 人人干人人添 | 久久网站最新地址 | 亚洲视频久久 | 超碰在线观看av.com | 岛国av在线免费 | 91麻豆产精品久久久久久 | 国产一区二区精品 | 久久免费视频5 | 韩国三级在线一区 | 午夜久草 | 亚洲波多野结衣 | 91欧美精品 | 精品99免费 | 精品一区二区综合 | 91黄视频在线 | 亚洲毛片久久 | 一区二区三区四区久久 | 免费观看一区二区 | 中文区中文字幕免费看 | 四虎5151久久欧美毛片 | 亚洲精品国产精品国自产观看 | 高清日韩一区二区 | 欧美色精品天天在线观看视频 | 91精品在线免费观看视频 | 亚洲国产高清视频 | 国产区免费在线 | 国产麻豆视频 | 亚洲乱码国产乱码精品天美传媒 | 网站免费黄 | 久久视频国产精品免费视频在线 | 亚洲97在线 | 欧美乱码精品一区二区 | 91精品国产乱码久久 | 五月花婷婷 | 久久久精品成人 | 国产一级二级在线 | 国产麻豆传媒 | 免费视频 三区 | av片免费播放 | 丁香在线视频 | 国产手机在线视频 | 亚洲精品午夜久久久久久久久久久 | 超碰在线成人 | 亚洲精品一区中文字幕乱码 | 91自拍视频在线观看 | 2022中文字幕在线观看 | 免费欧美精品 | 国产成人在线观看免费 | 久久精彩 | 99久久精品免费看 | 超碰国产人人 | 久久免费av | www.久久免费视频 | 在线播放 亚洲 | 久久久久久免费 | 久久午夜鲁丝片 | 国产精品国产三级国产 | 日本成人免费在线观看 | 亚洲一二三区精品 | 国产一级电影免费观看 | 欧美性生活一级片 | 国产精品一区二区久久精品爱涩 | 中国一区二区视频 | 蜜桃视频在线视频 | 香蕉影视app | 国产综合福利在线 | 亚洲精品国产自产拍在线观看 | 国产最顶级的黄色片在线免费观看 | 国产最新91 | 91精选在线观看 | 国产 中文 日韩 欧美 | 日韩av午夜| 精品99免费视频 | 免费看v片网站 | 日韩精品免费在线观看视频 | 国产婷婷视频在线 | 免费网站看av片 | 国产精品自产拍在线观看蜜 | 国产福利av| 视频在线日韩 | 日韩啪啪小视频 | 日本丶国产丶欧美色综合 | 四虎影视成人精品国库在线观看 | 日韩免费福利 | 91av在线免费播放 | 特级大胆西西4444www | 黄色网免费 | 又色又爽又黄 | 人人爱夜夜操 | 香蕉久久久久 | 国产精品岛国久久久久久久久红粉 | 欧美一级片在线播放 | 99精品免费久久久久久日本 | 亚洲黄色成人网 | 亚洲男男gⅴgay双龙 | 成人av资源在线 | 久久免费视频在线 | 日韩精品免费在线观看视频 | 久久丁香 | www.com久久久 | 热久久视久久精品18亚洲精品 | 久久精品视频网址 | 久久久久免费视频 | 久久国产精品系列 | 国产免费中文字幕 | 视频二区在线 | 亚洲视频 中文字幕 | 精品专区| 日韩大片在线看 | 激情综合色图 | 狠狠干成人 | 日韩av手机在线观看 | 国产精品区免费视频 | 国产精在线 | 人人爽人人 | 91激情视频在线播放 | 亚洲精品网页 | 国产精品国产三级在线专区 | 成人久久毛片 | 日韩欧美国产成人 | 久久精品日本啪啪涩涩 | 96精品高清视频在线观看软件特色 | 久久综合操 | 国产亚洲精品久久久久久电影 | 国产精品成人a免费观看 | 国产中文字幕大全 | a'aaa级片在线观看 | 中文字幕影片免费在线观看 | 欧美激情视频一区二区三区免费 | 国产丝袜一区二区三区 | 色婷婷www| 久久九九精品久久 | 国产老太婆免费交性大片 | 欧美韩日在线 | a级片久久| 中文字幕在线观看网站 | 免费观看黄色12片一级视频 | 国产欧美精品一区二区三区四区 | 亚洲激情婷婷 | 中文字幕精品久久 | 午夜在线观看影院 | 国产精品久久久久久影院 | 亚洲一区 av | 久久久久久久久久久高潮一区二区 | 丁香六月五月婷婷 | 激情黄色一级片 | av专区在线 | 午夜视频在线观看一区 | 91久久久久久久一区二区 | 综合网中文字幕 | 久久亚洲视频 | 日韩高清黄色 | 色综合久久中文综合久久牛 | 欧美另类v | 国产在线理论片 | 伊甸园永久入口www 99热 精品在线 | 久久综合九色综合久久久精品综合 | av网站有哪些 | 久久成人国产精品 | 日韩久久精品 | 激情五月激情综合网 | 中文字幕免 | 久草青青在线观看 | 西西444www大胆高清图片 | 久草在线免费新视频 | 久久高清视频免费 | 激情深爱.com | 黄色性av | 亚洲aⅴ免费在线观看 | 国产伦理一区二区三区 | 久久婷婷亚洲 | 久久久99精品免费观看 | 国产精品免费久久久久久久久久中文 | 婷五月天激情 | 欧美成人手机版 | 热99在线| www..com黄色片 | www.色就是色 | 欧美日韩一区二区视频在线观看 | 日韩性久久 | 国产精品不卡在线 | 国产亚洲久久 | 国产一线天在线观看 | 精品国模一区二区三区 | 人人澡澡人人 | 一区二区三区四区在线 | 韩国精品福利一区二区三区 | 国产视频日韩视频欧美视频 | 免费国产在线精品 | 色综合天天狠天天透天天伊人 | 国产资源免费 | 2019中文在线观看 | 高清日韩一区二区 | 爱色婷婷| 最新国产在线 | 欧美日韩午夜 | 久久视奸 | av一级片 | 日韩免费一级a毛片在线播放一级 | 91精品啪| 国产精品免费在线视频 | 中文字幕在线有码 | 亚洲香蕉视频 | 国偷自产视频一区二区久 | 丁香视频五月 | 91精品国产综合久久福利不卡 | 欧美色图狠狠干 | a电影在线观看 | 在线午夜电影神马影院 | 亚洲精品视频二区 | 精品国产乱码久久久久久天美 | 国产欧美精品一区二区三区四区 | 干干日日| 天天射成人 | 国产精品不卡在线播放 | 国产一二三精品 | 久久国产一区二区三区 | 9999亚洲 | 国产福利精品视频 | 欧美精品免费在线 | 热久久电影 | 91天堂素人约啪 | 国产精品综合av一区二区国产馆 | 在线视频 成人 | 黄色av免费 | www.com在线观看 | 午夜影院一区 | 91免费试看 | 97超级碰碰 | 新av在线| 国产成人精品亚洲日本在线观看 | 97视频网址 | 美女视频网 | 天天操夜夜摸 | 亚洲精品777| 婷婷五月情 | 91禁在线观看 | 婷婷狠狠操 | 黄色福利网站 | 国产精品久久久久影院日本 | 国产日韩精品一区二区在线观看播放 | 中文字幕在线观看免费观看 | 日日日日 | 国产视频精选在线 | 色婷婷免费视频 | 狠狠色丁香婷综合久久 | 在线观看国产一区二区 | 黄色特级毛片 | 亚洲激情综合 | 久久久久久美女 | 精品视频久久久久久 | 中文字幕亚洲综合久久五月天色无吗'' | 久久免费在线观看 | 午夜精品一区二区三区免费视频 | 亚洲国产色一区 | 国产九色在线播放九色 | 日韩在线观看中文字幕 | 精品理论片 | 制服丝袜成人在线 | 在线观看视频亚洲 | 国产精品久久久久免费 | av天天澡天天爽天天av | 在线观看亚洲a | 日批视频 | 麻豆一区二区三区视频 | 国产涩涩在线观看 | 九九一级片 | 91精品中文字幕 | 精品国产乱码久久久久久久 | 麻豆 videos | 国产在线看 | 欧美成人一区二区 | 中文字幕在线观看国产 | 黄色www免费 | 午夜视频导航 | 成人性生交大片免费看中文网站 | 特级毛片aaa | 久久国产精品精品国产色婷婷 | 久久都是精品 |