青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 181, 文章 - 2, 評論 - 85, 引用 - 0
數據加載中……

IBM WebSphere 開發者技術期刊: 使用服務組件體系結構構建 SOA 解決方案——第 2 部分-----組裝 SCA 組件

檢驗 IBM WebSphere Integration Developer 組裝的SCA 組件的上下文中的引用和連線。

摘自 IBM WebSphere 開發者技術期刊

引言

在這一系列文章的第 1 部分,我們引入了服務組件體系結構(Service Component Architecture,SCA)作為編程模型來構建和組裝集成解決方案,包括簡要介紹什么是 SCA,以及一些相關術語的定義。我們還提供了一個通過 IBM WebSphere Integration Developer 使用 Java? 構建 SCA 組件的示例,測試了該 SCA 組件,并使用 SCA 客戶端編程模型構建了一個調用該 SCA 組件的示例 JSP 文件。在第 2 部分中,我們將繼續描述引用和連線,并介紹如何使用它們來組裝 SCA 組件。







概述

第 1 部分介紹的示例中,我們使用了一個簡單的 JSP 客戶端來調用 SCA 組件。該示例只用于演示;當構建您自己的實際自定義應用程序時,您可能會使用標準 J2EE? 組件模型來實現應用程序邏輯。J2EE Web 應用程序將繼續調用 Enterprise JavaBean 來訪問特定于應用程序的功能。實際上,SCA 編程模型是用于業務集成、應用程序組合和解決方案組裝的,而不是用于 J2EE 應用程序開發的。SCA 客戶端(它可以是 J2EE)通常在進程管理器外,例如它可以使用 BPEL 流程來編排工作流。與 BPEL 流程聯合部署的 Web 應用程序也可以使用 SCA 編程模型來調用特定于應用程序的功能。圖 1 顯示了 SCA 生態系統的一個示例。


圖 1. SCA 生態系統
圖 1. SCA 生態系統

SCA 位于集成層。SCA 組件可以通過導入來調用 SCA 運行時外的應用程序。非 SCA 客戶端可以通過導出調用 SCA 組件。在集成層內,可以通過定義引用和使用連線來組合 SCA 組件,這將在本文中重點介紹。有了連線和引用,您就可以在開發時定義運行時調用的特性;例如,使調用同步或異步,標記調用的轉換邊界,等等。這些特性是在部署時讀取的,它們可以啟用所需的運行時行為。圖 2 闡釋了這些高級概念。


圖 2. 引用和連線的高級視圖
圖 2. 引用和連線的高級視圖

再次說明,我們關注的是集成層,而不是應用層。另外,我們介紹的是較高級的集成,例如工作流編排或與 EIS 系統的高級集成。然而,出于演示目的,我們使用簡單的 Java 示例來顯示如何將組件連接到集成層中,強調的是連線和引用的功能而不是組件本身的實現。(在后續文章中,我們將介紹如何將 SCA 組件實現為 BPEL 流程和狀態機,以及如何應用連線技術。)因此我們使用一個按比例縮減的模型來闡釋引用和連線,如圖 3 所示;然而,我們要記住圖 2 中合適的 SCA 使用遠景。


圖 3. 簡化的引用和連線模型
圖 3. 簡化的引用和連線模型






引用

正如第 1 部分所討論的,SCA 組件被打包成一個 SCA 模塊。一個模塊中的 SCA 組件通過對調用的 SCA 組件定義引用來彼此交互,并且將這些引用連線到相同模塊中的其他 SCA 組件。圖 4 闡釋了這一概念。


圖 4. 引用和連線概念
圖 4. 引用和連線概念

對調用組件的引用是用 SCDL 表示的,如下所示:


