<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    greenteazsh
    讓我們攜手一起努力......
    posts - 26,  comments - 18,  trackbacks - 0
    轉(zhuǎn)自:http://www.ibm.com/developerworks/cn/webservices/ws-soa-axis2-1/index.html

    Deepal Jayasinghe (deepal@apache.org), 高級(jí)軟件工程師, WSO2

    2006 年 12 月 28 日

    Apache Axis2 是 Apache Axis SOAP 項(xiàng)目的后繼項(xiàng)目。此項(xiàng)目是 Web 服務(wù)核心引擎的重要改進(jìn),目標(biāo)是成為 Web 服務(wù)和面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented Architecture,SOA)的下一代平臺(tái)。作為一個(gè)干凈的可擴(kuò)展的開(kāi)放源代碼 Web 服務(wù)平臺(tái),它正逐漸受到廣泛的關(guān)注。Axis2 的體系結(jié)構(gòu)高度靈活,支持很多附加功能,如可靠消息傳遞和安全性等。

    引言

    Web 服務(wù)的歷史非常悠久,在其發(fā)展期間經(jīng)歷了多次迭代。第一代 Web 服務(wù)是受到高度控制的交互,可以視為僅是對(duì)可行性的測(cè)試。Apache SOAP 是第一代中值得注意的 SOAP 引擎之一,主要用作“概念驗(yàn)證”,而根本沒(méi)有考慮性能。第一代 SOAP 引擎的整個(gè)目的是為了讓人們認(rèn)識(shí)到 Web 服務(wù)是一個(gè)理想的選項(xiàng)。

    不久,第一代 SOAP 引擎獲得了回報(bào)。越來(lái)越多的公司開(kāi)始對(duì)此產(chǎn)生興趣,SOA 的概念逐漸成形。可以將此階段稱為第二代 Web 服務(wù),它要求更好更快的 SOAP 引擎。發(fā)現(xiàn)和定義等方面已經(jīng)得到標(biāo)準(zhǔn)化,并需要 SOAP 引擎來(lái)支持這些標(biāo)準(zhǔn)。Axis 是這些第二代 SOAP 引擎之一。

    現(xiàn)在,第二代 Web 服務(wù)的時(shí)代已經(jīng)接近尾聲。Web 服務(wù)現(xiàn)在的要求非常高,Web 服務(wù)領(lǐng)域的參與者也非常多。用于控制 Web 服務(wù)交互的不同方面的涉及內(nèi)容已得到標(biāo)準(zhǔn)化。第三代 Web 服務(wù)要求使用更快、更可靠的 SOAP 引擎——現(xiàn)有的 Axis 已不足以滿足此要求。Axis2 應(yīng)運(yùn)而生,填補(bǔ)了這一空白。

    Axis2 體系結(jié)構(gòu)

    Axis2 具有模塊化體系結(jié)構(gòu),由核心模塊和非核心模塊組成。據(jù)說(shuō),Axis2 核心是純 SOAP 處理引擎,并沒(méi)有包含 Java™ API for XML-based RPC (JAX-RPC) 概念作為其核心的一部分。同時(shí),Axis2 體系結(jié)構(gòu)的設(shè)計(jì)充分考慮了以下原則:

    • 邏輯和狀態(tài)分離,以提供無(wú)狀態(tài)處理機(jī)制,因?yàn)?Web 服務(wù)是無(wú)狀態(tài)的。
    • 所有信息位于一個(gè)信息模型中,允許對(duì)系統(tǒng)進(jìn)行掛起和恢復(fù)。
    • 能夠在不更改核心體系結(jié)構(gòu)的情況下擴(kuò)展功能,能以最小或沒(méi)有核心更改的情況下直接支持新 Web 服務(wù)規(guī)范。

    Axis2 核心體系結(jié)構(gòu)包括以下核心和非核心組件:

    • 核心組件
      • XML 對(duì)象模型 (AXIOM)
      • SOAP 處理模型:處理程序框架
      • 信息處理模型:上下文和描述
    • 其他組件
      • 部署模型
      • 傳輸
      • 客戶機(jī) API
      • 核心生成模型

    您可以在圖 1 中看到這些組件。


    圖 1. Axis2 體系結(jié)構(gòu)關(guān)系圖
    Axis2 體系結(jié)構(gòu)關(guān)系圖

    Axis2 主要特性

    Axis2 不僅是 Apache 的新 Web 服務(wù)框架。它還體現(xiàn)了從 Axis 1.x 系列獲得的經(jīng)驗(yàn)和最近兩年在 Web 服務(wù)領(lǐng)域的發(fā)展。推出 Axis2 的主要原因之一是從速度和內(nèi)存方面獲得更好的性能——不過(guò)還添加了一些新特性和功能。大部分新特性都是為了提高 Axis2 的易用性,并同時(shí)保留通過(guò)各種方式擴(kuò)展功能的空間。大部分新功能所添加到的主要領(lǐng)域如下所示:

    1. 新 XML 對(duì)象模型 (AXIOM)
    2. 基于消息傳遞的核心
    3. 經(jīng)過(guò)改進(jìn)的部署模型
    4. 可插入數(shù)據(jù)綁定
    5. 新客戶機(jī) API
    6. 信息處理模型

    新 XML 對(duì)象模型:AXIOM

    正如上面提到的,與 Axis 1.x 相比,Axis2 構(gòu)建于全新的體系結(jié)構(gòu)之上。引入 Axis2 的主要原因之一是獲得合適的 XML 處理模型。Axis 1.x 使用 DOM 作為其 XML 表示機(jī)制,但使用 DOM 的缺點(diǎn)是,需要在內(nèi)存中保存完整的對(duì)象層次結(jié)構(gòu)(與傳入消息對(duì)應(yīng))。對(duì)于小消息,這將不是問(wèn)題,但對(duì)于大型消息就是問(wèn)題了。為了克服此問(wèn)題,Axis2 引入了新的 XML 表示形式作為其基礎(chǔ)。

    Axis2 對(duì)象模型(AXIs2 Object Model,AXIOM)是 Axis2 的基礎(chǔ),任何 SOAP 消息在 Axis2 中都表示為 AXIOM。AXIOM 相對(duì)于其他 XML 表示形式的優(yōu)勢(shì)在于,它基于 pull 解析器技術(shù),而其他大多數(shù)則基于 push 解析器技術(shù)。pull 與 push 的主要不同之處在于,在 pull 技術(shù)中,調(diào)用者對(duì)解析器具有完全控制權(quán),可以要求下一個(gè)事件;而對(duì)于 push,當(dāng)要求解析器繼續(xù)處理時(shí),它將觸發(fā)事件,直到達(dá)到文檔最后為止。

    由于 AXIOM 基于 pull 解析器技術(shù),因此具有“隨需應(yīng)變構(gòu)建”功能,僅在被要求時(shí)才會(huì)構(gòu)建對(duì)象模型,而且,如果需要,可以直接從 AXIOM 訪問(wèn)基礎(chǔ) PULL 解析器并對(duì)其加以使用,而不用構(gòu)建對(duì)象模型(Object Model,OM)。

    基于消息傳遞的核心

    Axis2 核心是純 SOAP 處理引擎,并不了解數(shù)據(jù)綁定、傳輸、WSDl 等內(nèi)容。Axis2 核心的主要功能是處理傳輸消息,并將其交付給目標(biāo)應(yīng)用程序。與 Axis 1.x 一樣,Axis2 也具有用于擴(kuò)展其主要功能的處理程序概念。

    階段和階段規(guī)則
    階段是一個(gè)或多個(gè)處理程序的邏輯集合,有時(shí)候階段本身也充當(dāng)處理程序。Axis2 引入了階段概念,以方便地對(duì)核心功能進(jìn)行擴(kuò)展。在 Axis 1.x 中,如果您希望向處理程序鏈添加處理程序,需要更改全局配置文件,但對(duì)于 Axis2, 您并不需要進(jìn)行此工作,因?yàn)殡A段和階段規(guī)則可解決此問(wèn)題。階段規(guī)則用于指定如何在階段內(nèi)對(duì)給定處理程序集進(jìn)行排序。圖 2 說(shuō)明了階段如何組成流。

    Axis 1.x 并沒(méi)有異步 Web 服務(wù)調(diào)用的概念,它完全綁定到請(qǐng)求-響應(yīng)調(diào)用,但在 Axis2 中卻是另一番景象。Axis2 體系結(jié)構(gòu)能夠支持在客戶端和服務(wù)器端同時(shí)支持異步調(diào)用。同時(shí),Axis2 也支持請(qǐng)求-響應(yīng)樣式的調(diào)用,但這會(huì)以兩個(gè)異步調(diào)用的方式進(jìn)行。在 Axis2 中,進(jìn)入系統(tǒng)的消息可能有也可能沒(méi)有響應(yīng),應(yīng)該注意,Aixs2 支持 WSDL 2.0 中定義的所有八種消息交換模式(Message Exchange Patterns,MEP)。

    Axis2 具有流的概念,流是階段的集合,而階段是處理程序的集合。根據(jù)給定方法調(diào)用的 MEP,與其關(guān)聯(lián)的流的數(shù)量可能會(huì)有所變化。如果僅傳入的 MEP 對(duì)應(yīng)方法只具有一個(gè)流,則稱為 inflow;而對(duì)于傳入-傳出,則具有兩個(gè)流——inflow 和 outflow。在大多數(shù)情況下,inflow 從傳輸偵聽(tīng)器開(kāi)始,到消息接收方處結(jié)束,而 outflow 能以不同的方式開(kāi)始,大多數(shù)情況下都在傳輸發(fā)送方處結(jié)束。

    消息接收方
    如果消息在沒(méi)有出現(xiàn)問(wèn)題的情況下通過(guò)執(zhí)行鏈,則引擎會(huì)將消息轉(zhuǎn)交給消息接收方來(lái)進(jìn)行業(yè)務(wù)邏輯調(diào)用,此后,將由消息接收方調(diào)用服務(wù)并在必要的情況下發(fā)送響應(yīng)。圖 3 說(shuō)明了消息接收方如何適合執(zhí)行鏈。

    圖 2. 流中的階段
    流中的階段

    圖 3. Inflow 和消息接收方
    Inflow 和消息接收方

    新部署模型

    Axis 之前的版本沒(méi)有處理好 Web 服務(wù)部署中涉及的用戶友好因素,因此開(kāi)發(fā)了 Axis 1.x,其主要目的是為了進(jìn)行 Web 服務(wù)概念證明。因此,在 Axis 1.x 中,用戶必須手動(dòng)調(diào)用管理客戶機(jī),并更新服務(wù)器類路徑,然后重新啟動(dòng)服務(wù)器,以應(yīng)用更改。這個(gè)有點(diǎn)麻煩的部署模型對(duì)新手肯定是一道障礙。Axis2 經(jīng)過(guò)了精心的設(shè)計(jì),能夠克服此缺點(diǎn),并提供靈活、用戶友好、可方便進(jìn)行配置的部署模型。

    Axis2 部署引入了類似于 Java™ 2 Platform Enterprise Edition (J2EE) 部署機(jī)制的概念,開(kāi)發(fā)人員可以在其中將所有類文件、庫(kù)文件、資源文件和配置文件一起打包為存檔文件,并將其放置在文件系統(tǒng)中的指定位置。

    熱部署熱更新 的概念并不是新技術(shù)術(shù)語(yǔ)(對(duì)于熟悉 Web 服務(wù)平臺(tái)的人更是如此),但對(duì)于 Apache Axis 則是一個(gè)新特性。因此開(kāi)發(fā)了 Axis2 來(lái)提供進(jìn)行“熱”部署的空間。

    熱部署:在系統(tǒng)啟動(dòng)并運(yùn)行時(shí)部署服務(wù)的功能。系統(tǒng)可用性在實(shí)時(shí)系統(tǒng)或業(yè)務(wù)環(huán)境中非常重要。如果系統(tǒng)停機(jī)(即使很短的時(shí)間),損失會(huì)很大,可能會(huì)影響業(yè)務(wù)的生存期。不過(guò),會(huì)同時(shí)需要向系統(tǒng)添加新服務(wù),如果可以在不關(guān)閉服務(wù)器的情況下完成,則是一個(gè)極大的進(jìn)步。因此 Axis2 對(duì)此問(wèn)題進(jìn)行了處理,提供了 Web 服務(wù)熱部署功能,可以在不必關(guān)閉系統(tǒng)的情況下部署新 Web 服務(wù)。所需要進(jìn)行的工作就是,將所需的 Web 服務(wù)存檔放入到存儲(chǔ)庫(kù)的 services 目錄中。然后,部署模型將自動(dòng)部署服務(wù),并進(jìn)行提供。

    熱更新:在不必關(guān)閉系統(tǒng)的情況下對(duì)現(xiàn)有 Web 服務(wù)進(jìn)行更改的能力。這是一個(gè)重要的特性,是測(cè)試環(huán)境中需要的一個(gè)功能。不過(guò),在實(shí)時(shí)系統(tǒng)中使用熱更新并不明智,因?yàn)闊岣驴赡軐?dǎo)致系統(tǒng)進(jìn)入未知狀態(tài)。此外,還可能丟失該服務(wù)的現(xiàn)有服務(wù)數(shù)據(jù)。為了防止發(fā)生這種情況,Axis2 的熱更新參數(shù)缺省設(shè)置為 false

    新部署模型

    Axis 之前的版本沒(méi)有處理好 Web 服務(wù)部署中涉及的用戶友好因素,因此開(kāi)發(fā)了 Axis 1.x,其主要目的是為了進(jìn)行 Web 服務(wù)概念證明。因此,在 Axis 1.x 中,用戶必須手動(dòng)調(diào)用管理客戶機(jī),并更新服務(wù)器類路徑,然后重新啟動(dòng)服務(wù)器,以應(yīng)用更改。這個(gè)有點(diǎn)麻煩的部署模型對(duì)新手肯定是一道障礙。Axis2 經(jīng)過(guò)了精心的設(shè)計(jì),能夠克服此缺點(diǎn),并提供靈活、用戶友好、可方便進(jìn)行配置的部署模型。

    Axis2 部署引入了類似于 Java™ 2 Platform Enterprise Edition (J2EE) 部署機(jī)制的概念,開(kāi)發(fā)人員可以在其中將所有類文件、庫(kù)文件、資源文件和配置文件一起打包為存檔文件,并將其放置在文件系統(tǒng)中的指定位置。

    熱部署熱更新 的概念并不是新技術(shù)術(shù)語(yǔ)(對(duì)于熟悉 Web 服務(wù)平臺(tái)的人更是如此),但對(duì)于 Apache Axis 則是一個(gè)新特性。因此開(kāi)發(fā)了 Axis2 來(lái)提供進(jìn)行“熱”部署的空間。

    熱部署:在系統(tǒng)啟動(dòng)并運(yùn)行時(shí)部署服務(wù)的功能。系統(tǒng)可用性在實(shí)時(shí)系統(tǒng)或業(yè)務(wù)環(huán)境中非常重要。如果系統(tǒng)停機(jī)(即使很短的時(shí)間),損失會(huì)很大,可能會(huì)影響業(yè)務(wù)的生存期。不過(guò),會(huì)同時(shí)需要向系統(tǒng)添加新服務(wù),如果可以在不關(guān)閉服務(wù)器的情況下完成,則是一個(gè)極大的進(jìn)步。因此 Axis2 對(duì)此問(wèn)題進(jìn)行了處理,提供了 Web 服務(wù)熱部署功能,可以在不必關(guān)閉系統(tǒng)的情況下部署新 Web 服務(wù)。所需要進(jìn)行的工作就是,將所需的 Web 服務(wù)存檔放入到存儲(chǔ)庫(kù)的 services 目錄中。然后,部署模型將自動(dòng)部署服務(wù),并進(jìn)行提供。

    熱更新:在不必關(guān)閉系統(tǒng)的情況下對(duì)現(xiàn)有 Web 服務(wù)進(jìn)行更改的能力。這是一個(gè)重要的特性,是測(cè)試環(huán)境中需要的一個(gè)功能。不過(guò),在實(shí)時(shí)系統(tǒng)中使用熱更新并不明智,因?yàn)闊岣驴赡軐?dǎo)致系統(tǒng)進(jìn)入未知狀態(tài)。此外,還可能丟失該服務(wù)的現(xiàn)有服務(wù)數(shù)據(jù)。為了防止發(fā)生這種情況,Axis2 的熱更新參數(shù)缺省設(shè)置為 false

    模塊體系結(jié)構(gòu)

    正如上面提到的,Axis2 也具有處理程序的概念,但與 Axis 1.x 相比,指定和部署處理程序的方式有一些變化。在 Axis 1.x 中,要添加處理程序,需要首先更改全局配置文件,然后需要重新啟動(dòng)系統(tǒng),并沒(méi)有在運(yùn)行時(shí)更改處理程序鏈的動(dòng)態(tài)方法。

    為了克服這個(gè)問(wèn)題和增加新特性,Axis2 引入了 Web 服務(wù)擴(kuò)展或模塊的概念;其中模塊的主要工作是對(duì)核心功能進(jìn)行擴(kuò)展。在 Axis 1.x 中,可以通過(guò)向處理程序鏈添加處理程序來(lái)實(shí)現(xiàn)此目標(biāo)。與 Axis 1.x 處理程序鏈相比,使用模塊的優(yōu)勢(shì)在于,您可以在根本不改變?nèi)峙渲梦募那闆r下添加新模塊。同時(shí),模塊是一個(gè)自容器,其中可以包含處理程序、第三方庫(kù)、模塊相關(guān)資源和模塊配置文件。

    模塊的狀態(tài)
    模塊具有兩個(gè)狀態(tài):availableengaged。將模塊放入存儲(chǔ)庫(kù)中,此模塊就為 available 狀態(tài),而它的處理程序都不在處理程序鏈中。模塊可以隨時(shí)參與到系統(tǒng)中。參與就是將其處理程序添加到處理程序鏈(或流),因此一旦使模塊參與系統(tǒng),它就處于 engaged 狀態(tài)了。

    可以將模塊作為存檔文件部署,Axis2 為模塊采用了一個(gè)新擴(kuò)展文件名 .mar。模塊存檔文件中最重要的文件是模塊配置文件或 module.xml。除非具有 module.xml 文件,否則該模塊就是一個(gè)錯(cuò)誤模塊。模塊配置文件主要用于指定處理程序及其階段規(guī)則,因此讓模塊參與系統(tǒng)后,根據(jù)階段規(guī)則不同,處理程序?qū)⒈环胖迷诓煌牧魃稀猧nflow 或 outflow。

    這個(gè)思路非常簡(jiǎn)單。或許您需要支持 WS-Addressing 或 WS-Security。然后您必須下載對(duì)應(yīng)的模塊,并將其放置到 Axis2 存儲(chǔ)庫(kù)的 modules 目錄中。您可以在部署時(shí)通過(guò)向 axis2.xml(Axis2 全局配置文件)添加以下條目使模塊參與系統(tǒng),或在運(yùn)行時(shí)通過(guò)使用各種方法(如使用 Axis2 Web 管理控制臺(tái)或 handlerfor exsample)使模塊參與到系統(tǒng)中:

    <module ref="ModuleName">

    新客戶機(jī) API

    異步或非阻塞 Web 服務(wù)調(diào)用是目前 Web 服務(wù)中的一個(gè)主要需求。同時(shí),還存在一些以非阻塞方式調(diào)用 Web 服務(wù)的方法。第一個(gè)是客戶機(jī)編程模型,在此模型中,客戶機(jī)能在不阻塞其應(yīng)用程序的情況下以非阻塞方式調(diào)用服務(wù)。第二個(gè)方法是傳輸級(jí)非阻塞調(diào)用,其中的調(diào)用是在兩個(gè)傳輸協(xié)議之間發(fā)生的。可以是 SMTP 之類的兩個(gè)單向傳輸協(xié)議,也可以為兩個(gè) HTTP 之類的雙向傳輸協(xié)議。Axis2 客戶機(jī) API 同時(shí)支持上述兩個(gè)非阻塞調(diào)用方案。

    Axis2 引入了用于調(diào)用服務(wù)的非常方便的客戶機(jī) API,此 API 包含兩個(gè)類,分別名為 ServiceClientOperationClient。ServiceClient API 專門用于只需要發(fā)送和接收 XML 的普通用戶,而 OperationClient 旨在供希望處理 SOAP Header 和其他一些高級(jí)任務(wù)的高級(jí)用戶使用。通過(guò)使用 ServiceClient,您只能訪問(wèn) SOAP 主體或有效負(fù)載。當(dāng)然,可以添加 SOAP Header,但無(wú)法從服務(wù)客戶機(jī)檢索 SOAP Header。為了實(shí)現(xiàn)此操作,您將需要使用 OperationClient。

    ServiceClient 具有以下用于調(diào)用服務(wù)的 API:

    • sendRobust
    • fireAndForget
    • sendReceive
    • sendReceiveNonBlocking

    sendRobust:此 API 的思路是將 XML 塊發(fā)送給 Web 服務(wù),而不考慮其響應(yīng)。不過(guò),如果出現(xiàn)了錯(cuò)誤,您將也需要知道此情況。因此,此 API 用于調(diào)用并不返回值但可能引發(fā)異常的服務(wù)。

    fireAndForget:此 API 只用于發(fā)送 XML 塊,但并不考慮響應(yīng)或異常,因此這是調(diào)用僅傳入的 MEP。

    sendReceive:調(diào)用具有返回值的服務(wù)。這是最常用的 API 之一,可以用于調(diào)用傳入-傳出 MEP。

    sendReceiveNonBlocking:以非阻塞方式調(diào)用服務(wù)。服務(wù)具有返回值時(shí),可以使用此方法。為了使用此方法,您必須傳遞一個(gè)回調(diào)對(duì)象,將在調(diào)用完成后立即調(diào)用回調(diào)對(duì)象。

    正如前面提到的,OperationClient 用于高級(jí)用戶,使用 OperationClient 要求您對(duì) Axis2 有良好的了解。在 ServiceClient 中,您并不需要知道有關(guān) SOAP 信封或消息上下文的任何信息,但對(duì)于 OperationClient,您必須在調(diào)用服務(wù)前自己創(chuàng)建它。使用 OperationClient 創(chuàng)建和調(diào)用服務(wù)涉及到以下步驟:

    • 創(chuàng)建服務(wù)客戶機(jī)
    • 然后使用創(chuàng)建的服務(wù)客戶機(jī)創(chuàng)建操作客戶機(jī)
    • 創(chuàng)建 SOAP 信封
    • 創(chuàng)建消息上下文
    • 將 SOAP 信封添加到消息上下文
    • 將操作上下文添加到操作客戶機(jī)
    • 調(diào)用操作客戶機(jī)
    • 如果有響應(yīng),則從操作客戶機(jī)獲取響應(yīng)消息上下文

    總結(jié)

    Axis2 將不會(huì)對(duì) Web 服務(wù)概念進(jìn)行驗(yàn)證,而將提供更好的 SOAP 處理模型,且與 Axis 1.x 及其他現(xiàn)有 Web 服務(wù)引擎相比,其速度和內(nèi)容方面的性能都得到很大的提高。此外,它還為用戶提供了方便的 API,用于部署服務(wù)、擴(kuò)展核心功能和新客戶機(jī)編程模型。現(xiàn)在已經(jīng)進(jìn)入了 Axis2 的時(shí)代了。

    posted on 2007-07-03 13:42 綠茶 閱讀(851) 評(píng)論(1)  編輯  收藏 所屬分類: WebService

    FeedBack:
    # re: 現(xiàn)在已經(jīng)進(jìn)入了 Axis2 的時(shí)代:Axis2基礎(chǔ)
    2007-07-03 13:44 | 綠茶
    在IBM developerWorks上有很多web service的文檔,愿和大家一塊兒學(xué)習(xí),有什么資源也告訴我啊,謝謝嘍,嘿嘿http://www-128.ibm.com/developerworks/cn/webservices/   回復(fù)  更多評(píng)論
      
    在壓力下共生:)
    我們一起成長(zhǎng)
    QQ:176739920

    <2007年7月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 免费视频专区一国产盗摄| 亚洲av日韩av无码黑人| 99精品视频在线观看免费播放| 亚洲乱理伦片在线观看中字| 无码专区—VA亚洲V天堂| 亚洲AV无码一区二三区| 全免费一级午夜毛片| 国产成人yy免费视频| 亚洲视频在线观看免费| 精品人妻系列无码人妻免费视频 | 亚洲经典千人经典日产| 伊人久久综在合线亚洲2019| 国产亚洲欧洲Aⅴ综合一区 | 亚洲heyzo专区无码综合| 亚洲精品视频观看| 亚洲AV无码不卡无码| 亚洲日韩激情无码一区| 亚洲精品无码日韩国产不卡?V| 国产麻豆剧传媒精品国产免费| 国产大片91精品免费观看不卡| 亚洲精品免费在线观看| 人妻在线日韩免费视频| 中国黄色免费网站| 精品国产污污免费网站入口在线| 一级特黄录像免费播放中文版| 亚洲AV无码国产剧情| 亚洲av永久无码天堂网| 亚洲男同gay片| 亚洲国产精品美女久久久久| 亚洲中文字幕久久久一区| 77777午夜亚洲| 国产亚洲精aa在线看| 中文日韩亚洲欧美制服| 国产亚洲中文日本不卡二区| 亚洲人成人网毛片在线播放| 亚洲一区精品视频在线| 亚洲熟女乱色一区二区三区 | 国产真人无遮挡作爱免费视频| 日韩一区二区三区免费体验| 国产精品公开免费视频| 国产hs免费高清在线观看|