清單 1
												
																		
<scdl:component xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:java="http://www.ibm.com/xmlns/prod/websphere/scdl/java/6.0.0"
xmlns:ns1="http://CreditApproval/CreditRequest"
xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0"
xmlns:wsdl="http://www.ibm.com/xmlns/prod/websphere/scdl/wsdl/6.0.0"
displayName="CreditApproval" name="CreditApproval">
  <interfaces>
    <interface xsi:type="wsdl:WSDLPortType" portType="ns1:CreditRequest">
      <method name="calulateCreditScore"/>
    </interface>
  </interfaces>
  <references>
    <reference name="CreditHistoryPartner">
      <interface xsi:type="java:JavaInterface" 
      interface="approval.credit.credit.history.CreditHistory">
        <method name="getCreditLimit"/>
      </interface>
      <wire target="CreditHistory"/>
    </reference>
    <reference name="CreditAgencyPartner">
      <interface xsi:type="java:JavaInterface" 
      interface="approval.credit.credit.agency.CreditAgency">
        <method name="getCreditScore"/>
      </interface>
      <wire target="CreditAgency"/>
    </reference>
  </references>
  <implementation xsi:type="java:JavaImplementation" 
  class="sca.component.java.impl.CreditApprovalImpl"/>
</scdl:component>
												
										

引用的好處之一是能夠定義調用期間的服務質量。當在 Assembly Editor 中連線組件時,可以指定服務質量 (QoS) 限定符。這些限定符定義了調用期間在 SCA 運行時管理組件的必要條件。







限定符

使用 SCA,您無需編程或更改服務實現代碼就可以對組件應用 QoS 限定符(例如事務、安全性和可靠的異步調用)。在連線組件時,您可以指定限定符來為組件以及訪問服務的客戶端提供擴展的服務質量。在 IBM WebSphere Process Server 中,您可以在三個地方定義 SCA 限定符:

  • 引用
  • 接口
  • 實現

在運行時,這些規范確定了客戶端如何與目標組件進行交互。運行時環境可以提供所需的任何額外處理,這取決于所指定的限定符。

用于引用的限定符

引用限定符可以指定異步調用的可靠性,以及是否應該聯合目標組件的方法,使之成為任何客戶端事務的一部分。

引用限定符包括:

  • Asynchronous reliability - 允許發生異步調用。這些限定符還允許您指定消息的可靠性、請求和響應超時。同時也能配置 Service Integration Bus——它在 IBM WebSphere Application Server 運行時中提供消息傳遞平臺,因此對 WebSphere Process Server 可用。(有關 Service Integration Bus 的信息,請參閱參考資料。)

  • Suspend transaction - 對于同步調用,當使用同步編輯模型進行調用時,客戶端全局事務上下文始終會被傳播到目標組件。(此限定符只影響客戶端全局事務,因為本地事務從不傳播到目標組件。)對于客戶端不想讓目標組件與客戶端事務聯合的用例,需要使用掛起事務限定符設置來進一步限定引用:

    • True 會在通過服務引用調用組件之前掛起當前全局事務。
    • False(缺省值)指示運行時在通過服務引用調用組件之前不要掛起全局事務。
  • Asynchronous invocation - 確定是否應該進行異步調用(作為任何客戶端事務的一部分)。值:

    • Call(缺省值)指示運行時在進行服務調用的同時將消息提交給異步調用的目的地。
    • Commit 指示運行時將消息提交給異步調用的目的地的工作交給當前工作范圍單元處理。
  • Suspend activity session - 活動會話能夠對可能不支持分布式事務的資源進行更高級的協調。集成解決方案中更可能出現此類情況;客戶端不想讓目標組件與客戶端的活動會話相聯合,所以需要使用掛起活動會話限定符設置來進一步地限定引用:

    • True 會在通過服務引用調用組件之前掛起當前活動會話(如果存在)。
    • False(缺省值)指示運行時在通過服務引用調用組件之前不要掛起任何處于活動狀態的活動會話。

您可以指定引用限定符,以便它們應用于服務組件的所有引用或者只應用于獨立引用。如果需要,您還可以為每個引用指定這些限定符,在這種情況下它們將重寫任何頂級限定符設置。在 Properties 視圖中以灰色表示繼承的限定符,以黑色表示已賦值的限定符。繼承的限定符不能更改,除非您選擇定義它們的所在元素。

用于接口的限定符

接口限定符說明了被目標服務支持的QoS,因此代表了一個與該服務客戶端的約定。

接口限定符包括:

  • Join activity session - 確定目標服務是否愿意加入傳播的活動會話范圍。值:

    • True 指示運行時不要在接口邊界掛起活動會話(如果存在)。
    • False(缺省值)指示運行時在接口邊界掛起活動會話(如果存在)。
  • Join transaction - 確定目標服務是否愿意加入傳播的全局事務。值:

    • True 指示運行時不要在接口邊界掛起全局事務(如果存在)。
    • False(缺省值)指示運行時在接口邊界掛起全局事務(如果存在)。
  • Security permission - 使您能夠在 SCA 組件上定義 J2EE 角色。只有與聲明的角色相關聯的客戶端才能調用該組件。

所有接口限定符都可以應用于組件的三個級別:

  • 用于其所有接口
  • 用于單個接口
  • 用于某個接口的單個操作。

操作的限定符覆蓋接口的限定符;接口的限定符覆蓋組件的所有接口的限定符。

用于實現的限定符

實現限定符提供確定服務權限和/或表示其對事務環境的需求的功能。

接口限定符包括:

  • Activity session - 確定組件的處理是否在一個活動會話中執行,除了全局事務上下文所提供的,它還提供一個備選的工作范圍單元。值:

    • True:組件將在活動會話的上下文中執行。如果活動會話是在調用時出現的,則會添加該組件。
    • False(缺省值):組件將在現有的全局事務(如果存在)或本地事務的上下文中執行。實現限定符為 activitySession=false 的組件必須使用接口限定符 joinActivitySession=false。
    • Any:如果存在活動會話,則組件會加入當前活動會話。如果不存在活動會話,則組件會在現有的工作范圍單元或本地事務的上下文中執行。
  • Transaction - 確定組件處理執行的邏輯工作單元。對于邏輯工作單元,事務期間所做的全部數據修改都是作為一個單元一起提交或作為一個單元回滾的:

    • Global:組件將在全局事務的上下文中執行。如果在調用時存在一個全局事務,則該組件會被添加到該全局事務范圍。如果不存在全局事務,則會建立新的事務范圍。
    • Local(缺省值):組件將在本地事務的上下文中執行。
    • Any:如果存在一個全局事務,則組件將加入當前全局事務范圍。如果不存在全局事務,則組件將在本地事務的上下文中執行。
  • Security identity - 使您能夠指定組件擔當的身份,與部署描述符上的 J2EE Run-As 約束類似。

限定符是在 SCDL 文件中定義的:接口限定符是在接口部分定義的,實現限定符是在實現部分定義的,引用限定符是在引用部分定義的。(有關詳細信息,請查閱 WebSphere Process Server Information Center。)







連線組件

在對引用有了新的理解之后,我們現在可以將一些組件通過連線連接起來。我們將使用的示例十分簡單,但在這個過程中我們也會檢查各種可用的服務質量。我們將繼續介紹在第 1 部分使用的信貸審批示例。

在我們的示例中:

  • Credit Approval 組件必須調用 Credit History 組件以及 Credit Agency 組件。
  • Credit Approval 組件將作為這兩個服務的一個 Facade。
  • Credit Approval 組件需要連線到其他組件。

這一練習所需要的文件可以從本文所附帶的下載文件中獲得。

設置工作區

  1. 啟動 WebSphere Integration Developer 并創建一個新的工作區(圖 5)。


    圖 5. 在 WebSphere Integration Developer 中創建工作區
    圖 5. 在 WebSphere Integration Developer 中創建工作區
  2. 關閉歡迎屏幕(圖 6)。


    圖 6. WebSphere Integration Developer 歡迎屏幕
    圖 6. WebSphere Integration Developer 歡迎屏幕
  3. 要從下載的文件導入項目交換文件,請右鍵單擊 Business Integration 視圖并選擇 Import(圖 7)。


    圖 7. 導入下載文件
    圖 7. 導入下載文件
  4. 選擇 Project Interchange,然后單擊 Next(圖 8)。


    圖 8. 導入項目
    圖 8. 導入項目
  5. 假設您已經將下載的文件解壓縮到 C: 驅動器,則選擇 CreditApprovalPart2.zip 文件,然后單擊 Select All Finish(圖 9)。


    圖 9. 導入項目
    圖 9. 導入項目

檢查組件

在我們的示例中,我們將使用自底向上的開發風格:我們有一個現有的 SCA 組件集并準備對它們進行集成。從 Business Integration 視圖中,您可以檢查該 SCA 模塊:

  1. 展開 CreditApproval 模塊(圖 10)。


    圖 10. 展開的 Credit Approval 模塊
    圖 10. 展開的 Credit Approval 模塊
  2. 請注意,它有三個接口和三個 Java 實現。打開 CreditApprovalImpl Java 實現并轉到 calculateCreditScore() 方法。請注意,calculateCreditScore 同時與 CreditAgency 組件和 CreditHistory 組件進行交互來完成其服務。您很容易想到將 CreditApproval Service 實現為 BPEL 流程或其他組件類型,但在本例中,我們用一個簡單的 Java 組件來作為 Facade。


    清單 2
    																
    																								
    public DataObject calulateCreditScore(DataObject creditApp) {
    		
    	ServiceManager serviceManager = new ServiceManager();
    
    	BOFactory bof = (BOFactory)serviceManager.locateService("com/ibm/websphere/bo/BOFactory");
    
    	DataObject creditRating = bof.create("http://CreditApproval", "CreditRating");
    
    	creditRating.setString("customerId", creditApp.getString("customerId"));
    		
    	CreditAgency creditAgency = (CreditAgency) 
    	serviceManager.locateService("CreditAgencyPartner");
    
    	Integer creditScore = creditAgency.getCreditScore(creditApp);
    
    	CreditHistory creditHistory = (CreditHistory) 
    	serviceManager.locateService("CreditHistoryPartner");
    		
    	Double creditLimit = creditHistory.getCreditLimit(creditApp);
    
    		
    	creditRating.setInt("creditScore", creditScore.intValue());
    	creditRating.setDouble("creditLimit", creditLimit.doubleValue());
    
    	return creditRating;
    	}
    																
    														

  3. 要打開 Assembly Editor,請雙擊 CreditApproval 集合(圖 11)。當 Assembly Editor 打開時,會顯示三個組件(圖 12)。


    圖 11. 打開 Assembly Editor
    圖 11. 打開 Assembly Editor

    圖 12. Assembly Editor 中的組件
    圖 12. Assembly Editor 中的組件

連線組件

CreditApproval 組件通過使用簡單的 SCA 客戶端 API 來與 CreditAgency 和 CreditHistory 進行交互。然而,要讓運行時正確地調用這些服務,需要將組件“連線”起來,使用 WebSphere Integration Developer 來進行這一操作非常簡單。在我們的示例中,我們將接受缺省值。

  1. 選擇 CreditAproval 組件并將其連線到 CreditAgency 組件(圖 13)。


    圖 13. 連線組件
    圖 13. 連線組件
  2. 將顯示一個對話框(圖 14),表明將在 CreditApproval 組件上創建一個引用。選擇 OK


    圖 14. 匹配引用對話框
    圖 14. 匹配引用對話框
  3. 由于 CreditApproval 組件是一個 Java 組件,所以我們需要用 WebSphere Integration Developer 生成 Java 接口以便能夠調用該組件。因此,在下一個對話框(圖 15)中選擇 Yes。如果 CreditApproval 已經是一個完整的 BPEL 流程,則選擇 No。(請記住,在大多數情況下將使用 WSDL 作為集成層中的接口選擇。如果 User Interface 是與集成解決方案聯合部署的,則可以使用 Java 接口。)


    圖 15. 生成 Java 接口對話框
    圖 15. 生成 Java 接口對話框
  4. 重復步驟 9 到 11,將 CreditApproval 組件連線到 CreditHistory 組件。結果應該與圖 16 類似。


    圖 16. 組件連線完成
    圖 16. 組件連線完成

單元測試組件

因為我們使用 Java 作為我們的實現,所以可以在 Java SE 環境中對組件進行單元測試。正如在第 1 部分所做的,我們很容易在 WebSphere Integration Developer 中調出單元測試工具:

  1. 右鍵單擊 CreditApproval 組件并選擇 Test Component(圖 17)。


    圖 17. 測試組件
    圖 17. 測試組件
  2. 將顯示單元測試工具。該單元測試功能的一個很好的優點是它允許獨立測試組件,并且可以檢測引用和創建模擬器。在我們的例子中,我們自己測試集成,所以需要刪除模擬器。

  3. 切換到 Configurations 選項卡。

  4. 展開 Module CreditApproval 模塊,突出顯示 CreditAgency CreditHistory,并將它們從 Emulators 列表中刪除(圖 18)?,F在,測試 CreditApproval 組件將導致調用 CreditHistory 和 CreditAgency 組件,而不會模擬交互。


    圖 18. 刪除模擬器
    圖 18. 刪除模擬器
  5. 切換回 Events 選項卡并突出顯示 Invoke 項(圖 19)。


    圖 19. Events 選項卡
    圖 19. Events 選項卡
  6. 填充輸入,如圖 20 所示。


    圖 20. 數據參數
    圖 20. 數據參數
  7. 單擊 Continue。

  8. 選擇 Eclipse 1.4 JVM 選項(圖 21)。


    圖 21. 選擇部署位置
    圖 21. 選擇部署位置
  9. 檢查每個步驟的流程。您可以實際看到流經組件的數據(圖 22)。


    圖 22. 事件流
    圖 22. 事件流
  10. 最終結果應該與圖 23 類似。


    圖 23. 測試結果
    圖 23. 測試結果
  11. 關閉測試編輯器,不進行保存。

檢查服務質量

引用和連線是集成解決方案的關鍵,因為它們抽象出調用的方式和場合。當在 WebSphere Process Server 中運行時,您可以定義想為調用設定的服務質量。例如,您可以使調用異步化、可以更改事務上下文,或者使異步調用更加可靠。這里我們將通過檢查引用屬性來查看各種 QoS 選項。

  1. 選擇 CreditApproval 組件上的 CreditAgency 引用,如圖 24 所示。


    圖 24. 組件引用
    圖 24. 組件引用
  2. 轉到 Properties 視圖。您將注意到該引用被選中。


    圖 25. 選中的引用
    圖 25. 選中的引用
  3. Details 選項卡上(圖 26),將顯示被調用的接口和多樣性,以及作為目標的連線。您可以更改調用的多樣性;對于異步調用,這樣可以以一種發布/訂閱方式調用幾個組件。


    圖 26. 引用詳細信息
    圖 26. 引用詳細信息
  4. 切換至 Qualifiers 選項卡(圖 27)以設置特定服務質量。


    圖 27. Qualifiers 選項卡
    圖 27. Qualifiers 選項卡
  5. 單擊 Add 按鈕來查看幾個可用的服務質量(圖 28)。


    圖 28. 服務質量限定符
    圖 28. 服務質量限定符
  6. 作為自我練習,您可以試驗這些限定符,請記住,這些質量需要在 WebSphere Process Server 運行時中測試。這些限定符包括事務質量和異步質量;要測試事務工作,您需要與資源交互的組件。特定服務質量是在接口中定義的。這使得該組件能夠控制其他組件調用它的方式。

  7. 突出顯示 Assembly Editor 中的 CreditApproval 接口(圖 29),或者導航至 Properties 編輯器。


    圖 29. Assembly Editor 中選定的 CreditApproval
    圖 29. Assembly Editor 中選定的 CreditApproval
  8. 檢查服務質量限定符(圖 30)和實現限定符。請注意,這些限定符是在被調用的服務(而不是調用它的服務)上定義的。


    圖 30. 檢查限定符
    圖 30. 檢查限定符

在 WebSphere Process Server 測試環境中測試

要測試服務質量,您通常需要在 WebSphere Process Server 中運行,或者在 WebSphere Integration Developer 中為測試提供的 WebSphere Process Server 運行時運行。

  1. Servers 視圖中,右鍵單擊該服務器并選擇 Start(圖 31)。


    圖 31. 啟動測試環境中的服務器
    圖 31. 啟動測試環境中的服務器

    圖 32. 服務器已啟動
    圖 32. 服務器已啟動
  2. 當服務器啟動后,您可以按照管理控制臺中的指示(圖 32),以一種類似于添加 J2EE 應用程序的方式將該 SCA 模塊添加到服務器中,因為 SCA 模塊被包裝成 EAR 文件(如第 1 部分所提到的)。再次右鍵單擊服務器并選擇 Add and remove rojects...(圖 33)。


    圖 33. 添加和刪除項目
    圖 33. 添加和刪除項目
  3. 選擇 CreditApprovalApp 并將它添加到已配置的項目一側(圖 34)。


    圖 34. 將項目添加到服務器
    圖 34. 將項目添加到服務器
  4. 檢查管理控制臺,確保 SCA 模塊已啟動(圖 35)。


    圖 35. 表明 SCA 模塊已啟動的控制臺消息
    圖 35. 表明 SCA 模塊已啟動的控制臺消息
  5. 要使用同一 WebSphere Integration Developer 單元測試功能來測試該組件,請按照前面所執行的操作,再次右鍵單擊該組件,然后選擇 Test Component(圖 36)。


    圖 36. 測試 SCA 組件
    圖 36. 測試 SCA 組件
  6. 再次說明,請刪除模擬器,以使測試能夠流經 SCA 組件(圖 37)。


    圖 37. 刪除模擬器
    圖 37. 刪除模擬器
  7. 鍵入輸入參數,如圖 38 所示。


    圖 38. 數據參數
    圖 38. 數據參數
  8. 選擇 WebSphere Process Server V6.0 作為部署位置(圖 39)。


    圖 39. 選擇部署位置
    圖 39. 選擇部署位置
  9. 檢查測試結果。

作為自我練習,請更改組件以進行數據庫更新,然后試驗事務屬性。您也可以在管理控制臺中使調用異步化以及檢查基礎 Service Integration Bus 配置。







結束語

本文介紹了使用 WebSphere Integration Developer 組裝服務組件體系結構組件的上下文中的引用和連線。這一系列的下一篇文章將討論導入和導出,以便您能夠集成 SCA 模塊。該系列以后的文章還將介紹更復雜的組件以及與非 SCA 組件相集成。







致謝

作者真誠感謝 Eric Herness、Keys Botzum 和 Paul Ilechko 對本文的審閱。








下載

名字 大小 下載方法
CreditApprovalPart2.zip 23 KB ?FTP|HTTP

posted on 2006-04-17 04:18 wsdfsdf 閱讀(298) 評論(0)  編輯 收藏 引用 所屬分類: 技術文章

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国内精品久久久久久| 久久视频这里只有精品| 久久精品99国产精品日本| 欧美亚洲视频在线观看| 性欧美video另类hd性玩具| 亚洲欧洲99久久| 久久精品国产91精品亚洲| 欧美99在线视频观看| 亚洲人成网站精品片在线观看| 欧美刺激午夜性久久久久久久| 黄色日韩网站视频| 欧美大片免费| 国产亚洲激情| 国产在线不卡| 亚洲国产免费看| 一区二区欧美视频| 午夜久久黄色| 欧美成人免费网站| 99视频一区| 久久精品国产亚洲aⅴ| 欧美大片91| 国产亚洲电影| 在线综合+亚洲+欧美中文字幕| 欧美一区国产一区| 最新亚洲视频| 欧美伊人久久大香线蕉综合69| 欧美成人一二三| 国产日韩欧美综合在线| 亚洲美女av黄| 欧美成人精精品一区二区频| 中文无字幕一区二区三区| 美女精品网站| 国产一区二区福利| 亚洲欧洲av一区二区| 最新亚洲激情| 蜜臀av在线播放一区二区三区| 国产麻豆91精品| 亚洲午夜激情在线| 亚洲电影第三页| 久久精品三级| 国产一区二区三区自拍 | 欧美成人免费在线观看| 国产伊人精品| 久久不见久久见免费视频1| 亚洲麻豆一区| 欧美成年视频| 亚洲国产高清一区| 狂野欧美激情性xxxx| 欧美一级理论片| 国产欧美一区二区色老头| 亚洲欧美卡通另类91av| 99视频超级精品| 欧美日韩亚洲一区二区三区在线| 亚洲精品影视| 亚洲老司机av| 欧美体内she精视频| 亚洲无线观看| 亚洲午夜小视频| 国产精品综合| 久久久久高清| 久久免费视频一区| 亚洲人体影院| 一区二区三区四区国产精品| 国产精品久久久久久久久婷婷| 午夜精品国产精品大乳美女| 亚洲欧美区自拍先锋| 日韩视频一区二区| 欧美日韩卡一卡二| 亚洲综合欧美| 性欧美8khd高清极品| 国外成人在线| 欧美韩日亚洲| 欧美日韩中文字幕在线视频| 亚洲欧美日韩精品一区二区| 午夜宅男欧美| 亚洲欧洲日本国产| 中文一区字幕| 狠狠久久婷婷| 亚洲另类一区二区| 国产日产精品一区二区三区四区的观看方式| 久久精品网址| 欧美激情第3页| 亚洲欧美一区二区视频| 久久精品在线| 亚洲一区日韩在线| 久久网站热最新地址| 亚洲无限av看| 久久夜色精品国产| 午夜精品在线观看| 欧美电影在线观看| 欧美一区二区久久久| 美女精品国产| 欧美在线观看日本一区| 欧美成人免费小视频| 欧美中文字幕在线播放| 欧美精品首页| 麻豆freexxxx性91精品| 欧美亚洲成人网| 亚洲电影av在线| 国产一区二区电影在线观看 | 欧美激情1区2区3区| 欧美在线视频免费播放| 欧美精品久久一区二区| 久久精品一区| 国产精品ⅴa在线观看h| 欧美激情久久久久| 狠狠色狠色综合曰曰| 亚洲伊人伊色伊影伊综合网| 亚洲欧洲一区二区三区在线观看 | 亚洲调教视频在线观看| 亚洲黄页一区| 久久精品国产第一区二区三区最新章节| 一级日韩一区在线观看| 裸体素人女欧美日韩| 久久久无码精品亚洲日韩按摩| 欧美午夜片在线观看| 亚洲人成毛片在线播放女女| 揄拍成人国产精品视频| 亚洲欧美中文日韩在线| 亚洲一区二区三区视频| 欧美日韩一区二区三区免费看| 亚洲春色另类小说| 在线看片成人| 久久亚洲一区二区三区四区| 久久久久久网址| 久久人体大胆视频| 久久久国产91| 国产亚洲aⅴaaaaaa毛片| 亚洲欧美激情四射在线日| 亚洲综合色在线| 欧美性猛交xxxx免费看久久久| 日韩视频在线你懂得| 在线亚洲电影| 欧美体内she精视频| 宅男噜噜噜66一区二区| 亚洲影院色在线观看免费| 国产精品国码视频| 亚洲在线观看| 久久精品国内一区二区三区| 国产日韩成人精品| 欧美在线国产| 免费影视亚洲| 日韩视频一区二区三区在线播放免费观看 | 亚洲国产精彩中文乱码av在线播放| 狠狠色狠狠色综合日日tαg| 久久久国产精品亚洲一区| 蜜桃av噜噜一区二区三区| 亚洲激情在线视频| 欧美日韩国产大片| 亚洲午夜精品久久| 欧美一区二区三区四区在线观看| 国产婷婷色一区二区三区四区| 欧美一区二区三区精品电影| 噜噜噜躁狠狠躁狠狠精品视频 | 黄色日韩在线| 美女视频黄 久久| 亚洲欧洲精品一区二区三区不卡| 在线一区二区三区做爰视频网站| 国产精品日韩久久久久| 久久麻豆一区二区| 亚洲乱码国产乱码精品精可以看| 性感少妇一区| 亚洲激情成人网| 国产精品观看| 久久这里有精品15一区二区三区| 亚洲伦理在线免费看| 久久久精品欧美丰满| 亚洲卡通欧美制服中文| 国产日韩高清一区二区三区在线| 久久久久久久一区| 一本久道综合久久精品| 蜜桃av综合| 午夜在线a亚洲v天堂网2018| 亚洲国产精品精华液网站| 国产精品扒开腿做爽爽爽软件| 久久久精品视频成人| 亚洲视频精选在线| 亚洲第一区在线| 久久er99精品| 亚洲午夜精品| 亚洲日韩第九十九页| 国产一区二区三区无遮挡| 欧美日韩一区视频| 美女视频一区免费观看| 欧美一区二区三区在线免费观看| 欧美国产视频日韩| 亚洲国产精品专区久久| 一区二区三区精品国产| 国产亚洲欧美激情| 一区二区三区高清| 麻豆精品视频在线| 午夜久久福利| 一区二区三区久久| 亚洲青色在线| 在线日本高清免费不卡| 国产久一道中文一区| 欧美午夜激情在线| 欧美精品123区| 欧美v日韩v国产v| 久久久免费精品视频|